原理說明:如果有 30 根K棒 ,包含80%的K棒數 就是 30 * 80% = 24 根 K棒 ,也就是我們若是取 30根 K棒收盤價由大到小排序 ,那麼第三高的收盤價與第三低的收盤價中間包含的就是 80% 的K棒數,只要價格運動的過程中突破或跌破這個位置就進場,這樣的邏輯可行嗎 ? 當然到底是 80% 好? 還是 N% 好?就來測試看看囉 !
指標程式碼
input:Length(30),Ratio(80),PriceType(1) ;
Vars:Price(Close) ;
{ 選擇不同的價格型態作通道 }
if PriceType = 1 then Price = Close
else if PriceType = 2 then Price = TypicalPrice
else if PriceType = 3 then Price = AvgPrice
else if PriceType = 4 then Price = (High+Low)/2 ;
{ 依回溯 K棒的個數百分比來抓取對應的高/低 值}
Value1 = Round(Length*(100-Ratio)/2/100,0)+1 ;
Value2 = NthHighest(Value1,Price,Length) ;
Value3 = NthLowest(Value1,Price,Length) ;
{ 這裡我們使用了兩個內建函數 NthHighest , NthLowest }
NthHighest(N , Price , Period ) :取得區間第 N 高的價格
NthlLowest(N , Price , Period ) :取得區間第 N 低的價格
{ *******************************************************}
Plot1(Value2,"H%") ;
Plot2(Value3,"L%") ;
Plot3((Value2+Value3)/2,"M%") ;
測試程式碼
input:ExitType(2) ;
inputs:NBarL(28),NBarS(3),TradeProfit(0.05),TradeStopLoss(0.015),ATRs_L(12.7),ATRs_S(4.6);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);
input:Length(30),Ratio(90),PriceType(2) ;
Vars:Price(Close) ;
MP = MarketPosition ;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3
then isBalanceDay = True else isBalanceDay =False ;
PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
if PriceType = 1 then Price = Close
else if PriceType = 2 then Price = TypicalPrice
else if PriceType = 3 then Price = AvgPrice
else if PriceType = 4 then Price = (High+Low)/2 ;
Value1 = Round(Length*(100-Ratio)/2/100,0)+1 ;
Value2 = NthHighest(Value1,Price,Length) ;
Value3 = NthLowest(Value1,Price,Length) ;
{ 簡單多空進場邏輯 }
if MP <> 1 and Close[1] < Value2 then Buy next bar at Value2 stop ;
if MP <> -1 and Close[1] > Value3 then Sell next bar at Value3 stop ;
{ 常用出場邏輯 }
if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;
if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
end;
if ExitType = 3 then Begin
if MP > 0 and BarsSinceEntry=NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry=NBarS then ExitShort next bar at Market ;
end;
if ExitType = 4 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry=NBarL then {Sell } ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry=NBarS then {Buy} ExitShort next bar at Market ;
end;
if IsBalanceDay then setExitonClose ;
台指期 日 K 多空留倉 交易週期 2004/9/30~ 2014/9/30 交易成本 1200
台指期 60 min K 多空留倉 交易週期 2004/9/30~ 2014/9/30 交易成本 1200
加上如意多空網
台指期 30 min K 多空留倉 交易週期 2004/9/30~ 2014/9/30 交易成本 1200
從統計取樣的有效性而言,回溯的K棒數至少要有 25根以上,另外也可以觀察在區間走平時的來回振盪,作低買高賣的策略。