1.1系統設計思想
波動性突破, 本身帶有一定程度自適應市場的特點, 為趨勢跟蹤系統中的上品, 我們再加入時間清倉、 順勢下轎的元素, 在中性的盤整市道中主動退出突破交易, 或在發生第二次波動性突破的時候順勢平倉,這樣就部分解決了利潤回撒的問題, 至于參數, 個人傾向于沒有參數的交易系統模型最好, 最具有未來市場的適應能力, 如果必須要有一兩個參數, 那么以該參數在大幅度變動的測試環境下, 仍然可以盈利為佳。
1.2波動性突破系統的文華財經源碼:
TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE, 1)-HIGH)), ABS (REF(CLOSE, 1)-LOW));
ATR := MA(TR, 10);
DT:=CLOSE>REF(CLOSE, l)+REF(ATR, l)×1.5;
KT:=CLOSEREF(CLOSE, l)+REF(ATR, l)×1.5, 2)=1&&DT:
KT2:=COUNT(CLOSE<REF(CLOSE, 1)-REF(ATR, l)×1.5, 2)=1&&KT:
DT,BPK;
KT,SPK;
CROSS (BARSLAST (DT),N) || DT2, SP;
CROSS (BARSLAST (KT),N) || KT2, BP;
我翻譯到金字塔的代碼如下:
input: N(5, 1, 120, 1);
波幅:= max(max((high-low), abs(ref(close, 1) -high)), abs(ref(close, 1)-low));
ATR : MA(TR, 10), NOAXIS;
D := 0;
if CLOSE > REF(CLOSE, l) then D := 1;
lastATR : REF(ATR, l), NOAXIS;
DT := D + lastATR ×1.5;
K := 0;
if CLOSE < REF(CLOSE, l) then K := 1;
KT := K - lastATR×1.5;
DT2 := count(D + lastATR * 1.5, 2) = 1 and DT;
KT2 := count(K - lastATR * 1.5, 2) = 1 and KT;
if DT then begin // 反手開多,BPK
sellshort(holding < 0, 100%, market);
buy(1, 1, market);
end;
if KT then begin // 反手開空,SPK
sell(holding > 0, 100%, market);
buyShort(1, 1, market);
end;
// 平多(賣平),SP
sell(BARSLAST(DT) > N or DT2, 100%,? market);
// 平空(買平),BP
sellshort(BARSLAST(KT) > N or KT2, 100%, market);
有兩個問題:1. 不知道自己翻譯的對不對;2. 如果轉換的沒問題的話,我在調試過程中發現,lastATR這個值始終是空的,調試器里不顯示,圖上也不顯示,如下兩張圖。
https://github.com/etherCrossroads/img/blob/master/TIM%E6%88%AA%E5%9B%BE20200711230826.png
https://github.com/etherCrossroads/img/blob/master/TIM%E6%88%AA%E5%9B%BE20200711230911.png
?
?
?來源:程序化久久網( www.kzuj.com.cn )