ChatGpt让编写EA更容易,但.......

avatar
· 阅读量 199

我身边有很多交易员,都想把自己的交易系统写成EA程序自动执行,但苦于不会MQL语言,在此我分享一下自己的观点:


EA最大的优点就是能够严格执行预先编写好的程序,不会因为人性而导致既定的交易系统在执行层面出现偏差,同时也有缺点。


市场是瞬息万变的,我们无法控制市场,市场不一定会按照我们期望的方向去波动,但有一点是我们可以掌控的,那就是我们交易行为,其中包括:

1、我们所开的仓位

2、我们所设置的止盈

3、我们所设置的止损


我们按照事先定好的交易策略去执行,并且让我们所有的交易行为都在我们的掌控之下,那我们的账户就不会有很大的风险。


chatgpt的出现让编写程序的门槛降低了一大截,我也尝试用他编写了一小段程序,跟大家分享一下:


-----------------------------------------------------我是分割线---------------------------------------------------------------


//+------------------------------------------------------------------+

//|                           MA Cross EA |

//|                      Copyright © 2021, Me |

//|                    https://www.example.com |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2021, Me"

#property link   "https://www.example.com"

#property version  "1.00"

#property strict


// 输入参数

input int fast_ma_period = 20; // 快速均线周期

input int slow_ma_period = 34; // 慢速均线周期

input double lot_size = 0.01;  // 手数


// 交易相关变量

int ticket = 0;  // 已开仓订单号

bool is_buy = false; // 是否持有多仓

bool is_sell = false; // 是否持有空仓


//+------------------------------------------------------------------+

//| EA初始化函数                           |

//+------------------------------------------------------------------+

void OnInit()

{

  Print("MA Cross EA started with fast MA period = ", fast_ma_period, ", slow MA period = ", slow_ma_period);

}


//+------------------------------------------------------------------+

//| EA每次tick更新时的处理函数                    |

//+------------------------------------------------------------------+

void OnTick()

{

  double fast_ma = iMA(NULL, 0, fast_ma_period, 0, MODE_EMA, PRICE_CLOSE, 0); // 计算快速均线

  double slow_ma = iMA(NULL, 0, slow_ma_period, 0, MODE_EMA, PRICE_CLOSE, 0); // 计算慢速均线


  // 判断金叉和死叉

  if (fast_ma > slow_ma && !is_buy) // 金叉,如果没有持有多仓则开多仓

  {

    if (ticket == 0 || OrderSelect(ticket, SELECT_BY_TICKET))

    {

      // 没有已开仓订单或者已开仓订单已被平仓,则开多仓

      ticket = OrderSend(Symbol(), OP_BUY, lot_size, Ask, 3, 0, 0, "MA Cross EA Buy", 0, 0, Green);

      if (ticket > 0)

      {

        is_buy = true;

        is_sell = false;

      }

    }

  }

  else if (fast_ma < slow_ma && !is_sell) // 死叉,如果没有持有空仓则开空仓

  {

    if (ticket == 0 || OrderSelect(ticket, SELECT_BY_TICKET))

    {

      // 没有已开仓订单或者已开仓订单已被平仓,则开空仓

      ticket = OrderSend(Symbol(), OP_SELL, lot_size, Bid, 3, 0, 0, "MA Cross EA Sell", 0, 0, Red);

      if (ticket > 0)

      {

        is_buy = false;

        is_sell = true;

      }

    }

  }

  else if (fast_ma < slow_ma && is_buy) // 死叉,如果持有多仓则平多仓

  {

    if (ticket != 0 && Order


-----------------------------------------------------我是分割线---------------------------------------------------------------


以上这段代码,只用了不到10秒就完成了


我想说的是,写代码将来会变得越来越容易,但千锤百炼过后的成熟交易系统,才是最珍贵的。


什么样的系统才是真正成熟的交易系统?

1、一个时间周期内能够达到比较可观的稳定盈利的;

2、经过市场验证行之有效的;

3、风险可控的。


交易系统千千万,只有适合自己的才是最好的,而适合自己的是需要经过长时间磨练出来的

PS:不要说用模拟账号,模拟和真实有着一条不可逾越的鸿沟。


今天就写到这,不定期会跟大家分享交易心得和团队交易成果,喜欢的记得关注~~

风险提示:本文所述仅代表作者个人观点,不代表 Followme 的官方立场。Followme 不对内容的准确性、完整性或可靠性作出任何保证,对于基于该内容所采取的任何行为,不承担任何责任,除非另有书面明确说明。

喜欢的话,赞赏支持一下
回复 2

暂无评论,立马抢沙发

  • tradingContest