交易系统的选择与种类
编写或挑选一套交易系统时,应该注意一些事项。首先,交易系统必须符合使用者的风格。其次,一套容易了解而有效的系统,其结构越单纯越好。结构越复杂的系统,越可能是针对特定价格资料编写的系统。另外,理想的系统应该适用于不同时间周期与不同的市场。换言之,最好不要挑选只适用特定市场或特定时间周期的系统。一个有效的交易策略,应该具有普遍适用性,否则就大有问题。至于系统绩效(下一章将详细讨论),当然需要有良好的预期,而且非常稳定,潜在亏损也可以接受。
筒单
交易系统应该尽量保持简单。但过度简单不仅不会让系统变得更好,而且可能适得其反。建立系统的过程中,没有经验的交易者经常使用太多的技术指标或变数。这是很常见的错误。 通常最佳的交易系统其结构都不复杂 。大体来说,一个空白信封的背面,就应该容得下所有的交易法则。另外,一般人应该都可以轻易了解交易系统的法则。否则的话,系统的结构就太复杂了。美国有这样一句谚语:“别搞复杂了,傻瓜。”记住它,就没问题了。
目前可供配合运用的技术指标与方法几乎有无限多种,但实际使用中,交易者通常都只偏爱少数几个。我从来不会使用太多技术指标或方法。 我会寻找一些适用于大多数市场的技术指标 ,绝不会因为标新立异而采用一些新奇古怪的指标。事实上, 如果希望成功,资金管理方法的重要性,甚至超过全世界的技术指标 。总之,只要找几个你特别喜欢的技术指标就够了,尽量保持简单。如果交易系统包括 42 种变数,那就太过分了。系统使用的技术指标或参数越多,就越可能出差错。万一出了差错,由于可能出问题的地方太多,很难找到错误所在。系统采用的法则越来越多,就会产生“曲线套入”的问题(换言之,倒果为因,根据实际测试结果来设定法则),这类系统很难进行分析、改造,因为所需要考虑的参数太多了。 为了增加或减少系统信号的有效性,某些人会编写滤网,这方面的工作也不要进行的太过分。换言之,滤网也应该尽量保持简单,否则适用于测试资料的滤网,很可能不适用于实际的市场状况 。相较于那些经过曲线套入的复杂系统,过去已被证明有效的简单系统,将来继续有效的可能性较高。
必须符合个人的交易风格 交易系统必须符合个人的风格与习惯。一套系统可能非常适用于甲,但乙使用起来却总是发生亏损。为什么?因为交易风格不同的缘故,乙未必相信该系统提供的信号。举例来说,某些人偏好在行情突破时进场,这类信号显然不适用于那些偏好使用随机指标的人,因为当时的行情显示超买或超卖。某些人的部位只愿意持有几分钟,另一些人则愿意持有几小时。这完全是个人的交易风格,很难更改。以我个人来说,不管过去如何努力尝试,就是不能成为超短线的交易者。只要部位继续获利,通常我都希望继续持有。我使用的交易系统必须适合采用摆荡指标的系统。至于那些愿意持有较长期部位的人,或许比较愿意接受移动平均系统。某些人只愿意买进,就是不能放空,若是如此,交易系统就不能出现放空信号。
交易系统务必让使用者觉得很自然,使用者必须相信系统提供的信号。为了满足这点,你必须了解自己是哪种类型的交易者,知道自己的优缺点在哪里。你必须自我分析,了解自己想要如何进行交易。你之所以进场交易,是为了追求刺激,或为了赚钱?你是否愿意每个星期只进行一笔交易,如果你知道该笔交易一定赚钱?或者你必须每天进出 50 次?你是否特别喜欢趋势反转、趋势跟踪或突破的交易机会?你是否另有全职工作,不能随时看盘?若是如此,你采用的交易系统必须能够在开盘前或收盘后下单,不能在盘中发出信号。不论你是哪一类型的交易者,所采用的系统都必须让你觉得舒服、自然,而且符合你的交易习惯。
15678下一页了解自己是哪种类型的交易者你是否知道自己是哪种类型的交易者?是适合采用哪种类型的交易系统?为寻找答案,不妨考虑下列问题:※ 你觉得自己需要多久交易一次?※ 你最喜欢哪种时间周期? ※ 你是否比较喜欢顺着趋势发展方向进行交易?※ 你是否喜欢针对突破走势进行交易? ※ 你是否喜欢反向思考,永远都想捕捉趋势反转的机会?※ 你喜欢采用哪种技术指标或价格形态? ※ 你的交易心态是否很积极?或明显讨厌风险?※ 你是否愿意持有隔夜部位? ※ 你是否能够接受走势沉闷的市场或股票?或只能接受快速变动的走势? ※ 你是否很敏感、容易紧张,或者神经质?※ 你是否能够听任一笔交易自然发展? ※ 你是否很在意每次价格跳动?※ 你可以处理规模多大的部位? ※ 你是否想靠交易为生?或只是为了好玩,顺便赚些钱?※ 你知道如何处理亏损部位吗? ※ 你允许自己的判断错误的频率有多高?※ 你的账户净值允许出现多少百分率的亏损? ※ 你的每笔交易可以容忍多少亏损?
只要你能够诚实回答这些问题,就能够了解自己的交易风格以及适合使用哪些交易系统。
不同类型的交易风格与交易系统
交易方法有很多种,每种都可能成功,问题是如何找到个人觉得最自然、最能接受的方法。接下来准备讨论一些交易系统,供各位参考,读者或许可以利用这些系统作为基础或范例,自行编写系统。这些例子都包括 Trade station (简易语言)编写的程序在内。
345678下一页突破系统突破系统可以算是历史最悠久、结构最简单、效果最理想的交易系统之一 。此系统之所以能够有效运作,主要是因为信号发生在趋势开始或趋势重新开动之初。每个趋势或主要走势,都是由先前高点或低点的突破开始,如果你喜爱介入这类行情,就适合采用突破系统。 采用这类系统必须有心理准备,因为突破经常是假突破 。若是如此,你就会买在最高点或放空在最低点。既然如此, 突破系统何以能够赚钱呢?因为只要把握少数有效的突破信号,获利程度通常就很可观,足以弥补多数假信号造成的损失 。耐心的交易者特别适合采用突破系统,因为他们愿意等待突破之后的回调走势,而且在部位获利持续扩大的情况下,愿意继续持有。突破系统的使用者,很多都采用止损单作为进场工具。我不太赞同这种做法,因为突破当时很可能已经处在超买或超卖情况下,最好还是等待行情回调再考虑进场。我本身是采用一套系统来寻找符合突破条件的市场,然后在较短时间周期上,运用另一套系统来捕捉回调走势的进场点,从而提高交易的胜算。
最简单的突破系统,可以把进场信号设定为价格穿越最近 X 期的最高价(或最低价)。至于部位的出场或止损,留待本章稍后讨论。现在让我们先处理进场信号。
Trade station 的使用者,可以把买进信号设定如下: 翻译:
Input : Length ( 10 ) If Close > High( High , Length )〔 l 〕 Then Buy on Close 输入变数:长度( 10 ) 如果收盘>最高价(盘中高价,长度)〔 1 〕 则在收盘买进
如果收盘价高于从前一期起算的最近 10 期(长度)最高价,则买进。( 译者注:所谓“收盘”是指线形本身的收盘价,不是每天收盘价。如果采用 5 分钟走势图,每 5 分钟就有一个收盘价。 )
“输人变数:长度( 10 ) ”这让你很容易调整最高价的回顾期间长度。一套系统的所有输人变数都摆在最顶端。〔 1 〕 是指期间长度是由前一期起算,不是由当期起算。由于在收盘之前,你不能确定当期的最高价究竟是多少,所以不能把当期最高价考虑在信号设定内。
如果你希望在当期收盘之前就买进,则可以采用:
If High > High ( High , Length )〔 1 〕 Then Buy 如果收盘>最高价(盘中高价,长度)〔 1 〕 则买进
为了避免被假突破欺骗而造成信号反复,可以在系统内加人滤网作为缓冲。这有很多处理方式。就目前考虑的例子来说,第一种方法是把最近 10 期最高价加上几点。换言之,唯有当价格高于最近 10 期最高价的点数超过特定程度之后,才接受买进信号:
If C >High( H,10 )〔 l 〕+ 5 Points Then Buy on C 如果收盘>最高价(盘中高价,长度)〔 1 〕+ 5 点则在收盘买进
345678下一页你也可以利用价格波动率作为滤网。价格波动程度会随着行情或市场而变动,如果价格波动转剧,突破的确定就必须更谨慎。突破系统内,你可以加上 1 个标准差的滤网,来过滤一些偶发性的突破走势。对于买进信号,标准差缓冲可以加在最近 X 期最高价。你可以把这个条件直接设定在信号上,也可以另外考虑。我的做法如下:Buffer = Stedev ( Close , 10 )〔 1 〕 If C>High(H,10 )〔 l 〕+ Buffer Then Buy on C 缓冲=标准差(收盘价, 10 )〔 1 〕 如果收盘>最高价(盘中高价,长度)〔 1 〕 +缓冲则在收盘买进
换言之,缓冲定义为当期之前最近 10 期收盘价的 1 个标准差。另外,我们也可以考虑采用移动平均突破系统,缓冲则设定如下:如果收盘价连续处在 35 期移动平均之上 2 天,则买进。这也可以确保不会只是 1 天行情。对于这类的缓冲,你也可以采用 3 天、 4 天或任何期间。
If Close > Average ( Close , 35 ) And Close 〔 1 〕 > Average ( Close , 35 ) [ l 〕 Then Buy 如果收盘价>平均值(收盘, 35 ) ,而且收盘〔 1 〕>平均(收盘, 35 ) 〔 1 〕 ,则买进
换言之,如果当期收盘价大于当期起算的 35 期收盘价平均值,而且前一期收盘价大于前一期起算的 35 期收盘价平均值,则买进。 此处或许还需要考虑另一个条件:成交量明显扩大。如果交易系统的信号条件不止一个,就必须把它们结合起来。例如:
Inputs : Length(10) , Lengthv ( 5 ) Condition1=High > Highest ( High , Length )〔 l 〕 Condition2=Volume>(Average ( Volume , Lengthv ) * 1.25 ) If Conditionl And Condition2 Then Buy On Closer 输入变数 : 长度( 10 ) ,长度 V ( 5 ) 条件 1 = 盘中高价>最高价(盘中高价,长度)〔 1 〕 条件 2 = 成交量> { 平均值(成交量,长度 V ) * 1.253 } 如果条件 1 与条件 2 都成立,则收盘买进
第一个条件也就是稍早提到的突破条件,换言之,价格突破最近 10 期的最高价。第 2 个条件则是成交量构成的滤网,当期成交量超过最近 5 期平均成交量的 1.25 倍。所以,如果成交量没有明显放大,即使价格发生突破,交易系统也不会出现买进信号。
某些突破系统需要一些特殊价格形态的配合,如:通道、趋势线、双重顶等,这些形态很难纳人电脑程序。对于这类系统,恐怕必须直接采用走势图来判断信号。虽然不能编写为电脑程序,但毕竟有一组明确的交易法则,所以也是交易系统。
345678下一页趋势跟踪系统 趋势跟踪交易方法,主要采用移动平均与趋势线。由于趋势线很难纳人电脑程序,所以趋势跟踪系统最好采用移动平均。如果想配合价格形态运用,恐怕就必须运用视觉交易系统。如同先前讨论的突破系统一样, 依靠趋势跟踪系统建立的部位,持有时间越久,绩效通常也越理想。如果行情来回摆荡,趋势跟踪系统就非常不适用。为了避免信号反复,最好采用较长期的移动均线 。不过,有利就有弊。长期均线虽然可以避免信号反复,但也同时会造成信号不够及时的问题,当系统发出信号时,行情可能已经发展一大段了。所以,究竟如何在长期与短期均线之间掌握,这是交易者必须自己决定的。另外,请注意,移动平均本身就属于落后指标。不论涨势或跌势,唯有行情发展一段时间之后,既有趋势才会慢慢反映在移动平均。换言之,移动平均反映的趋势,是发生在稍早之前。任何系统只要采用移动平均,信号就会落后。但只要趋势足够强劲,这类系统仍然能够捕捉大部分的行情。
最基本的移动平均系统,当属两条平均线构成的穿越系统。如果短期均线向上穿越长期均线,则买进。
Input : Length1( 10 ) , Length2( 35 ) If Average ( Close , Length1) Cross Over Average ( Close , Length2) Then Buy On Close 输入变数:长度 1 ( 10 ) ,长度 2 ( 35 ) 如果平均数(收盘,长度 l )向上穿越 平均值(收盘,长度 2 ) ,则收盘价买进
10 期均线向上穿越 35 期均线,代表买进信号。虽然信号发生在当期结束,但可以在下一期开盘时采取行动,因为在当期还没有收盘之前,无法十分确定包含当期收盘价在内的移动平均数值。有时移动平均看起来似乎会穿越,但临收盘前可能突然发生逆转。你也可以对其稍微改变,利用前一期资料而在当期开盘买进:
Input : Length1( 10 ) , Length2( 35 ) If Average ( Close , Length1) 〔 l 〕 Cross Over Average ( Close , Length2) Then Buy On Open 输入变数:长度 1 ( 10 ) ,长度 2 ( 35 ) 如果平均数(收盘,长度 l )〔 l 〕向上穿越 平均值(收盘,长度 2 ) 〔 l 〕 ,则开盘买进
系统还可以设定另一个条件,规定只能顺着 50 期或 200 期均线的变动方向进行交易,使得部位不至于违背主要趋势。至于移动平均的变动方向,则可以比较目前起算的 50 期均线与 10 之前起算移动平均 :
Input:BarsBack(10) Condition1=Average(C , 50)>Average(C , 50) 〔 BarsBack 〕 输入变数 : 数期前 (10) 条件 1= 平均数 ( 收盘, 50)> 平均值 ( 收盘, 50) 〔数期前〕
345678下一页除此之外,你可能还希望买进信号发生时,价格不要远离移动平均,否则就有追价之嫌。就我个人来说,我会要求当时价格与移动平均之间的距离,不得超过 1 平均真实区间 ; 除了平均真实区间之外,当然也可以采用标准差或点数。以下利用 35 期均线来说明 :Input:Length2(35) , ATRlen(10) Condition2=[C-Average(C , Length2)]<ATR[ATRlen(10)] 输入变数 : 长度 2 (35), ATR 长度 (10) 条件 2=[ 收盘一平均数 ( 收盘,长度 2)]< 平均真实区间 [ATR 长度 (10)]
关于移动平均在趋势跟踪系统内的运用,各种可能性都有,此处只提供几个例子供读者参考。
摆荡指标为基础的交易系统 不论如何强调趋势跟踪交易的重要性,但有些人就是想要猜测底部或头部。对于这些逆势交易者,以摆荡指标为基础的交易系统或许十分有用。如果行情处在盘整区间,在支撑与压力之间来回游走,最适合运用摆荡指标系统在超卖区买进,在超买区卖出,尤其是短线交易。如果你希望永远留在市场内,也适合采用摆荡指标为基础的交易系统。关于如何运用摆荡指标结构电脑化系统,可能性虽然很多,但摆荡指标的最佳信号—价格与指标之间的背离—却很难编写为电脑程序。通常,背离现象都必须在走势图上通过视觉判断。可是,除此之外,我们可以运用很多方式编写摆荡指标的电脑化系统,以下准备讨论一些可能性。 首先,让我们讨论随机指标的例子 : 如果慢速 K 线向上穿越慢速 D 线,则买进。
Input:Length(14) If Slowk(Length)Crosses Above SlowD(Length)Then Buy On Close 输入变数 : 长度 (14) 如果慢速 K 线 ( 长度 ) 向上穿越慢速 D 线 ( 长度 ) ,则收盘买进
另外,还可以规定,当穿越信号发生时,慢速 K 线与慢速 D 线都必须处在超买区 ( 适买区域 ) 。穿越信号发生时,由于慢速 K 线必定高于慢速 D 线,所以只需要规定慢速 D 线的读数限制。
Tnput:Length(14) , BuyZone(30) If Slowk(Length)>S1owD(Length)and S1owD(Length)Crosses Above BuyZone Then Buy On Close 输入变数 : 长度 (14) ,适买区域 (30) 如果慢速 K 线 ( 长度 )> 慢速 D 线 ( 长度 ) 而且慢速 D 线 ( 长度 ) 向上穿越适买区域,则收盘买进
我们也可以利用 RSI 结构类似的系统 :
Input:RSILen(10) , BuyZone(30) If RSI(Close , RSILen)Crosses Over BuyZone Then Buy On Close 输入变数 :RSI 长度 (10) ,适买区域 (30) 如果 RSI (收盘, RSI 长度)向上穿越适买区域,则收盘买进
345678下一页交易者可以根据自己的观点设定适买区域。如果你认为 RSI 只要超过 50 就可以规定买进信号发生时的指标读数不得超过买线:Input : SellZone ( 70 ) Condition1 = SlowD ( Length ) < SellZone 输入变数:适卖区域( 70 ) 条件 1 = 慢速 D 线(长度)<适卖区域
最后,我准备讨论一个适用于强劲趋势的系统。换言之,买进信号发生时,机指标处于超买区。虽然超买区通常不适合买进,但在不同市场状况下(大多头行情),随机指标很可能长期停留在超买区。此处的买进信号准备采用另一个技术指标 ADX (平均趋向指数)。当 ADX 显示强劲的涨势,而且随机指标超过某读数,则买进。
If ADX ( 10 ) > 30 , And SlowD ( 14 ) > 85 , Then Buy On Close 如果 ADX ( 10 ) > 30 ,而且慢速 D 线( 14 ) > 85 ,则收盘买进
我们稍后会详细讨论出场策略,但目前这个例子要规定,只要随机指标读数小于 70 ,就结束多头部位,因为强劲趋势已有软弱的迹象。同样,此处只讨论随机指标的少数运用例子。读者不妨回头翻阅第 7 章,或许可以得到一些结构交易系统的新点子。
根据市况进行调整交易者必须保持弹性,根据市场状况调整策略。 震荡剧烈的市场,所用的交易系统通常不同于趋势明显的行情。如果我看到市场震荡剧烈,通常都会在场外观望,或者采用随机指标为基础的系统,绝对不会用移动平均系统。这种情况下,尤其要避免采用突破系统。 我不会在高价附近买进,反而会在此寻找放空机会。 如果市场趋势很明显,我就会采用趋势跟踪指标,只利用摆荡指标明确趋势,或等待回调走势。这类市场状况下,我不会猜测价格头部,只会利用摆荡指标寻找超卖区的买进机会 。
平均趋向指数( ADX )往往可以协助你判断市场趋势的明确程度。如果 ADX 读数低于 20 ,你可能采用某套系统;如果 ADx 高于 30 ,则采用另一套系统。
程序可以编写如下: If ADX (Length ) > 30 , Then Trending Market System Else If ADX ( Length ) < 20 , Then Choppy Market System Else ; Middle Ground System
翻译: 如果 ADX (长度) > 30 ,则采用趋势跟踪系统 如果 ADX (长度) < 20 ,则采用行情震荡系统;否则就采用中间性质系统
345678下一页止损与出场除非设定止损(停止)与出场参数,否则交易系统算不上完整 。 在整个交易过程中,出场的重要性,最起码也与进场相同。 只提供进场信号的交易系统,就像初学者第一次在陡峭的斜坡滑雪,刚开始,你觉得很快乐,但可能要撞墙才能停下来。绝对不好玩,请相信我。获利是在出场时才结算,所以不要忽略出场的重要性。 我的交易系统往往也有出场设定,但实际上大多在另一个时间周期上通过视觉方法决定出场时机。某些情况下,在出场信号发生之前,由于没有发生预期中的走势,我已经决定结束部位。你没有必要流失部分的获利,也没有必要被止损出场。一笔交易只要不再有效,就出场。如果稍后又出现转机,到时候再进场,现在没有必要冒险 。停止反转系统或许是设定出场策略最简单的交易系统。换言之,只要某些条件成立,预设的止损单就生效,不但结束既有部位,同时也建立反向部位。根据这类系统,你永远会停留在市场内,或是持有多头部位。可是,这种系统有一个问题:在短线使用上,你可能会逆势操作;换言之,部位方向与市场主要趋势不同。过去我经常采用停止反转系统,但现在如果碰到逆势信号,我通常都留在场外。
止损 我个人采用的每个系统,都采用标准化的止损。 只要行情偏离进场点达两个标准差或以上,我就认赔出场 。
多头部位出场,距离收盘进场[标准差(收盘, 10 )]〔 1 〕则止损。
收盘进场是指当初进场线形的收盘价。采用这类止损,你必须定义进场信号。下面例子把进场信号定义为:
如果慢速 K 线(长度)向上穿越慢速 D 线(长度),则在收盘买进。
止损也可以设定为价格跌破移动平均达某个缓冲距离:
如果收盘<〔 平均值(收盘,长度 l ) - 缓冲〕 ,则多头部位出场。
或者当价格跌破最近 5 天的低点,则止损:
如果收盘<最低价(盘中低价, 5 )〔 1 〕 ,则多头部位出场。
出场 除了停止 ---- 反转系统之外,另一种常见的出场方法,是在特定线形数量之后出场。
当随机指标进入超买区,则出场;或者,当行情远离趋势线或移动平均,则出场。
一旦价格与移动平均之间的距离拉大到 5 个标准差,系统就产生出场信号,因为意味着涨势已经过度延伸,终究会拉回整理。此处只讨论一些可能性,读者应该自行测试,寻找自己最适用的交易法则。你也可以设定一组以上的出场或止损法则,只要有任何一组条件成立,就出场。
多套系统 你没有必要只采用一套系统。某些人同时运用多套系统在特定股票或商品上。他们可能采用 5 套系统,如果每套系统都发出相同信号,就建立 5 个相同部位。如果信号彼此冲突,经过抵消之后,可能只建立一个部位。这是相当不错的方法,因为某些系统特别适用于震荡行情,另一些则适用于趋势明确的市场。对于每种可能发生的市场状况,都有一种特别适用的系统;那么不论市场状况如何,你都可以应对。 如果很多系统都发出类似的信号,通常意味着交易绩效将很好。这种情况下,应该采纳所有的信号,部位规模也会扩大。
345678- 上一篇:系统性交易与主观性判断
- 下一篇:用交易系统进行交易