Metatrader 4上的DLL不';t使用传入的滴答声进行更新
我已经编写了一个简单的DLL,作为Metatrader 4自定义指示器的一部分,因此称为:Metatrader 4上的DLL不';t使用传入的滴答声进行更新,dll,metatrader4,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; } GetSM
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])的日期时间信息保存在一个变量中,如果它发生了变化,这意味着一个新条已经出现
datetime lastBarDateTime;
int start(){
if(Time[0]==lastBarDateTime)
return(0);
lastBarDateTime = Time[0];
// codes to run on a new bar ...
}
对于DLL部分,我实际上无法理解您在代码中使用DLL的位置。对于仅在新条上使用的东西,我的技术是将最后一条(条[0])的日期时间信息保留在变量中,如果它已更改,则意味着新条已出现
datetime lastBarDateTime;
int start(){
if(Time[0]==lastBarDateTime)
return(0);
lastBarDateTime = Time[0];
// codes to run on a new bar ...
}
对于DLL部分,我实际上无法理解您在代码中使用DLL的位置