2014年8月5日 星期二

交易訊號之直覺操作 - 天雷勾動地火 [程式碼]

EasyTrader ArtNo 189
K線組合只有流星線與槌子線運用在分時線圖上顯示的買賣訊號是值得重視的
流星線是帶著上影線很長且實體很小的K線,通常上影線的長度是實體的 3倍以上,而實體是紅或是黑並不是重點。
槌子線是帶著很長下影線且實體很小的K線,通常上影線的長度是實體的 3倍以上,而實體是紅或是黑並不是重點。
這兩種K線出現時,最重要的觀察是影線長度是否大於 20點,如果是大於20點,則當出現流星線後,價格跌破流星線最低點,形成賣出訊號。同時設停損在流星線最高點上方 1~3點位置(如圖);

反之,出現槌子線後,價格突破槌子線最高點,形成買進訊號。同時設停損在槌子線最低點下方 1~3點位置(如圖)

天雷地火必須是價格的極端位置
為什麼稱之為天雷呢?是形容流星線往往位在行情發展中的最高區域出現,且是最高的K線;而地火則是形容槌子線通常位於行情下探過程的最低區域,且是最低的K線。這道定義也是本系統操作最重要的濾網結構,即並非所有的流星或槌子都可以當作買賣訊號,一定要通過濾網的確認,才是天雷地火的操作策略。
在操作上看到流星線或槌子線時,務必要等到收盤跌破最低點或突破最高點,才可以進場下單操作,任何提早進場,都可能產生不必要的虧損。
不管流星或槌子線,影線與實體的比例之間的比例關係一定要是 3:1以上的比例,實體要愈小愈好,表示買賣力道的逆轉愈強。
摘錄 交易訊號之直覺操作-天雷勾動地火篇
測試程式碼
input:EntryType(0),ExitType(5) ;
vars: NBarL(2),NBarS(2),TradeProfit(0.05),TradeStopLoss(0.02),ATRs_L(12.6),ATRs_S(12.8);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);

vars:StarLen(20),UpperRatio(0.75),BigRatioL(2),HammerLen(20),LowerRatio(0.75),BigRatioS(2) ;
Vars:LowPoint(0),SellCond(False),SellStopLoss(0),EntS(0),HighPoint(0),BuyCond(false),BuyStopLoss(0),EntL(0) ;
Vars:HighLimit(0),LowLimit(0),ShadowHigh(false),ShadowLow(false) ;

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 ;

{ 計算流星線的影線條件 }
Condition1 = (High-MaxList(Open,Close)) > 20 ; { 上影線 > 20 }
Condition2 = (High-MaxList(Open,Close)) > UpperRatio*Range) ;  { 影線/實體比例 3:1以上 }
Condition3 = (High = Highest(High,StarLen)) ; { 近期新高 }
ShadowHigh = Condition1 and Condition2 and Condition3 ;

{ 計算槌子線的影線條件 }
Condition4 = ((MinList(Open,Close)-Low) > 20 ; { 下影線 > 20 }
Condition5 = (MinList(Open,Close)-Low) > LowerRatio*Range ; { 影線/實體比例 3:1以上 }
Condition6 = (Low = Lowest(Low,HammerLen)) ; { 近期新低 }
ShadowLow = Condition4 and Condition5 and Condition6 ;

{ 流星線出現,記錄高低點及進場條件設定 }
if  ShadowHigh  then Begin
HighLimit = High ;
LowPoint = Low ;
SellCond = true ;
BuyCond = false ;
SellStopLoss = High+3 ;
end;
{ 條件成立後,又出現新高則條件取消 }
if SellCond and High > HighLimit then SellCond = false ;

{ 槌子線出現,記錄高低點及進場條件設定 }
if  ShadowLow  then Begin
LowLimit = Low ;
HighPoint = High ;
BuyCond = true ;
SellCond = false ;
BuyStopLoss = Low-3 ;
end;
{ 條件成立後,又出現新低則條件取消 }
if BuyCond and Low < LowLimit then  BuyCond = false ;

{ 自己加的 - 此處計算發生流星線或槌子線後, 幾根K棒內未出現買賣訊號時,就不再進場 }
{ K 棒根數的基準為近期區間發生最高/最低點的1/3 長度 例如 21根區間最高點的1/3就是 7 根 ,也就是 7根K棒內要出現買訊 }

EntS = iff(IntPortion(StarLen/3) < 1 ,1 ,IntPortion(StarLen/3))  ;
EntL = iff(IntPortion(HammerLen/3) < 1 ,1 ,IntPortion(HammerLen/3))  ;

if MRO(BuyCond,EntL,1) > -1 and Close > HighPoint  { 收盤要突破高點 }
then Buy next bar at market ;
if MRO(SellCond,EntS,1) > -1 and Close < LowPoint  { 收盤要跌破低點 }
then sell next bar at market ;

{ 進場後取消原條件 ,才不會一出場後又進場 }
if MP[1] <> 1 and MP = 1 then BuyCond = false ;
if MP[1] <> -1 and MP = -1 then SellCond = false ;

{ 原始出場條件與其他常用出場條件 }
if ExitType = 0 then Begin
ExitLong next bar at BuyStopLoss Stop ;
ExitShort next bar at SellStopLoss 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 ExitType = 5 then Begin
{*******************************************************************
Description : ATR Trailing Stop Long Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
{Inputs: ATRs_L(3);}
Variables: PosHigh(0), ATRVal_L(0);

ATRVal_L = AvgTrueRange(10) * ATRs_L;

If BarsSinceEntry = 0 Then PosHigh = High;
If MarketPosition = 1 Then Begin
If High > PosHigh Then PosHigh = High;
ExitLong ("ATR") Next Bar at PosHigh - ATRVal_L Stop;
End else ExitLong ("ATR eb") Next bar at High - ATRVal_L Stop;

{*******************************************************************
Description : ATR Trailing Stop Short Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
{Inputs: ATRs_S(3);}
Variables: PosLow(0), ATRVal_S(0);

ATRVal_S = AvgTrueRange(10) * ATRs_S;

If BarsSinceEntry = 0 Then PosLow = Low;
If MarketPosition = -1 Then Begin
If Low < PosLow Then PosLow = Low;
ExitShort ("ATR_1") Next Bar at PosLow + ATRVal_S Stop;
End else ExitShort ("ATR_1 eb") Next bar at Low + ATRVal_S Stop;
end;

if IsBalanceDay  then setExitonClose ;

以下績效為針對原始概念作了一些調整
1. 除去影線必需大於 20點的限制
2. 影線與實體的比例用參數最佳化方式確認
3. 當流星線與槌子線都發生在近期高點時 ,當根K棒低點被跌破都是賣出訊號
3. 當流星線與槌子線都發生在近期低點時 ,當根K棒高點被突破都是買進訊號

台指期 60 分K 留倉 交易週期 2004/8/2 ~ 2014/7/31 交易成本 1200

台指期 15 分K 留倉 交易週期 2004/8/2 ~ 2014/7/31 交易成本 1200
MagicQS100

沒有留言:

張貼留言