初学者的问题 MQL5 MT5 MetaTrader 5 - 页 76

 
FinEngineer: 只剩下一个错误 2012.12.22 00:56:44 Pair_delta_RSI (EURGBP,M1) 没有计算RSI1_Handle的所有数据(-1bars )。错误4806

这个错误不是在编译过程中出现的,而是在我把指标附加到图表上,或者改变时间框架时出现的。

这个错误信息 是一直在播放,还是会随着时间的推移而消失?

 
伙计们!MT5可以连接到任何直流电吗?
 
net:
伙计们!MT5可以连接到任何经纪公司吗?

不,通过MT5交易可以通过提供该平台交易可能性的经纪商,如VTB24和Alfa forex

Условия для трейдеров
  • www.alfa-forex.ru
Если у вас уже есть опыт работы на валютном рынке, то вы по достоинству оцените преимущества работы с Альфа-Форекс Самые узкие спреды на рынке: EUR/USD — от 0,7 пункта Отсутствие минимального депозита Быстрый ввод и вывод средств Исполнение ордеров без проскальзываний и реквот Альфа-Форекс входит в банковскую группу в составе Консорциума...
 
Yedelkin:

这个错误信息 是不断播放,还是随着时间的推移而消失?

有一次,当我把指标附在图表上时...
 
Yedelkin:

这个错误信息 是一直在播放,还是会随着时间的推移而消失?

2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) array out of range in 'Pair_delta_RSI.mq5' (92,37)
结果这个错误也出现了...即....,有两个错误...
 
Yedelkin:

这个错误信息 是不断播放,还是随着时间的推移而消失?

在alphaforex试过,刚在alpari试过,同样的错误...
 

FinEngineer:

Yedelkin: 这个错误信息 是一直在播放,还是会随着时间的推移而消失?

有一次,当我把指标附在图表上时...

那么你就做得很好。当你只是把程序附加到图表上或改变时间框架时,终端中没有RSI指标或其他任何新的计算数据。而终端需要一些时间来计算必要的指标缓冲区。仔细看看你的代码(我知道它是根据别人的样本写的,但尽管如此):当RSI的计算数据不够时,函数OnCalculate() 停止工作('return(0);')并等待一个新的tick。一旦在下一个tick上计算出RSI的指标缓冲区,你的指标就开始以正常模式工作。从你所说的来看,它确实如此。

你也可以在OnInit()函数中插入BarsCalculated()的检查 - 那么错误将很少发生(如果有的话)。在BarsCalculated()函数 的描述中给出了一个例子。

 
FinEngineer: 2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) array out of range in 'Pair_delta_RSI.mq5' (92,37)
结果这个错误也出现了......也就是说,有两个错误......
关于这个错误,我昨天已经写信给你了。(别忘了正确插入代码:) )
 
Yedelkin:
关于这个错误,我昨天已经给你写了信。(别忘了正确插入代码 :) )

删除了导致数据不足的一段代码(如下)。

int calculated=BarsCalculated(RSI1_Handle)。

if(calculated<rates_total)

{

Print("不是所有RSI1_Handle的数据都被计算出来了(",calculated, "bar)。错误",GetLastError())。

return(0);

}

calculated=BarsCalculated(RSI2_Handle)。

if(calculated<rates_total)

{

Print("不是所有RSI2_Handle的数据都被计算出来了(",calculated, "bar)。错误",GetLastError()。

return(0);

你能告诉我如何在信息中标记代码片段吗?

现在有一个错误出来了。

2012.12.22 15:14:00 Pair_delta_RSI (EURGBP,M1) 获取RSI1失败!错误4806

 
FinEngineer: 请告知如何在信息中选择代码片断?

正确插入代码

FinEngineer : 删除了负责数据不足的代码片断(如下)。
   int calculated=BarsCalculated(RSI1_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI1_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }
   calculated=BarsCalculated(RSI2_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI2_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);

它在那里工作得很好,那个 "负责数据不足的一块代码"。并正确地报告说,RSI的第一个刻度数据还没有被终端计算出来。如果你不喜欢收到错误信息,可以尝试像上面 那样做,即不仅在OnCalculate()中检查计算数据,而且在OnInit()中也检查。换句话说,尝试在OnInit()中等待所选技术指标的数据计算,然后在OnCalculate()中转入ticks处理,此时指标的数据保证被计算。

添加。最后,删除一部分检查代码并没有增加计算的指标数据的数量 :)