不存在完美的EA

 

基本上,写开仓、平仓、的代码没多少含金量,就是检查持仓,设追踪止损。

最难的是决定何时开仓、何时平仓,我把策略改了不下十次,依然找不到完美的策略。

例如

策略一、震荡不开仓,这个策略减去了90%的止损。

策略二、减速不开仓,这个策略对于回调也不开仓 ,全天只会开出三几张单 。事实上这是策略一的变形,包含了策略一。但依然不完美,缺点是突破反转时,总会伴随着一张止损单,因为不知道何时会反转。

附加的文件:
2b.PNG  178 kb
 
lapcheung:

基本上,写开仓、平仓、的代码没多少含金量,就是检查持仓,设追踪止损。

最难的是决定何时开仓、何时平仓,我把策略改了不下十次,依然找不到完美的策略。

例如

策略一、震荡不开仓,这个策略减去了90%的止损。

策略二、减速不开仓,这个策略对于回调也不开仓 ,全天只会开出三几张单 。事实上这是策略一的变形,包含了策略一。但依然不完美,缺点是突破反转时,总会伴随着一张止损单,因为不知道何时会反转。

给“完美”打个折,
如果60%算及格,60-99.99%,去创造,只能这样了。
 

一套策略无法适应所有行情的,在不匹配这套策略的行情下运行,必然会产生亏损,因此要能接受他一定范围的回撤

所以你不要为了避免亏损过度修改策略,为了避免亏损过滤的进场位置,可能也是你最佳创利进场位,

可以看看我盈利截图,我不会因为他亏损就立即修改策略避免亏损,只要总体是赚的,这个策略就可以运行

1

 
Xi Wen Tian #:

一套策略无法适应所有行情的,在不匹配这套策略的行情下运行,必然会产生亏损,因此要能接受他一定范围的回撤

所以你不要为了避免亏损过度修改策略,为了避免亏损过滤的进场位置,可能也是你最佳创利进场位,

可以看看我盈利截图,我不会因为他亏损就立即修改策略避免亏损,只要总体是赚的,这个策略就可以运行


考虑两个策略并行。

开仓比较钝,平仓比较敏感。

最佳进场位置,风险更高,例如多头市场中,回调买入,若反转就亏了。
 
   if(type==POSITION_TYPE_BUY)
      {
      switch (direct)
         {
         case up_End:
         case down_Begin:
         case down_On:
         case break_Down:
            // 价格转向下时,平仓
         case no_Direct:
            // 方向不明,将止损调到最小
            //stopPoint/=2;
            if (profit>0.0)
               {
               orderClose();
               return;
               }
         case up_On:
         case break_Up:
            // 强势市场追踪止损减半
            stopPoint/=2;
         case up_Begin:
         case down_End:
            // 震荡时经常出现临界跳变
         default:
            // 价格向不利方向移动,按持仓价调整止损
            if (holdPrice>sellPrice)
               request.sl=
                  NormalizeDouble(
                     holdPrice-stopPoint,digits);
            // 设追踪止损,防止过度平仓
            else request.sl=
               NormalizeDouble(
                  sellPrice-stopPoint,digits);
         }
      // 新多头止损价高于市场价,直接平仓
      if (request.sl>sellPrice)
         {
         orderClose();
         return;
         }
      // 若最小止损点被服务器限定,无法调整止损价
      // 新止损价更低,无需调整
      if (request.sl<=slose)
         {
         noChange_msg();
         return;
         }
      }

以上是我的平仓策略代码。下面是开仓策略代码。


   switch (UpOrDown())
      {
      case up_On:
      case break_Up:
            request.type=ORDER_TYPE_BUY;
            // 订单类型
            request.price=buyPrice;
            // 持仓价格
            request.tp=NormalizeDouble(
               buyPrice+takePoint,digits);
            // 持仓止赢
            request.sl=
               NormalizeDouble(
                  minDouble(buyPrice-stopPoint,
                     greedA.fastG.low),
                  digits);
            // 持仓止损
         break;
      case down_On:
      case break_Down:
            request.type=ORDER_TYPE_SELL;
            // 订单类型
            request.price=sellPrice;
            // 持仓价格
            request.tp=NormalizeDouble(
               sellPrice-takePoint,digits);
            // 持仓止赢
            request.sl=
               NormalizeDouble(
                  maxDouble(sellPrice+stopPoint,
                     greedA.fastG.high),
                  digits);
            // 持仓止损
         break;
      // 初期或震荡、无方向不开仓
      case no_Direct:
      case up_End:
      case up_Begin:
      case down_End:
      case down_Begin:
      default:
         // 方向不明,停止交易
         chart_msg();
         return orderCount;
      }
 
没有完美的EA,但有完美的模型。
 
Edward #:
没有完美的EA,但有完美的模型。

市场运行并不完美,主要是震荡时刻存在。

令到反转不是一下子,而是反复多次,最后还不一定反转。

可以说,目前还没人能解决震荡。

 
lapcheung #:

市场运行并不完美,主要是震荡时刻存在。

令到反转不是一下子,而是反复多次,最后还不一定反转。

可以说,目前还没人能解决震荡。

正解哦,我写了几个EA,震荡是无法提前识别的,所以只要是抓趋势的EA,震荡几乎很难有完美的解决方案, 鱼和熊掌很难兼得,如果一直上下震荡大概率爆仓

 
Zheng Hu #:

正解哦,我写了几个EA,震荡是无法提前识别的,所以只要是抓趋势的EA,震荡几乎很难有完美的解决方案, 鱼和熊掌很难兼得,如果一直上下震荡大概率爆仓

现在用的是控制止损幅度,去消除震荡中反复平仓、开仓。

但最好的解决方法,是不使用自动开仓,只使用追踪止损(平仓)。

因为当止损平仓后,已经错过了最佳开仓时机,自动开仓只能是追行情,当指标用均线做突破信号,震荡行情中,突破均线就反转。

消除震荡的方法

一、使用两单元均值,代替最新值,跳变的幅度会减少。可消除尖刺,特别是反向尖剌,趋势并未反转。

问题是,急速反转,也被过滤了,止损后,还在逆趋势开仓。

二、使用上下限,设置一个较宽的区间,例如:临界是 1,设置为 0.9 -- 1.1 之间,高于低于区间,才判定为转向。

实测使用上下限也要适中,宽度大了,震荡时没反应,但突破初期也错过了。宽度过少,又滤不掉震荡。

 

这个短线策略效果意外的好。回测时收益保持上升。

还要进一步检查参数,因为回测是在理想环境中,与现实有一定出入。

过程中一次止损也没有触发,因为趋势反转时,持仓就反转了,比止损更准确。

附加的文件:
4p.PNG  14 kb
t73.PNG  74 kb
 

更换成白银,同相的 EA 策略,结果不一样。

细心分析,开始时白银开仓滑点是几十点,EA 只能赚取 10 点起,因此开始是一直亏损。后来滑点降到个位数,净值又回升了。

但总体上,白银趋势相对黄金更加震荡,因此盈利能力(净值回升速度)不及黄金。

附加的文件:
bnoe.PNG  60 kb
n8ca2.PNG  13 kb
原因: