在期货和外汇交易领域,人工交易已经被广泛应用多年,但是,随着计算机技术的快速发展和人工智能的不断进步,程序化交易逐渐成为了越来越多投资者的选择。其中,EA(Expert Advisor)即外汇交易机器人被认为是最优秀的程序化交易工具之一。开发一款稳健、可靠并且具有竞争力的EA,并不容易,需要投资者掌握一定的编程知识和技术。本文将对EA编写进行初探,介绍EA编写的基础知识、流程、常用技术和注意事项,帮助投资者了解如何打造自己的交易机器人。
一、基础知识
- EA概念
EA是运行在交易平台MetaTrader(以下简称MT)上的程序化交易软件,常常被称为“外汇交易机器人”。其主要功能包括:根据自定义策略进行交易决策和执行下单操作等。在开发和应用方面,EA比其他程序性交易工具具有优越性;它不仅可以将投资者的策略快速轻松地转换成计算机语言,并自动运行策略,还可以自动执行买卖操作,规避了人工交易中可能存在的心理偏差和失误。
- 编程语言
编写EA所使用的编程语言为MetaQuotes Language 4 (MQL4),这是一种C++风格的编程语言。在MT交易平台中,投资者可以使用内嵌的MetaEditor编辑器编写EA,并通过MT平台进行编译、调试、上传和运行。
- EA基础逻辑
开发一款EA需要了解常用技术分析方法和量化分析的基本知识;明确交易的目标、周期、风险控制;以及确定合适的入场点和离场点等。
二、编写流程
-
指定交易策略目标:首先需要明确自己的交易目标,比如盈利幅度、胜率、风险度量等,明确每笔交易的操作计划,进而根据目标设定开发交易策略的方向。
-
设计交易规则:设计交易规则包括制定止损、止盈比例,确定开仓等待时间、频率和方式;还需定义非标准化止损策略、金融产品相关数据字典等等。
-
编写代码:使用MQL4进行编程设计。可将交易规则中需要时序控制的过程用程序语句表示,布置与该语句相关的变量和常量等。
-
进行单元测试:利用一部分数据检查策略和程序的同步、正确性和准确性等。注意,在这一阶段容易出现局限性测试结果等情况,需要谨慎评估。
-
进行回测:回测前需要各个时间段的市场数据文件,并手动写初始化脚本,使用订单过滤器(即交易器)删除不合法的订单,实现参数调优目标等。
-
优化参数:对概率分布、BSLog值、最大损失等进行分析和比较。随着越来越多的历史数据进行处理,可以对参数进行深入全面的优化。
-
正式使用与更新:在平台中启用EA,并加入相应投资组合中,投资者需要根据市场行情和实时数据不断予以更新和调整。
三、常用技术
- 移动平均模型
- 移动平均模型是最常见的技术之一和编码数据的方法之一。移动平均值是指数据给定时间段内的均值。在股票/外汇市场,移动平均线通常是指收盘价的30日移动平均线。
- 2. 趋势跟踪技术
- 趋势跟踪技术是从不同角度对一组数据进行趋势测度,以及预测该趋势将继续还是反转。趋势跟踪技术通常被看作是至少考虑了三天或更多时间点的移动平均的简化版本。
- 3. Bollinger波动率模型
- Bollinger波动模型是一种用于确定价格高低点、价格趋势强弱和潜在反转的视觉方法。Bollinger波动模型中常常使用价格通道线和Bollinger频带线表示。
- 四、注意事项
- 1. 仅使用历史数据进行回测:历史数据比现实数据具有很高的理论正确性。但是,直到现在,无论是人工交易还是机器交易,使用历史数据的有效性都受到普遍质疑。
- 2. 获取伪信号:交易中出现所谓的“伪信号”是交易系统失误的一种表现形式。伪信号通常指机器交易(或手动操作)采用过于软弱的尘嚣判断策略总评体系所产生的错误信号。
- 3. 追求1+1=3:一个有效的交易策略思路不会获得如此高的滚动效率。尽管策略可能有很强的外部性,但许多投资者都不愿意企求在少数操作中获得高收益和大利润。
- 4. 忽视程序化交易的基本概念:机器交易的最大好处是,它可以从消除人为因素并安排计划方面进行最有效的数据库分析。但是,使用机器交易与任何其他交易类型一样,都必须遵守正确的监管和纪律标准。
- 五、总结
- EA编写是一个值得深入研究的领域。在理解了EA编写的基础知识、流程、常用技术和注意事项后,投资者需要根据自己的经验和市场环境进行灵活应用。在进行程序化交易时,投资者需要保持冷静、严格执行交易计划,并注重风险控制和信誉风险管理。