我身边有很多交易员,都想把自己的交易系统写成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 不对内容的准确性、完整性或可靠性作出任何保证,对于基于该内容所采取的任何行为,不承担任何责任,除非另有书面明确说明。

暂无评论,立马抢沙发