閃靈交易者策略
(The Ghost Trader Trading Stategy)
在交易中,特別是突破類模型,成功率并不高,若碰上反復的假突破,更是一種災難。那有沒有方法來減少這種情形的發生呢?本文介紹的閃靈交易者策略(The Ghost Trader Trading Stategy)為大家提供了一種方式。
閃靈交易者策略源自于交易者的觀察,一些交易者從自己的交易記錄中發現,若上一次交易是盈利的,那么下一筆交易是虧損的概率比較大。因此在設計策略時,希望能跳過這些我們認為會虧損的交易。具體到策略中,我們將引入模擬交易的概念(這個概念僅指此策略中代碼部分,請勿與金字塔模擬交易混淆), 與之對應的是真實下單模塊。模擬交易始終在運行交易條件。而真實下單模塊直到上一筆模擬交易是虧損的情況下才執行。
本文的例子,將忠于原策略,建立在一個指數移動平均和RSI指標上。默認只考慮一次虧損的情況,周期為日線,運行模式為走完K線(在小周期運行此策略,效果更明顯些)。
開多:9日收盤價指數平均大于等于19日最高價的指數平均并且9日收盤價的RSI指標下穿70。
開空:9日收盤價指數平均小于19日最高價的指數平均并且9日收盤價的RSI指標上穿30。
平多:最新價下穿20日低點。
平空:最新價上穿20日高點。
以上進出場點并不是這個策略的要點,重在如何記錄模擬交易的狀況,在金字塔軟件中,我們將使用全局變量來構建這個部分。具體的見代碼,我會多做些注釋。若您完全理解后,移動止盈止損的代碼也應不在話下。
代碼:
//策略:閃靈交易者系統
//類型:
//版本:1.0
//修訂時間:2012.11.24
//DESIGNED BY ROGARZ
//weibo:http://weibo.com/rogarwahoo
//中間變量
INPUT:N1(9,1,100,1),SS(1,1,100);
VARIABLE:該筆盈虧:=0;模擬持倉:=0,模擬開倉價:=0,模擬平倉價:=0,真實系統下單開關:=0;
LC := REF(CLOSE,1);
RSI:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//RSI指標默認N1為9
9日收盤價指數平均:REF(EMA(CLOSE,9),1);
19日最高價收盤價平均:REF(EMA(HIGH,19),1);
20日高點:=REF(HHV(H,20),1);
20日低點:=REF(LLV(L,20),1);
手數:=SS;
//交易條件
開多條件:=9日收盤價指數平均>=19日最高價收盤價平均 AND REF(RSI,1)<70;
開空條件:=9日收盤價指數平均<19日最高價收盤價平均 AND REF(RSI,1)>30;
平多條件:=C<20日低點;
平空條件:=C>=20日高點;
//交易系統
//模擬交易模塊
IF 開多條件 AND 模擬持倉=0
THEN BEGIN
模擬開倉價:=CLOSE;//記錄開倉價
模擬持倉:=1;//模擬持倉為1
END
IF 平多條件 AND 模擬持倉=1 THEN
BEGIN
模擬平倉價:=CLOSE;//記錄平倉價
該筆盈虧:=模擬平倉價-模擬開倉價;//在模擬交易模塊中我們只需計算上一筆交易是賺還是虧,在這里我只計算盈虧最后的點數
模擬持倉:=0;//將全局變量*模擬持倉*初始化為0
IF 該筆盈虧>0 THEN BEGIN
真實系統下單開關:=0;//0代表模擬交易上一筆是賺錢的。
模擬開倉價:=0;//將全局變量*模擬開倉價*初始化為0
模擬平倉價:=0;//將全局變量*模擬開倉價*初始化為0
END
IF 該筆盈虧<=0 THEN BEGIN
真實系統下單開關:=1;//1代表模擬交易上一筆是虧錢的。
模擬開倉價:=0;//將全局變量*模擬開倉價*初始化為0
模擬平倉價:=0;//將全局變量*模擬平倉價*初始化為0
END
END
IF 開空條件 AND 模擬持倉=0 THEN BEGIN
模擬開倉價:=CLOSE;//記錄開倉價
模擬持倉:=-1;//模擬持倉為-1
END
IF 平空條件 AND 模擬持倉=-1 THEN
BEGIN
模擬平倉價:=CLOSE;//記錄平倉價
該筆盈虧:=模擬開倉價-模擬平倉價;//在模擬交易模塊中我們只需計算上一筆交易是賺還是虧,在這里我只計算盈虧最后的點數
模擬持倉:=0;//將全局變量*模擬持倉*初始化為0
IF 該筆盈虧>0 THEN BEGIN
真實系統下單開關:=0;//0代表模擬交易上一筆是賺錢的。
模擬開倉價:=0;//將全局變量*模擬開倉價*初始化為0
模擬平倉價:=0;//將全局變量*模擬開倉價*初始化為0
END
IF 該筆盈虧<=0 THEN BEGIN
真實系統下單開關:=1;//1代表模擬交易上一筆是虧錢的。
模擬開倉價:=0;//將全局變量*模擬開倉價*初始化為0
模擬平倉價:=0;//將全局變量*模擬開倉價*初始化為0
END
END
//真實下單模塊
平空:SELLSHORT(平空條件 AND HOLDING<0,手數,MARKET);
平多:SELL(平多條件 AND HOLDING>0,手數,MARKET);
開多:BUY(開多條件 AND 真實系統下單開關=1 AND HOLDING=0,手數,MARKET);
開空:BUYSHORT(開空條件 AND 真實系統下單開關=1 AND HOLDING=0,手數,MARKET);
這個策略雖說是一個完整的策略,但個人覺得更像是一個模板。大家理解后,應很容易修改這個模板,任意發揮,默認只計算一次虧損策略的效果并不明顯。若改成比如連虧3次后再交易的情形,交易次數和效果很明顯。
1,請首先看懂這部分代碼。個人認為您懂了,那么連虧三次表達上也沒有問題
[此貼子已經被作者于2014/7/4 16:33:56編輯過]
自己調試下代碼