2015年12月10日 星期四

開發商品的交易系統 - 基礎篇 [55]

EasyTrader ArtNo 281
不論我們的交易是作多或作空,市場大多是隨機的,但確實有一個趨勢的組成元素在其中,如果我們想要在市場中獲利,唯一之路是好好的利用這個趨勢分量,將自己的持倉部位放在趨勢的方向。

這並不是說我們應該藉由準確的預測趨勢的開始與結束來達成底部進場與逢高出脫。我們應該做的是緊跟趨勢,直到趨勢轉弱為止。更進一步的說,是當我們從進場開始,若市場走勢順著我們方向的同時,當趨勢越強,我們得到更多的機會取得更大的利潤。

為了讓交易者能在趨勢中進場,M.H. Pee 設計了一個趨勢觸發因子 TTF (Trend Trigger Factor)來協助跟隨在市場中有限的趨勢時段,在上漲趨勢中作多,在下跌趨勢中作空。
TTF 的計算方式來自於 15根K棒週期內的買賣力道

15根K棒週期內的買方力道 BuyPower = Highest(High,15) - Lowest(Low,15)[15+1]

15根K棒週期內的賣方力道 SellPower = Highest(High,15)[15+1] - Lowest(Low,15)

15根K棒週期內的 TTF = ((Buy power – sell power)/(0.5*(Buypower + sell power))) * 100

TTF 的理論
圖一表示市場的價格變化在一定的支撐/壓力範圍內不確定方向的變動,同時買方力道與賣方力道的差距很小


圖二表示市場的價格變化顯示出上漲的型態且維持一段延續的時間,同時買方力道遠大於賣方力道


圖三表示市場的價格變化在下跌的趨勢且維持一段延續的時間,同時買方力道遠小於賣方力道


{指標程式碼}

{PaintBar: Trend Trigger Factor}
inputs: Length(15),UpBand(100),DnBand(-100) ;
variables: BuyPower(0),SellPower(0),TTF(0) ;

BuyPower = Highest( High , Length ) - Lowest( Low ,Length )[Length+1] ;
SellPower = Highest( High , Length )[Length+1] -Lowest( Low , Length ) ;
TTF = ( ( BuyPower - SellPower ) / ( 0.5 * ( BuyPower +SellPower ) ) ) * 100 ;

if TTF > 100 then PlotPaintBar( High, Low , "TTF", Red,black,3 )
else if TTF < -100 then PlotPaintBar( High, Low, "TTF", Green, black,3)
else PlotPaintBar( High, Low, "TTF", Yellow ,black,3) ;

{Indicator: Trend Trigger Factor}
Plot1(TTF , "TTF") ;
Plot2(UpBand, "UB") ;
Plot3(DnBand, "DN") ;


{系統參數與變數} 
input:EntryType(1),ExitType(1);
inputs:NBarL(10),NBarS(10),TradeProfit(0.03),TradeStopLoss(0.025),ATRs_L(14),ATRs_S(12);
vars:IsBalanceDay(False),MP(0),PF(0),PL(0);
input:LenA(15),Avg1(4),Avg2(4),HB(100),LB(-100),HighBar(18),LowBar(4) ;
vars:BuyPower(0),SellPower(0),TTF(0);

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 ;

{計算買方力道}
BuyPower = Highest( High , LenA ) - Lowest( Low , LenA )[LenA+1] ;
{計算賣方力道}
SellPower = Highest( High , LenA )[LenA+1] - Lowest( Low , LenA ) ;

{ 計算趨勢觸發因子 TTF }
if ( BuyPower + SellPower ) <> 0 then TTF = ((BuyPower - SellPower)/( 0.5 * (BuyPower + SellPower))) * 100 ;

{ TTF 與上下界線交叉的元素 }

if EntryType = 1then begin
{ 若買方力道與界線交叉向上 ,則買進作多 }
if MP <> 1 and BuyPower Cross over HB then buy next bar at Highest(High,HighBar) stop;
{ 若賣方力道與均線交叉向下 ,則賣出作空 }
if MP <> -1 and SellPower Cross under LB then sell next bar at Lowest(Low,LowBar) stop;
end;

{ TTF 與均線交叉的元素 }

if EntryType = 2 then begin
{ 若賣方力道與均線交叉向下 ,則買進作多 }
if MP <> 1 and SellPower Cross under Average(SellPower,Avg2) then buy next bar at Highest(High,HighBar) stop;
{ 若買方力道與均線交叉向上 ,則賣出作空 }
if MP <> -1 and BuyPower Cross over Average(BuyPower,Avg1) then sell next bar at Lowest(Low,LowBar) stop;
end;

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 or date = 1150224 then setExitonClose ;

進場方式 1 _ 台指期 30 min K 多空留倉 交易週期 2005/6/30~ 2015/6/30 交易成本 1200


進場方式 2 _ 台指期 30 min K 多空留倉 交易週期 2005/6/30~ 2015/6/30 交易成本 1200


結論:從作者原來的概念在於將 TTF 超過 +/- 100 定義為可能的市場趨勢開啟 ,從另一角度思考的話,TTF 的值小於某一定範圍內振盪是否也表示目前屬於橫向移動式盤整,加以作進一步探討並搭配擺盪指標的超買 &超賣區域進場,也不失為新的盤整操作法。
MagicQS189

7 則留言:

  1. 好棒的TTF指標. 謝謝分享! 感恩.

    回覆刪除
  2. 我每次都很期待你分享不同的策略概念或指標 謝謝!

    回覆刪除
  3. 謝謝 ,我也是希望多找一些不同資料作測試分享 ,與讀者一起成長

    回覆刪除
  4. 請教版主,這個指標適合在短周期的策略上使用嗎?

    回覆刪除
  5. 我自己的測試大概到 15分K還不錯 ,太短的周期在界定買賣力道的部分 ,我會認為大部分時段不明顯 ,但是碰到快市又會很突兀

    回覆刪除