文華交易模型策略改編成金字塔方法[金字塔模型]
文華boll模型
MID:MA(CLOSE,N);//求N個周期的收盤價均線,稱為布林通道中軌
TMP2:=STD(CLOSE,M);//求M個周期內的收盤價的標準差
TOP:MID+P*TMP2;//布林通道上軌
BOTTOM:MID-P*TMP2;//布林通道下軌
CROSS(C,BOTTOM),BPK;//當最新價上穿下軌時,做多
CROSS(TOP,C),SPK;//當最新價下穿上軌時,做空
AUTOFILTER;
金字塔模型 簡單改法:
input:n(26,5,300,1),M(26,1,100,1),P(2,1,10,1);//定義參數
MID:MA(CLOSE,N);//求N個周期的收盤價均線,稱為布林通道中軌
TMP2:=STD(CLOSE,M);//求M個周期內的收盤價的標準差
TOP:MID+P*TMP2;//布林通道上軌
BOTTOM:MID-P*TMP2;//布林通道下軌
CROSS(C,BOTTOM),BPK,TFILTER;
CROSS(TOP,C),SPK,TFILTER;
金字塔模型 新交易系統改法:
input:n(26,5,300,1),M(26,1,100,1),P(2,1,10,1);//定義參數
MID:MA(CLOSE,N);//求N個周期的收盤價均線,稱為布林通道中軌
TMP2:=STD(CLOSE,M);//求M個周期內的收盤價的標準差
TOP:MID+P*TMP2;//布林通道上軌
BOTTOM:MID-P*TMP2;//布林通道下軌
if CROSS(C,BOTTOM) and holding<=0 then begin//當收盤價上穿下軌且有空倉或無倉時
sellshort(1,1,market);//平空 第一個1代表100%成立,第二個1代表下單手數(下同)
buy(1,1,market);//開多
end
if CROSS(TOP,C) and holding>=0 then begin //當收盤價下穿上軌且有多倉或無倉時
sell(1,1,market);//平多
buyshort(1,1,market);//開空
end
首先,還是要講這個函數。雖然之前的《簡易文華模型改金字塔方法(一)》解決了初級的代碼轉換的問題。通過實際工作中的交流,發現用戶經簡單轉換后,稍了解下金字塔機制,改用Holding函數來控制,不再使用此函數的非常多,我想通過此貼,讓大家少走彎路。
我們來研究下Autofilter的機制,它實際作用是,當我第一次滿足條件后開倉,之后再滿足條件不在開倉。即用成立條件和持倉來判斷。
我們依然以文華的Boll模型為例:
(這里我們不用cross函數,因為它是一個點.為了更直觀的達到效果,我們用C>bottom ;C<top來替代金叉,死叉)
文華boll模型
MID:MA(CLOSE,N);//求N個周期的收盤價均線,稱為布林通道中軌
TMP2:=STD(CLOSE,M);//求M個周期內的收盤價的標準差
TOP:MID+P*TMP2;//布林通道上軌
BOTTOM:MID-P*TMP2;//布林通道下軌
C>BOTTOM,BPK;//當最新價上穿下軌時,做多
TOP>C,SPK;//當最新價下穿上軌時,做空
AUTOFILTER;
現在我們在金字塔中用Holding函數可改為:
//中間變量
MID:MA(CLOSE,N);//求N個周期的收盤價均線,稱為布林通道中軌
TMP2:=STD(CLOSE,M);//求M個周期內的收盤價的標準差
TOP:MID+P*TMP2;//布林通道上軌
BOTTOM:MID-P*TMP2;//布林通道下軌
手數:=ss;//這個參數 自己定義下
//交易條件
開多平空條件:=C>BOTTOM and holding<=0;//當最新價上穿下軌時,并且持空倉或無倉的情況下,做多
開空平多條件:=TOP>C and holding>=0;//當最新價下穿上軌時 并且持多倉或無倉的情況下,做空
//交易系統
平空:SELLSHORT(開多平空條件,手數,MARKET);
平多:SELL(開空平多條件,手數,MARKET);
開多:BUY(開多平空條件,手數,MARKET);
開空:BUYSHORT(開空平多條件,手數,MARKET);
大家樂于使用holding的原因是,用此函數對于實現復雜的加減倉策略(如:金字塔式加減倉) 就非常方便了。
比如在上面的例子我加入一個加倉條件:
加倉條件:=c>mid and holding=1;//當最新價大于中軌,且持一手多單,加倉
對應加倉的語句:
buy(加倉條件,手數,matket);
Holding函數說明:
得到當前策略虛擬持倉量,多倉返回正數,空倉返回負數,無持倉返回0。
用法:HOLDING
2、BARSBK、BARSBP、BARSSK、BARSSP在金字塔的實現
這些函數金字塔沒有刻意的去做封裝,而是提供了更自由的方式。普通的可通過Barslast(X)函數實現。
復雜的,可通過variable(全局變量)實現。
以barsbk為例:
可以設置一個全局變量variable:a=0;并在代碼最后增加 A:=A+1;
if 開多條件 then begin
buy();
a:=0;
end
……
A:=A+1;
那么如何判斷某根K線是上次開倉到現在的距離呢?
我們來分析下,每根K線都有一個A的值,當開多單后,這個值被重置為0 并在之后重新計算。
那么判斷開多這根K就可以用下列公式來判斷
REF(a,1)>0 and a=0 //上一根K的a值大于0 并且 當根K線的a值等于0.
這種方式能很靈活的與其他各種條件混用。
Variable是金字塔初級用戶必學的一個技巧,掌握它就能很好的實現移動止損等等模塊。相關資料請閱讀金字塔的相關教程,此貼不再贅述。
3、BKPRICE、BPPRICE、SKPRICE、SPPRICE在金字塔的實現。
金字塔對于開平倉價格 只有2個函數 enterprice(上次開倉價)和exitprice(上次平倉價)。
策略若需更靈活的使用,請參考variable(全局變量)的使用。
{別忘了將本網告訴您身邊的朋友,向朋友傳達有用資料,也是一種人情,你朋友會感謝你的。}
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容