Metatrader 4上的DLL不会更新传入的滴答声

时间:2011-06-27 18:21:09

标签: dll metatrader4

我已经编写了一个简单的DLL作为Metatrader 4的自定义指标的一部分,因此被称为:

int start( ) {
    double Rates[][6];
    int MaximumRecords = ArrayCopyRates( Rates, Symbol(), 0 ); 

    for( int zz = MaximumRecords; zz >= 0; zz-- ) { 
        OutPut[zz] = EMPTY; 
    }

    GetSMAArray( Rates, MaximumRecords, Periods, OutPut );

    return(0); 
}

这样可以正常运行,因为它在图表上按预期绘制,但遗憾的是它不会更新新的传入滴答 - 它只是在初始调用时绘制。我可以添加哪些代码来使用传入的滴答进行DLL更新?我的几乎所有搜索都提出了使用

的变化
ExtCountedBars = IndicatorCounted();

强制while循环计算,但这些都适用于.mq4文件本身包含的计算。我想强制DLL重新计算。其次,我希望这次重新计算只在完成一个酒吧时才会发生,而不是在所有和每个蜱的到来时发生。

1 个答案:

答案 0 :(得分:1)

对于on new bar only事,我的技巧是将最后一个bar(Bars [0])日期时间信息保存在一个变量中,如果它已经改变,这意味着一个新的栏已经来了。

datetime lastBarDateTime;

int start(){
    if(Time[0]==lastBarDateTime)
    return(0);

    lastBarDateTime = Time[0];

    // codes to run on a new bar ...
}

对于DLL部分,我实际上无法理解你在该代码中使用DLL的位置。