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

 
MikeZv:

弗拉基米尔,感谢你对第一个问题的回答,我错过了这些功能。

我把一个相同的指标放在MT4和MT5中(当然,代码是适应每个平台的)。
到零条为止,它们的数值是相同的,所以显然从一端......:)
而在MT4中,当禁用当前条形图的计算时,在当前条形图下没有任何东西被画出来,在MT5中,则是错误的数值。

关于交易、自动交易系统和策略测试的论坛

初学者的问题

Karputov Vladimir, 2016.03.08 15:13

...为了调试,设置检查--在时间序列数组time[i] 中包含哪个--这样你就能明白在哪一端开始计算条形图,在哪里有一个 "零 "条


 
MikeZv:
以及如何进行这样的检查?

在MetaEditore中添加一个断点 并开始调试。当断点停止时,将时间[0]加入到观察中。

调试

 
Karputov Vladimir:

在MetaEditore中添加一个断点并开始调试。当断点停止时,将时间[0]加入到观察中。


我已经在代码中插入了输出结果

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rate_total-1] = 1971.01.04 00:00:00

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rate_total-1] = 2016.03.08 17:00:00

在MT5代码中插入ArraySetAsSeries(time,true);
现在输出。

MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rate_total-1] = 2010.01.04 00:00:00

也做价格数组?


 
MikeZv:
我已经把输出放在代码中

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rate_total-1] = 1971.01.04 00:00

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rate_total-1] = 2016.03.08 17:00:00
我现在该怎么做?

在两个版本的指标中都添加ArraySetAsSeries--为那些你用于计算的数组:high[]、low[],并暂时为time[]数组--它将帮助你了解 "零 "条在哪里。因此,两个版本中的 "零 "条将在图表的同一侧(右侧或左侧--取决于你在ArraySetAsSeries中的设置),并且你将得到指标的相同计算部分。

补充:在我打字的时候,你已经摸索到了正确的方法:)

 
Karputov Vladimir:


补充:当我在打字的时候,你找到了正确的方法 :)

我找到了,但还是不能正确显示。:)
我把它粘贴到MT5的代码中。
   ArraySetAsSeries(ExtCalcVlBuffer,true); 
   ArraySetAsSeries(ExtMovingBuffer,true);
   ArraySetAsSeries(ExtStdDevBuffer,true);
   ArraySetAsSeries(time,true);             
   ArraySetAsSeries(low,true);              
   ArraySetAsSeries(high,true); 

它要出来了。

它只输出ExtCalcVlBuffer,但平均数和偏差不计...
而且它仍然在当前栏上输出,尽管它不应该。

 
MikeZv:
...

它仍然显示在当前栏上,尽管它不应该。

为什么不呢?
 
Karputov Vladimir:
为什么不呢?
我把它关掉了 i<rates_total-1
 
MikeZv:
我把它关掉了 i<rates_total-1
为什么?
 
Karputov Vladimir:
为什么?
而你不需要计较当前的,这只是浪费CPU时间,而且你就是不需要这个值。
 
MikeZv:
你不需要使用当前值,它只会徒劳地加载处理器,你根本不需要这个值。

所以,你需要马上说明这样的要求 :) 。

情况如下:如果图表中存在一个条形图,它对应于指标缓冲区 中的一个单元。只要你不在这个单元格中写东西,这个单元格就会储存垃圾。