基于Excel的简单机械交易策略2个

rule based mechanic trading简称"基于规则的机械交易系统"在西方很流行,起初是从商品期货交易员那里发展起来的,80年代到现在蓬勃发展,逐步应用到所有可交易的金融产品。一般对冲基金,投资银行交易部都有自己的几套经过统计检验有效的系统,rule被编程后,每天由计算机发出指令,操作成百上千个金融产品,人基本不用干涉,就等着在家数钱了。对感兴趣的同学,这个连接是个不错的起点:http://www.trader1688.com/bb/viewforum.php?f=16

 

rules不一定很复杂,简单的rule经常给出令人意想不到的结果。比如一个较早的著名rule就是:价格突破最近4周最高价就买入。这里给出2个用Excel就可以做的简单rule,基本原理是基于trailing stop(跟踪止损)。

 

跟踪止损,顾名思意,就是跟随股价移动的止损。以买入股票为例,10.0 $买入,初始止损位设在下面7%处,也就是9.3,以后随着股价的波动,把止损位不断抬高(股价显著上涨之后)或者保持不变(股价下跌,或者涨幅不显著),但止损位决不能下降。直到哪天股价跌破止损位,就清仓出局。

 

一般来说,跟踪止损策略适用的前提是股价走的趋势明显,走在上升趋势,或者下降趋势中。当趋势不明显的时候,比如振荡市,就会被反复振荡出局,不断被止损,造成损失。

 

股票技术分析里面的移动平均线,以及SAR指标,都是很著名也有效的trailing stop策略。

 

  

下面给出2个策略:

策略1:rule:以做多为例,股价日涨幅超过某个幅度,就抬高止损,抬高幅度为股价涨幅的一个倍数;否则止损保持不变。

 

见下图:蓝色序列是股票的收盘价格,红色序列是trailing stop(跟踪止损)。 初始的时候,按收盘价买入(buy entry,蓝色序列的最左边的点),止损点设在买入点下面6 (E1中设定的可调参数, 红色序列的最左边的点)。价格只要不跌破trailing stop(红色线),就一直持有;价格涨幅大于4(E3),就把trailing stop提升1.2(E4)的股价涨幅,继续持有。

 

当某天价格跌破红线trailing stop,就卖出,同时可以再进入空头部位(sell entry,放空)Trailing stop放在价格的上面6(E2)处。 只要股价低于红线trailing stop,就一直持有这个空头部位(position);价格跌幅大于4(E3),就把trailing stop往下移动1.2(E4)的股价跌幅。

 

当股价涨上红线,就清掉这个空头部位(cover the short position),同时可以再进入多头部位(enter long position)。如此循环往复。

注解:图中A列是股价,B列是daily returnB3=A3/A2-1),C列是trailing stop

C2=A2*$E$1

C3="=IF(A2>=C2,IF(A3>=C2,IF(B3>=$E$3,C2*(1+B3*$E$4),C2),A3*$E$2),IF(A3<C2,IF(-B3>=$E$3,C2*(1+B3*$E$4),C2),A3*$E$1)) "

C4直到最后就拷贝C3的公式。

E列是可调参数。

 

策略2:rule:进入赌场后,止损价设在股价近期的最高点下面的x%处。

 

这个策略比第一个更加实用和有效。因为原理更简单,假设(assumption)更少,没有太多的参数要优化和设置,所以极其稳健robust。而且也是个非常实用的风险控制工具:不管在哪一点买入后,只要严格按照给出的价格止损,损失一定是小于等于 x%的。

 

一般来说,正常的股价调整,不应该从近期的最高点掉落太多,太多就是趋势要反转了,或者是不能延续下去了。另外,每个人把自己的交易记录整理一下也会发现:损失金额超过一定额度的交易,90%以上都是来自于损失百分比超过x%(我做A股的经验是x%在7%-8%)的交易。因此凡是超过一定幅度的损失,都要及时割掉,壮士断臂才不会造成死亡。

 

 

B3="=IF(A2>=B2,IF(A3>=B2,MAX(B2*$E$1,A3)*$D$1,A3*$D$2),IF(A3<B2,MIN(B2*$E$2,A3)*$D$2, A3*$D$1))" 

D1:买入点(或者近期最高点)以下x%处止损

D2:卖出点(或者近期最低点)以上y%处止损

E1=1/D1

E2=1/D2

一般初始止损x%没有太多争议。近期最高点以下x%的x选取,要考虑的因素:如上分析自己的交易记录、近期股价波动率的统计结果(比如个股波动超过5%是经常的,但是指数的波动大概就只有2%了) 

 

 

 

编写公式要点:首先判断昨天是做多还是做空;其次判断今天股价是大于还是小于昨天的跟踪止损价,以决定是不是止损出局。最后根据今天的股价,和昨天的止损价,计算出今天的止损价。

 

更进一步的,还可以从图上红,蓝线的交叉穿越点,列出entry / exit price,来度量每一笔trade的profit / loss.  一般来说,相邻交叉点的水平间隔越大越好(交易不频繁),垂直距离越大越好(每笔交易获利丰厚)。比如交叉点(long/short signal) 可以用公式找出来:C3=1-SIGN((A3-B3)*(A2-B2)) (见下图中对SP500指数Oct2008-Mar2009交易的副图)

上面的主图是价格和跟踪止损构成的策略2。副图中的每根柱子都对应主图中的入场点,柱子长度表示入场的价格,做多(long entry)的脚下用小柱子区别出来。

 

 

上面这张图上,上面的副图表示每笔交易的profit/loss, 下面的副图是equity curve(股票市值曲线),并用同样的策略2对equity curve进行跟踪止损,也即从近期最高市值跌下来5%,就清仓出来休息几周,只做模拟交易。图上表明,初始投入1000,末期市值1400。 

 

 

策略2.1:策略2中的x%还可以换成N倍的ATR(average true range,一种度量股价近期波动率local volatility的指标)。这样股价波动剧烈的时候止损就离的远些,平静的时候就离的近些。N也可以变化,比如刚入场的时候获利还不多,可以设N=4,随着股价升高,帐面盈利(paper profit, or open profit) 增加,就把N逐步缩小到1,从而锁定利润。 当然,增加了参数,就增加了灵活性,可是以牺牲robust为代价的,即在不同时间,不同市场下的最优参数很可能是不同的。我个人更喜欢robust。

 

有兴趣的同学可以从finance.yahoo下载美国,中国的股票日收盘数据,在Excel里面替换A列,调整E列中的参数,测试这些策略。

 

 

 

 

This entry was posted in 投资技巧. Bookmark the permalink.

4 Responses to 基于Excel的简单机械交易策略2个

  1. Qin says:

    技术分析太复杂了,我现在还是用直觉的。

  2. says:

    不复杂,你花个1,2小时深入了解1,2个指标就好了

  3. Y says:

    google上搜资料搜到这里了,挺好的分析。没想到做trader的也有那么喜欢八卦娱乐的。

  4. Joanna Lee says:

    恩,很适合美股交易,但不知对A股适用否?因为投机>>投资

Leave a comment