我对mql4
代码感到有些困惑。基本上,我需要在当前日期后30天内及时访问和存储历史酒吧的OHLC价格。这就是我目前正在做的事情。
input int referenceDay=1;
static double reference;
if ( Day() == referenceDay ) reference = Open[0];
这是正常工作,直到我要么添加到代码,然后它将引用重置为0.我正在寻找一种方法,以便能够访问每个新蜡烛的历史记录并存储价格为referenceDay
。
目标是每当EA加载到图表时,它会自动进入历史记录并更新在此交易日使用的参考价格,而无需等待整个月的实时迭代。
答案 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
}
,但您接近拥有这样做了。