- 首先要编写一个指标,用来提示交易信号,最好不要把指标实现在 EA 里。EA 主要处理的参数化指标和下单。
- 指标实现的买卖信号可以设置为绘制缓冲区,也就是数据序列输出,样式为 Arrow。
- 然后在 EA 里的 OnTick() 函数通过 iCustom 来引用这个指标。你可以判断倒数第一根的最新信号,也可以判断倒数第二根的信号,相当于最新一根刚开盘,上一根刚收盘来交易。
- 要记录下信号 bar 的时间,不要在一根 bar 上重复交易。
- 统计历史订单,看是否有未平仓订单,首先根据信号平仓。
- 再次统计历史订单,看历史订单是否已平为 0。然后开始根据信号方向下单,同时设置止损,可以不设置止盈,等反向信号出来自动平仓。
以上是简单的 EA 实现。没有根据账户净值来计算风险,什么滑点和手续费,和风险比例计算。请提前手工计算,或者固定手数来交易。
如果不是固定手数,那么出现信号时要加以限制,比如第一次下单后,后续再出现信号,要大于一定的时间,或者大于 5 根 bar。一般情况下连续出现信号的机会并不多,除非你是把两种指标的信号弄到了一个 EA 里,然后任何一个指标信号都开仓。
另外再来一个画线开仓,因为 MT4 的趋势线可以编程,所以你可以通过 x, y 坐标得到横轴时间和纵轴价格的值,所以当最新价突破趋势线价格可以开仓。
可以综合以上交易系统,来手工画线和自动化交易结合。
注意一个图表只能附加一个 EA,所以实现为两个 EA 的话,需要新开一个图。
就算是手动下单,但是通过 EA 来跟踪止盈平仓也是不错的,这样不需要熬夜,放心去睡觉。
另外调整 EA 参数时最好实现一个简单的面板,这样运行时调整,不要通过 EA 的属性对话框来设置,因为每次设置都会导致 EA 重新初始化。
MT4 的缺点是 EA 必须附加在图表上,无法无图表运行策略,且是一个 windows 软件,这样你不好在低资源无窗口 linux vps 上运行。所以 24 小时运行需要一台占用资源较高的装有 wine 环境的 linux 系统来运行 32 位的 MT4。但这也是 MT4 的好处,因为你可以交互式访问趋势线对象,拖拽止损止盈线。
另外 vps 上自动运行不方便分析,但是你可以在 mql 里写一个服务公开端口,让本地客户端来连,然后同步本地客户端的趋势线策略。不要使用简单的文本协议,传输要加密。另外这样还可以心跳报活。
另外新兴的 tradingview 很強,不需要附加图表就能运行。但是你的策略要托管在 tradingview 平台,且要依赖他的数据源。
实际编写 EA 要确定的事情
- 交易方向,可以用大均线过滤一个方向,这个只能是滞后的,不要想着抄底。如果是想抄底,最好手动给策略一个方向。
- 入场信号,做多,不是连续上涨之后的开仓,必须是上涨后的整固入场。
- 出场信号。
- 风险管理和手数。