昨天分享的「績效曲線指標化:新高新低標示」的程式碼是 HTS 中 STS 的,而現在的這一篇是基於相同的原理再加以變化,不過這是 MultiCharts 的:把已平倉權益的資料拿來記錄,當平倉權益創新高之後,平倉權益拉回多少程度之後...做個提醒的標示。做什麼用?不管你要要用來給自己提醒從績效創新高後回吐了多少績效當做一個部位提高的時機,或是策略可能有失效風險的警告,就隨你了。
指標的程式碼如下:
Vars:PositionExtend(200000);
Vars:NT(1),NewHigh(False),Equity(0),EquOpen(0),EquityHigh(0),EquityTrailing(0);
Equity= i_ClosedEquity;
EquOpen= i_OpenEquity;
EquityHigh= iff(Equity>=EquityHigh,Equity,EquityHigh);
EquityTrailing= EquityHigh-Equity;
PositionExtend= StdDev(Equity,66*300/Barinterval);
if Equity>=EquityHigh then NewHigh= True;
if NewHigh and EquityTrailing>PositionExtend then begin
NT=NT+1;
NewHigh= False;
end;
Value1= iff(NT<>NT[1],RGB(255,0,0),RGB(255,255,255));
Value2= iff(NT<>NT[1],15,3);
if NT<>NT[1] then
plot1(EquOpen,"Extend",Value1,default,Value2);
plot2(EquOpen,"PositionExtend");
在以上的這一個指標中,我以計算66天內每一根的平倉損益的標準差當做創新高後拉回幅度的門檻(藍字部分),至於你自己想用固定的金額、一段期間的平均什麼的,或是其他什麼數值就各人自己的巧心巧思了。我自己是想做一個績效創新高後拉回的部位水準提高時機的提示。這個指標的效果畫面如下:
至於這樣的程式碼可否引用回"買賣訊號"內,讓下單口數的部位提高或者是調降成為策略的一部分,目前...我思考上感覺會有問題,因為口數的提昇或是減少直接會影響後續損益的權益變化金額,這會回頭影響上面計算"拉回程度"的數值,所以~我現在沒有這樣做。我自己是很想讓部位的提高或是降低也自動化啦。
***** 後續增補 *****
似乎也沒有想像中的難,如果是單口交易的話會容易一點,口數動態的策略比較難。
創新高後拉回500點就加1口或是多加1單位,這個方式應該可以支援原本是單口交易或是口數動態,但是還原成以單口交易做計算的:
Vars:Extend(-500); Vars:Equity(0),EquityHigh(0),LastSize(0),ProfitSum(0),HighReturn(0),NewHigh(False); Equity= i_ClosedEquity; LastSize= iff(currentcontracts=0, 1, currentcontracts); EquityHigh= iff(Equity>=EquityHigh, Equity, EquityHigh); if Equity<>Equity[1] then ProfitSum= ((Equity-Equity[1])/pointvalue)/LastSize[1] ; if Equity>=EquityHigh then begin NewHigh= True; HighReturn=0; end ; if NewHigh and Equity<>Equity[1] then HighReturn= HighReturn + ProfitSum ; if NewHigh and HighReturn < Extend then begin ExtendTimes= ExtendTimes+1; NewHigh= False; end; { N=N*ExtendTimes Buy/SellShort N share next bar .... }順便在畫面上監視一下,目前到底是把部位拉高到幾倍(單位)了~