MQL5 向导 - 基于两个 EMA 的交叉和日内时间过滤器的交易信号:
作者:MetaQuotes Software Corp:MetaQuotes Software Corp.
文章不错,但我需要一些解释:
**** 仅从 0:00 至 5:59 开仓。可以通过设置 BadHoursOfDay=16777152=11111111111111111111000000b 的值来实现。所有其他交易时段都是 "坏 "时段,因此最好禁止在 6:00 至当日收盘期间开立新头寸。****
这里需要一些细节:
- 如何计算/定义 "16777152 "这个值,如何为其他 "开仓/平仓 "时间或仅为 "开仓 "时间定义这个值?
- 如何对多个 ITF(例如:东京/伦敦/纽约)进行决策?东京/伦敦/纽约的开放时间?
这里需要一些细节:
- 如何计算/定义 "16777152 "这个值,如何为其他 "开仓/平仓 "时间或仅为 "开仓 "时间定义这个值?
在本示例中,对新开仓时间进行了过滤。(假定它们将被 SL/TP 关闭)。
16777152 的二进制表示为:

在我们的例子中,我们使用了小时过滤器,"坏 "小时用相应的比特=1 标记。同样的方法也适用于 BadMinutesOfHour。
您可以使用 calc.exe 转换二进制值:

- 如何对多个 ITF 进行决策,举例说明:东京/伦敦/纽约的营业时间?
如果您想使用 3 个不同的过滤器(东京、伦敦、纽约),可以在您的信号类中添加 CSignalITF 类的额外实例(在我们的例子中只有一个 m_time_filter)。
在本例中,对新开仓位进行过滤。(假定它们将被 SL/TP 关闭)。
16777152 的二进制表示为
在本例中,我们使用了小时数过滤器,"坏 "小时数以相应的位数=1 标记。同样的方法也适用于 BadMinutesOfHour。
您可以使用 calc.exe 转换二进制值:
如果要使用 3 个不同的过滤器(东京、伦敦、纽约),可以在信号类中添加 CSignalITF 类的额外实例(在我们的例子中只有一个 m_time_filter)。
感谢您提供的操作方法,但真是令人头疼:( 难道我们就不能像使用 MT4 那样,使用 StartHour/EndHour/StartMinute/EndMinute 这样更方便的模式吗?为什么要使用如此复杂的二进制模式?
参数的二进制表示法有一些显著优势。例如,您可以在 Strategy Tester 中探索参数空间(从 0 开始,16777215 结束,步骤 1)。试试看。
找到最佳时间后,您可以探索天数。但要注意,时间过滤器对较低的时间框架(H1 及以下)有效。
如果您需要更 "友好 "的方式,可以编写自己的交易信号类(参见MQL5 向导:如何创建交易信号模块)。
参数的二进制表示法有一些显著优势。例如,您可以在 Strategy Tester 中探索参数空间(从 0 开始,到 16777215,第 1 步)。试试看。
找到最佳时间后,您可以探索天数。但要注意,时间过滤器对较低的时间框架(H1 及以下)有效。
如果您需要更 "友好 "的方式,您可以编写自己的交易信号类(参见MQL5 向导:如何创建交易信号模块)。
通过优化 Strategy Tester 中的 BadHoursOfDay 输入参数,可以找到最佳时间过滤器。您可以指定参数的起始值和终止值,它就会找出最佳时间,由于使用了遗传优化算法,因此看起来不需要太多时间。
第二种方法是手动检查亏损交易的时间,并在 BadHoursOfDay 参数中 "标记"。
事实上,这可以调整您的策略,并考虑到交易想法的一些 "逻辑 "原因。例如,震荡指标在平盘时效果更好,平盘的原因可能是没有新闻、时段/货币对属性等。
好吧,如果我说错了,请指正我,但假设我想过滤坏分钟数,这是否意味着我需要筛选 1152921504606846975 个选项?
你好。
是否有可能使平均线从 MA、EMA、WMA 中进行选择。
MQL5向导 - 基于两条移动平均线带日内时间过滤的交易信号:
基于两条指数平滑移动平均线交叉带日内过滤的交易信号(CSignal2EMA_ITFA来自MQL5标准库)被考虑。基于该策略的EA交易的代码可以被MQL5向导自动生成
作者: MetaQuotes Software Corp.