我已经编写了一个简单的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重新计算。其次,我希望这次重新计算只在完成一个酒吧时才会发生,而不是在所有和每个蜱的到来时发生。
答案 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的位置。