交易系统模型设计思路初探
俗话说的好:思路决定出路,眼界决定境界。作为一名程序化交易爱好者,仅仅依靠已经掌握了模型编写平台的基本语法和函数,是远远不够的。要想编写出一个真正具有实战价值的自动交易系统模型,设计思想的重要性不言而喻,而设计思想实质上是集成了交易理念、交易思路、交易方法甚至包括交易经验在内的一种积累与沉淀,绝非一日之功。为缩短程序化交易爱好者的学习探索之路,解决普通投资者缺乏系统设计思路等问题,本文拟从系统入市、离市等两个方面,尝试讨论交易系统模型的常规设计思路。
【入市设计】
系统模型入市的设计思路,事实上应与投资者的交易风格喜好、交易时间框架密切相关,可以分别是趋势跟踪、震荡交易、套利交易等,近年来甚至也出现了基于基本面分析数据的量化模型,以及带有人工智能性质的神经网络、遗传算法等具备自学习、自适应市场能力的高级交易系统模型。不过,依照笔者的见解,最简单、最实用、最适合普通投资者的交易系统入市设计思路仍然是趋势跟踪,而趋势跟踪的实质就是追涨杀跌或者美其名曰:顺势而为。突破,是趋势跟踪系统设计中最为简洁实用的设计思路,具体应用设计思路可能包括:
⒈通道突破。最着名的此类程式设计代表作为:海龟交易法则与四周规则。其入市信号触发设计为:价格突破最近N根K线的高低点。长期来看,这种设计思路虽然简单,但永远也不会失效或显得过时。事实上,越简单的反而越有效!
⒉均线突破。该设计思路的代表作品有:克罗均线,它由4、9、18等三条均线组成;鳄鱼组线,它由5、8、13等三条移中平均线组成;自适应均线,它由考夫曼博士提出,以市场效率生成弹性浮动参数,以均线拐头为信号触发,而非普通的均线金*、死*,有兴趣的读者可以参考其系统交易专着《精明交易者》。
⒊指标突破。常见的技术分析指标,如MACD、KDJ、RSI、BOLL、SAR、WR、ADX等,均可独立构成一个简单的趋势跟踪系统,当然,是使用系统默认参数,还是使用优化参数;是使用其常规用法,还
是使用创新用法,可能存在仁者见仁、智者见智的分歧。笔者可能更倾向于具有一定技术分析功力的投资者,以自创技术分析指标为最佳,这样可以确保你所使用的交易系统模型的专属性。
⒋形态突破。形态突破,包括K线形态组合突破、经典技术分析形态突破等,K线形态组合的突破,以酒田战法为最经典,着名的红三兵、黑三兵、希望之星等经典K线形态均源于此,共分为酒田战法70型。至于经典的双顶、双底、趋势线突破、横盘突破、头肩顶底、三角形态、楔形、旗形、钻石型、圆弧顶底等技术形态,因普通的模型编写语言较难精确描述而存在一定的设计使用障碍,需要使用转向函数及图形模糊识别技术来克服。
⒌波动性突破。波动性可以定义为:最高价与最低价、当根K线的最高价与昨收盘、当根K线的最低价与昨收盘,这三组价格差额的最大者即该品种的波动性值,波动性既可以进行横向比较品种间的波动性水平,也可以用于纵向判断价格波动的异常,并作为入市信号的触发器。我们可以直接从文华财经内置指标公式中得到如下源码:
MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW))
以此为基础,我们不难得到波动性突破系统的基本设计思路。
⒍时间价格突破。在趋势行情的必经之路,守株待兔,是我们进行突破系统设计的基本思路。而时间、价格突破,从速度、幅度的两维视角预约了趋势行情,堪称突破系统设计的典范。基本设计思路为价格在N时间范围内、上涨或下跌了N个点位。进一步拓展思路后,我们还可以引入周间日、日间时的概念,细化不同时间段的突破标准,以便更好地适应品种个性,此外,我们还可以时间、价格过滤器的方法来实现对趋势行情的确认,以减少价格盘整阶段的假突破现象。
遗憾的是,尽管很多投资者致力于追求日内趋势跟踪交易,以降低隔夜交易风险,并认为不同交易时间框架下理念、方法应具有一致性,但实证研究仍然表明,突破类趋势跟踪系统所应用的交易时间框架越长、越有效。我们有理由相信,任何一个设计简单的突破类趋势跟踪系统,长期跟踪市场日线以上级别的
结果必然是盈利的,当然同时需要承受较大幅度的阶段资金回撤,这是普通投资者难以坚持使用的主要原因,而这并非意味着该趋势跟踪系统失效了。
【离市设计】
⒈止损。止损,是交易系统模型设计中一个不可或缺的元素,资金止损、技术止损,是两种主要的考虑方案,采用两者孰低的方案可能更为科学。一方面,你要确保每笔交易不冒过大的风险,另一方面,你要背靠一个关键的压力、支撑技术位置,采用反向交易信号作为自动止损的依据,则是持续在市的交易系统模型的一个常用止损方法。
⒉止盈。虽然固定点位的止盈、止损,也是系统设计中可以采用的方法,但我们更倾向于兼顾利润保护和放大功能的跟踪止盈或SAR抛物线止盈模式,随着利润的扩大,而不断抬高甚至收紧止盈目标位置,可以在一定程度上起到利润最大化的设计目标。
⒊时间清仓。以时间为因素考虑离场,无论是作为一种辅助离场方法,还是作为一种独立的出市方法,都是一个不错的思路。比如三根K线过后,如果既没有达到止盈位、也没有触及止损位,就主动离场。《幽灵的礼物》中曾经对这种思路有过经典的描述:在市场没有证明你是正确的时候,主动离场。
无论是入市方法,还是离市方法,建议程序化交易爱好者可以将它们都做成独立的模块,像积木一样可以根据需要自由搭配使用,这对于提高系统模型设计效率与可能组合收益,会产生极大的帮助。当然,作为一个完整的交易系统,还需要考虑资金管理与头寸调整的细节,建议大家参考《通向金融王国的自由之路》中的风险百分比法。最后,让我们以一个波动性突破系统的实际例子来回顾一下本文所阐述的系统设计思路。
【波动性突破实盘系统介绍】
系统设计思想:波动性突破,本身带有一定程度自适应市场的特点,为趋势跟踪系统中的上品,我们再加入时间清仓、顺势下轿的元素,在中性的盘整市道中主动退出突破交易,或在发生第二次波动性突破
的时候顺势平仓,这样就部分解决了利润回撤的问题,至于参数,个人倾向于没有参数的交易系统模型最好,最具有未来市场的适应能力,如果必须要有一、两个参数,那么以该参数在大幅度变动的测试环境下,仍然可以盈利为佳。