EA: 收盘价分形 EA

 

收盘价分形 EA:

一个根据 "收盘价分形" 指标进行交易的 EA 。


作者: Vladimir Karputov

 

****

 

这很有趣!想法是好的,但分形没有用!如果把分形 指标换成 "之 "字形指标,效果会好得多!我在这里留下我的建议!

 

我们的想法是一样的,但如果使用 "之 "字形指标,并且只在出现像图片中这样的缺口后才下单,我们就会得到一个更有趣的 EA!

附加的文件:
zigzag.png  19 kb
 
kwlin_089:

想法是一样的,但使用 Zigzag(之字形)指标,并在出现像图片中这样的缺口后才执行开仓订单,我们就能得到一个更有趣的 EA!


关于 ZigZag 的代码如下:Last ZZ50

基于 ZigZag 指标和挂单的策略。

该代码诞生于基于 "ZigZag "指标的 分支Strategy - "Last ZZ50"

想法的作者 -Vitaly Muzichenko,MQL5 代码实现 -Vladimir Karputov

Last ZZ50 "策略的一般原理:

基于 "ZigZag "指标的策略 - "Last ZZ50"

在 "之 "字形指标中,我们总是考虑最后两条射线:ABBC。 AB 射线是一条尚未固定的射线,可以改变(A 点可以改变位置)。

挂单被放置在ABBC 两条射线的中间,其计算方法如下:

  • AB 射线上触发挂单时,BC 射线显示的趋势将继续
  • 在射线BC 上触发挂单是趋势反转的 情况,射线BC 显示了这一趋势。

由于射线AB 是一条尚未固定的射线,可能会发生变化(A 点可能会改变位置),因此挂单会不断修改,使其价格始终处于射线AB 的中间位置。

未结头寸的追踪规则是:等到头寸盈利(不包括佣金和掉期)至少达到(追踪止损 + 追踪步长)点数时,再为该头寸开启追踪。

 
Vladimir Karputov :

ZigZag 的代码如下:最后 ZZ50

基于 ZigZag 指标和挂单的策略。

该代码诞生于基于 "ZigZag "指标的策略 分支- "Last ZZ50"

该想法的作者是Vitaly Muzichenko,MQL5 代码实现 -Vladimir Karputov

Last ZZ50 "策略的一般原则:

在 ZigZag 指标中,我们总是考虑最后两条射线:ABBCAB 射线是一条尚未固定的射线,可以改变(A 点可以改变位置)。

挂单被放置在ABBC 两条射线的中间,其计算方法如下:

  • AB 射线上触发挂单时,BC 射线显示的趋势将继续
  • 在射线BC 上触发挂单是趋势反转 的情况,这由射线BC 显示。

由于光线AB 是一条尚未固定且可能变化的光线(A 点可能改变其位置),因此挂单将不断修改,使其价格始终处于光线AB 的中间位置。

未结头寸的追踪根据以下规则进行:等到头寸盈利(不包括佣金和掉期)至少(追踪止损 + 追踪步长)个点,然后为该头寸开启追踪。

这种 "Last ZZ50 "策略的问题在于,它会在指标 "之 "字形的中间打开许多挂单,这会造成许多混乱,导致许多损失和缩减。从您构建 "收盘价分形 EA "指标的方式来看,调整 "之 "字形指标更为有趣。

如果有办法制作 EA,那将会很有趣!我认为这将会是一个出色的 EA!
 
kwlin_089:
这种 "Last ZZ50 "策略的问题在于,它会在指标 "之 "字形的中间打开许多挂单,****。

对连续开仓 数量设限永远不会太迟。

 

它是否有任何功能使其不会以相反信号关闭订单?

 

也许可以用 true/false 来启用和禁用反向符号,或者告诉我可以从代码中提取哪些内容,这样我就可以在不关闭反向符号订单的情况下进行测试!感谢您与本 EA 的合作!

 
kwlin_089:

它是否有任何功能使其不会在相反信号中关闭订单?


您只需注释掉这些行 即可:

   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)
     {
      //全天交易
     }
 
Vladimir Karputov :

您只需注释掉这些行 即可:

我这样做了,但没有成功,因为发布的代码中的这一部分显然与打开和关闭图表有关!但我需要的是,当出现相反的分形信号时不平仓,也就是说,我只想在 "止损 "或 "止盈 "时平仓

我试着注释掉这部分代码,结果证明是正确的,但还是不行

 //--- 
   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();
  }