本文来自(id:forextop),作者进击的外汇作手
我认为研发一个好的交易系统需要从三方面考虑:
交易系统规则符合盈利的客观规律
这也是建立交易系统的一个基本要求,交易系统中的每个规则,都能逻辑自洽,确保进出场规则可以符合「截短亏损,让利润奔跑」的技术分析宗旨,确保头寸规则可以符合「在亏损时减少仓位,在盈利时增加仓位」的资金管理宗旨等等,这是第一步,从理论上让自己的系统达到符合盈利的客观要求。
交易系统遍历历史数据
一个不知根知底的男人无法托付终身,同样一个没有经历过足量历史数据遍历的系统无法用于实盘交易。一个理论上可以获利的系统,因为某些自己没有考虑到的因素,结果可能是负期望的,所以用历史数据滚动测试是开发交易系统必备的一个环节。
我们将用复盘软件进行测试(如果你可以把系统程序化的话则更加简单),这里面有几个要点:
以交易周期为基准点,提供足够的历史数据和交易数据,确保样本数据的有效性。
对同一个系统进行多周期测试,举例来说,如果一个系统在 h1 周期上可以获利,但是在 h4 周期上不可获利,说明这个系统是非常值得怀疑的,在 h1 周期上的获利可能并不能代表系统盈利的本质性,换句话说,优势不显著。
对同一个系统进行多市场测试,每个市场都有自己的特性,这个不假,在一个市场中获利颇丰可能在另外一个市场并不是如此,但是如果差距太大,说明这个系统也是非常值得怀疑的,一个好系统,微调规则后,就能适应不同的市场。
历史测试可以帮助我们在实盘之前考量一个系统的能力性、可靠性、可用性,同时在系统设计中,通过一系列数据统计,帮助我们对系统的改进提供方向性和指导性。
一次完整的历史测试有三个阶段(以现在 2019 年为例):
1.根据陈旧历史数据测试(2010 年至 2017 年历史数据)内推设计出系统原型;
2.根据较新的历史数据测试(2019 年数据)验证系统原型的绩效;
3.根据未来的数据测试(2020 年数据)外推系统绩效。
三个阶段互为循环,帮组系统原型的改进,只有通过内推和外推验证的系统,才是可以作为实盘操作的系统。
系统测试的重要参考数据:
1、不盈利,负盈利的系统是不能采用的。
2、交易次数,交易次数过少的系统不具备样本意义,对未来的指示性很低,较少的交易次数也可能源于曲线拟合下的强过滤,交易次数的提高有三个方向:减少过滤(特别是那些因系统无法解释数据而强加上去的过滤)、使用较小的时间框架、交易多个市场,同时我们要警惕交易次数过高的非理性频繁交易行为。
3、胜率,胜率过大的系统往往采用了「让亏损奔跑,截断利润」的策略,或者系统对亏损交易进行了强过滤,属于曲线拟合,胜率过小的系统往往缺乏稳定性,胜率的增加有三个方向:顺势,止损放在阻力支撑等较难突破的点位,剔除一般的交易点位。
4、平均盈利和平均亏损,盈亏比,盈亏比过小的系统一般是负期望的,盈亏比过大的系统的盈利往往来源于寥寥几笔大盈利,这是需要我们重视的,这样的系统有极高的心态素质要求,其次,这样的系统常常缺乏稳定性,从理论上来讲,我们可以通过一次巨大盈利冲销多次小幅亏损,但实践表明,中等的胜率和中等的盈亏比的系统,更加具有统计意义上的稳定性,换句话说,这样的系统更加优秀,增加盈亏比通常有两个方法:让盈利的头寸盈利更多(让利润奔跑),让亏损的头寸亏损更少(截断亏损)。
5、最大连续亏损(盈利)次数(额度),如果实盘连续亏损次数小于测试,我们应该坚定不移执行策略,如果实盘连续亏损次数大于测试,我们应该警惕系统失效(假性失效)和市场变化的可能性。
6、最大盈利和最大亏损,如果最大盈利和平均盈利相差太大,则应该剔除这次最大盈利,一般不具备再现的可能性,如果最大亏损和平均亏损相差太大,则应重新考量资金管理策略对风险的抵抗能力,一般来说,单比最大亏损不能超过资金的 6%。
7、最大回撤,历史数据测试会低估最大回撤,如果最大回撤过大,系统也是不稳定的,对心态要求极高,是不推荐的。
健康的资金曲线
健康的资金曲线,犹如一次价格上升趋势,在上升的过程中,虽然有回调,但是回调都不是很大,在回调后能突破新高,最大回撤、最大回撤恢复时间均能控制在历史数据范围内。
这样健康的资金曲线,能持续 n 时间,我们就可以姑且认为自己可以稳定盈利了,n 参数与交易频率、系统正期望反馈时间有关,比如一个 15 分钟交易系统,平均每天交易 3 次,系统正期望反馈时间在 1 个月,那么 n 取值在半年,一个 h4 交易系统,平均每月交易 10 次,系统正期望反馈时间在 3 个月,那么 n 取值在一年半。