如何获得MQL4中历史性酒吧的OHLC价格?

时间:2018-06-17 10:14:26

标签: mql4

我对mql4代码感到有些困惑。基本上,我需要在当前日期后30天内及时访问和存储历史酒吧的OHLC价格。这就是我目前正在做的事情。

input  int    referenceDay=1;
static double reference;
if ( Day() == referenceDay ) reference = Open[0];

这是正常工作,直到我要么添加到代码,然后它将引用重置为0.我正在寻找一种方法,以便能够访问每个新蜡烛的历史记录并存储价格为referenceDay

目标是每当EA加载到图表时,它会自动进入历史记录并更新在此交易日使用的参考价格,而无需等待整个月的实时迭代。

1 个答案:

答案 0 :(得分:0)

  

目标是每当EA加载到图表时,它会自动进入历史记录并更新参考价格

到目前为止一切顺利。

EA加载后,
.button-container { text-align:center; } 的定义设置 static double reference; 的初始值;
接下来,对reference == 0.的调用设定了规则:
Day()返回当月的当天,这不是&#34;今天&#34; s-day,而是所谓的 最后一个月的日期服务器时间。 鉴于EA在周日下午或周一早上加载,在市场开启之前,<#> 上次已知的服务器时间 < /强>&#34;是仍然是星期五 ...请记住,服务器端日期时间规则(因此,如果在亚太地区或澳大利亚/新西兰TimeZone服务器上进行交易,则需要额外的体操)。

因此,随着代码的继续 - 在所有这些情况下, int Day(); input值意外 int referenceDay < em>上次已知的服务器时间 != ,您的(刚刚)初始化变量 Day() 将保持 {{1 }}

惊奇?

可以测试一下:

reference

可以使用以下方法重新定义作业策略:

== 0.

此代码片段当然不会努力成为完整的解决方案,但会显示实现预期目标的机制。

您的实际代码必须解决多少交易日 - 这是解决MetaTrader Terminal 4平台的TimeSeries-indexing逻辑所需的 - (不仅仅是日历日) - 介于 {之间{1}} 以及&#34; 上次已知的服务器时间&#34; - static double reference = EMPTY; // .SET EXPLICIT INITIALISER if ( Day() == referenceDay ) { reference = Open[0]; print( reference, "AFTER Day() MATCHED referenceDay" // THIS NEED NOT HAPPEN ); } else { print( reference, "ON( ",Day(), " ) ", "AFTER Day() DID NOT MATCH referenceDay = ", referenceDay } ,但您接近拥有这样做了。