想法是一样的,但使用 Zigzag(之字形)指标,并在出现像图片中这样的缺口后才执行开仓订单,我们就能得到一个更有趣的 EA!
关于 ZigZag 的代码如下:Last ZZ50
基于 ZigZag 指标和挂单的策略。
该代码诞生于基于 "ZigZag "指标的 分支Strategy - "Last ZZ50"。
想法的作者 -Vitaly Muzichenko,MQL5 代码实现 -Vladimir Karputov。
Last ZZ50 "策略的一般原理:

在 "之 "字形指标中,我们总是考虑最后两条射线:AB 和BC。 AB 射线是一条尚未固定的射线,可以改变(A 点可以改变位置)。
挂单被放置在AB 和BC 两条射线的中间,其计算方法如下:
- 在AB 射线上触发挂单时,BC 射线显示的趋势将继续;
- 在射线BC 上触发挂单是趋势反转的 情况,射线BC 显示了这一趋势。
由于射线AB 是一条尚未固定的射线,可能会发生变化(A 点可能会改变位置),因此挂单会不断修改,使其价格始终处于射线AB 的中间位置。
未结头寸的追踪规则是:等到头寸盈利(不包括佣金和掉期)至少达到(追踪止损 + 追踪步长)点数时,再为该头寸开启追踪。
ZigZag 的代码如下:最后 ZZ50
基于 ZigZag 指标和挂单的策略。
该代码诞生于基于 "ZigZag "指标的策略 分支- "Last ZZ50"。
该想法的作者是Vitaly Muzichenko,MQL5 代码实现 -Vladimir Karputov。
Last ZZ50 "策略的一般原则:
在 ZigZag 指标中,我们总是考虑最后两条射线:AB 和BC。AB 射线是一条尚未固定的射线,可以改变(A 点可以改变位置)。
挂单被放置在AB 和BC 两条射线的中间,其计算方法如下:
- 在AB 射线上触发挂单时,BC 射线显示的趋势将继续;
- 在射线BC 上触发挂单是趋势反转 的情况,这由射线BC 显示。
由于光线AB 是一条尚未固定且可能变化的光线(A 点可能改变其位置),因此挂单将不断修改,使其价格始终处于光线AB 的中间位置。
未结头寸的追踪根据以下规则进行:等到头寸盈利(不包括佣金和掉期)至少(追踪止损 + 追踪步长)个点,然后为该头寸开启追踪。
如果有办法制作 EA,那将会很有趣!我认为这将会是一个出色的 EA!
它是否有任何功能使其不会以相反信号关闭订单?
也许可以用 true/false 来启用和禁用反向符号,或者告诉我可以从代码中提取哪些内容,这样我就可以在不关闭反向符号订单的情况下进行测试!感谢您与本 EA 的合作!
它是否有任何功能使其不会在相反信号中关闭订单?
您只需注释掉这些行 即可:
if(InpStarHour<InpEndHour) // 一天内完成交易 { if(time_current<time_start || time_current>=time_end) { CloseAllPositions(); return; } } else if(InpStarHour>InpEndHour) // 第二天进行过渡交易 { if(struct_time_current.hour<InpStarHour && struct_time_current.hour>=InpEndHour) { CloseAllPositions(); return; } } else if(InpStarHour==InpEndHour) { //全天交易 }
您只需注释掉这些行 即可:
我这样做了,但没有成功,因为发布的代码中的这一部分显然与打开和关闭图表有关!但我需要的是,当出现相反的分形信号时不平仓,也就是说,我只想在 "止损 "或 "止盈 "时平仓。
我试着注释掉这部分代码,结果证明是正确的,但还是不行
//--- if (last_lower!= EMPTY_VALUE && previous_lower!= EMPTY_VALUE ) if (previous_lower<last_lower) { ClosePositions( POSITION_TYPE_SELL ); if (CalculatePositions( POSITION_TYPE_BUY )== 0 ) { double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Ask ()-ExtStopLoss; double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Ask ()+ExtTakeProfit; OpenBuy(sl,tp); } } if (last_upper!= EMPTY_VALUE && previous_upper!= EMPTY_VALUE ) if (previous_upper>last_upper) { ClosePositions( POSITION_TYPE_BUY ); if (CalculatePositions( POSITION_TYPE_SELL )== 0 ) { double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Bid ()+ExtStopLoss; double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Bid ()-ExtTakeProfit; OpenSell(sl,tp); } } //--- Trailing(); }
收盘价分形 EA:
一个根据 "收盘价分形" 指标进行交易的 EA 。
作者: Vladimir Karputov