如何在 MQL4 源代码中设置时间段?
How to setup a period of time in an MQL4 source code?
我正在使用 MQL4.
目前,我在MT4.StrategyTester中使用[Expert Advisor]-s,并通过内置下拉日历GUI元素设置时间段。
我想做的是直接在 MQL4 源代码中设置一个时间段。
如果实现了,比如我可以比较一下结果
'from 2011/01-to 2011/12'
至
'from 2012/01-to 2012/12'
等等。
即使在上述 MT4.StrategyTester 工具中增加了全自动、大规模超参数优化的附加值,也有一个简单的解决方案来满足需求,使用建议的参数对( aStartFromDATE
和 aRunTillDATE
) 作为可迭代的 元组,可以利用它在一些 sweeping/sliding 日历 window-of-time.window-of-time.
中对其候选版本进行 TradingStrategy 稳健性交叉验证
extern datetime aStartFromDATE = D'2010.01.01 00:00';
extern datetime aRunTillDATE = D'2345.01.01 00:00';
void OnTick(){
if ( Time < aStartFromDATE
|| Time > aRunTillDATE
){
IgnoreTicksOutsideTheGivenPeriodOfTime();
return;
}
// SURE TO BE INSIDE THE GIVEN ( MT4.STRATEGY/TESTER ITERABLE ) PERIOD OF TIME
...
..
.
}
void IgnoreTicksOutsideTheGivenPeriodOfTime(){
// Ignore, but still may do execute some utility service during a void run
}
注意语法支持的不同范围:
人们可能还对用例持谨慎态度,其中包括对一些强大的新语法构造函数的 StrategyTester 限制:
A PrintFormat()
是超参数优化期间 StrategyTester 中此类不受支持的部分之一。
PrintFormat()
函数在策略测试器优化期间不起作用。
我正在使用 MQL4.
目前,我在MT4.StrategyTester中使用[Expert Advisor]-s,并通过内置下拉日历GUI元素设置时间段。
我想做的是直接在 MQL4 源代码中设置一个时间段。
如果实现了,比如我可以比较一下结果
'from 2011/01-to 2011/12'
至
'from 2012/01-to 2012/12'
等等。
即使在上述 MT4.StrategyTester 工具中增加了全自动、大规模超参数优化的附加值,也有一个简单的解决方案来满足需求,使用建议的参数对( aStartFromDATE
和 aRunTillDATE
) 作为可迭代的 元组,可以利用它在一些 sweeping/sliding 日历 window-of-time.window-of-time.
extern datetime aStartFromDATE = D'2010.01.01 00:00';
extern datetime aRunTillDATE = D'2345.01.01 00:00';
void OnTick(){
if ( Time < aStartFromDATE
|| Time > aRunTillDATE
){
IgnoreTicksOutsideTheGivenPeriodOfTime();
return;
}
// SURE TO BE INSIDE THE GIVEN ( MT4.STRATEGY/TESTER ITERABLE ) PERIOD OF TIME
...
..
.
}
void IgnoreTicksOutsideTheGivenPeriodOfTime(){
// Ignore, but still may do execute some utility service during a void run
}
注意语法支持的不同范围:
人们可能还对用例持谨慎态度,其中包括对一些强大的新语法构造函数的 StrategyTester 限制:
A PrintFormat()
是超参数优化期间 StrategyTester 中此类不受支持的部分之一。
PrintFormat()
函数在策略测试器优化期间不起作用。