isNewBar()不生成正确时间随机值onTickMQL5检查这个程序我正在尝试获取随机值#includeCisNewBarcurrent_chart;//CisNewBar类的实例://检测新的报价烛台voidOnTick(){if(current_chart.isNewBar()>0){intstoch=iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);双K[],D[];ArraySetAsSeries(K,true);ArraySetAsSeries(D,true);CopyBuffer(stoch,0,0,5,K);CopyBuffer(stoch,1,0,5,D);数组打印(K);}}这是我得到的输出:95.9731590.4000074.1176549.2537325.0000073.6842181.8791990.4000074.1176549.2537374.3421180.7017581.8791990.4000074.1176590.2439078.9473780.7017581.8791990.4000078.3333384.0579778.9473780.7017581.87919上述值表示数组元素为0th,1st,2nd,3rd&4th初始打印中的第0个将成为下一个打印的第0个,并将放置在下一个打印的第1个位置。但我看到价值观发生了变化,而且变化非常大。以前iStochastic()给出了正确的值。但它使用OnTick(),所以每次更改都会给出输出。我只需要在酒吧完成后或几分钟后的价值。所以,我尝试了社区的解决方案。这是链接:newbar的解决方案但是输出是正的并且正在改变我的交易方程式,这就是我丢失它的原因。请帮我。我怎样才能让它为我工作?以下是需要的文件:LibCisNewBar.mqh以上是C#学习教程:isNewBar()doesnotgeneratethecorrecttimerandomvalueonTickMQL5分享的所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家关注—//+----------------------------------------------------------------+//|库CisNewBar.mqh|//|版权所有2010,利泽|//|Lizar-2010@mail.ru|//|修订2010.09.27|//+--------------------------------------------------------------+//+----------------------------------------------------------------+//|类CisNewBar。|//|约会:使用检测新柱的方法类|//+------------------------------------------------------------------+classCisNewBar{protected:datetimem_lastbar_time;//打开最后一根柱线的时间stringm_symbol;//交易品种名称ENUM_TIMEFRAMESm_period;//图表周期uintm_retcode;//检测新柱的结果代码intm_new_bars;//新柱数stringm_comment;//执行注释public:voidCisNewBar();//CisNewBar构造函数//---方法访问受保护的数据:uintGetRetCode()const{return(m_retcode);}//检测新柱datetime的结果代码GetLastBarTime()const{return(m_lastbar_time);}//打开新柱的时间intGetNewBars()const{return(m_new_bars);}//新柱数stringGetComment()const{return(m_comment);}//执行注释stringGetSymbol()const{return(m_symbol);}//交易品种名称ENUM_TIMEFRAMESGetPeriod()const{return(m_period);}//图表周期//---初始化受保护数据的方法:voidSetLastBarTime(datetimelastbar_time){m_lastbar_time=lastbar_time;}voidSetSymbol(stringsymbol){m_symbol=(symbol==NULL||symbol=="")?Symbol():symbol;}voidSetPeriod(ENUM_TIMEFRAMESperiod){m_period=(period==PERIOD_CURRENT)?Period():period;}//---检测新柱的方法:boolisNewBar(datetimenew_Time);//第一种类型的新柱形请求intisNewBar();//第二种类型的新柱请求};//+--------------------------------------------------------------+//|CisNewBar构造函数。|//|输入:没有。|//|输出:没有。|//|备注:没有。|//+--------------------------------------------------------------+voidCisNewBar::CisNewBar(){m_retcode=0;//检测新柱的结果代码m_lastbar_time=0;//最后一根柱线的开盘时间m_new_bars=0;//新柱数m_comment="";//执行注释m_symbol=Symbol();//交易品种名称,默认-当前图表的交易品种m_period=Period();//图表周期,默认-当前图表周期}//+--------------------------------------------------------------+//|新柱的第一种请求|//|输入:newbar_time-开盘时间(假设)新柱|//|输出:true-如果有新柱出现|//|false-如果没有新柱或出现错误|//|备注:没有。|//+--------------------------------------------------------------+boolCisNewBar::isNewBar(datetimenewbar_time){//---受保护变量的初始化m_new_bars=0;//新柱数m_retcode=0;//检测新柱的结果代码:0-无错误m_comment=__FUNCTION__+"Successfulcheckfornewbar";//---//---为了确定,检查:(假设)新柱的时间m_newbar_time是否小于最后一个柱的时间m_lastbar_time?if(m_lastbar_time>newbar_time){//如果新柱早于上一个柱,打印错误消息m_comment=__FUNCTION__+"同步错误:前一个柱的时间"+TimeToString(m_lastbar_time)+",新柱请求的时间"+TimeToString(newbar_time);m_retcode=-1;//检测新柱的结果代码:return-1-同步错误return(false);}//---//---如果是第一次调用if(m_lastbar_time==0){m_lastbar_time=newbar_time;//---设置最后一根柱线的时间并退出m_comment=__FUNCTION__+"Initializationoflastbar_time="+TimeToString(m_lastbar_time);返回(假);}//---//---检查新柱:如果(m_lastbar_time
