有没有简单的好方法来获取用户在策略测试框中设置的日期?
是的,有,但没有从 GUI 表单字段中提取数据:
MetaTrader 终端的“时间流”具有其他机制(在 StrategyTester 中,如果 [x] 优化开启,则更复杂)。该平台只是模拟时间,唯一的“内部可见”日期时间是 emulated QUOTE
-stream 携带的日期时间。
虽然有一些复杂的技巧可以通过参数为滑动窗口测试和类似用例注入开始/结束限制,但仍然OnTester(){...}
永远不会“看到”到 GUI 表单字段中。
这个“内部” datetime
-self-sniffer 效果很好:
datetime aGloballyAccessibleSessionFirstVisibleDATETIME,
aGloballyAccessibleSessionLast_VisibleDATETIME;
int OnTick(){
static bool is1stQUOTE = True;
if ( is1stQUOTE ){ // .TEST
is1stQUOTE = False; // .LOCK
aGloballyAccessibleSessionFirstVisibleDATETIME = Time[0]; // .SET
}
/**/ aGloballyAccessibleSessionLast_VisibleDATETIME = Time[0]; // .UPD
...
}
double OnTester() {
...
Print( "First QUOTE was on (",
aGloballyAccessibleSessionFirstVisibleDATETIME,
")",
"Last QUOTE was on (",
aGloballyAccessibleSessionLast_VisibleDATETIME
")"
);
}