EasyTrader NQ_Test 04
布林通道是美國股市分析家約翰•布林根據統計學中的標準差原理設計出來的一種非常簡單實用的技術分析指標。一般而言,股價的運動總是圍繞某一價值中樞(如均線、成本線等)在一定的範圍內變動,布林線指標正是在上述條件的基礎上,引進了“股價通道”的概念,其認為股價通道的寬窄隨著股價波動幅度的大小而變化,而且股價通道又具有變異性,它會隨著股價的變化而自動調整
肯特納通道(KC)是一個移動平均通道,由三條線組合而成(上通道、中通道及下通道)。若股價於邊界出現不沉常的波動,即表示買賣機會。肯特納通道是基於平均真實波幅原理而形成的指標,價格突破帶狀的上軌和下軌時,通常會產生做多或做空的交易信號
// Public Variable
vars:MP(0),PF(0),PL(0),BuyPrice(0),ShortPrice(0),BasePF(600),BasePL(300) ;
vars:BarPass(5),HLRange(0),WinPoint(0),HBarPos(0),LBarPos(0),ExitH(0),ExitL(0),TimeOK(false),EntryExitCond(false),SelectNo(0) ;
vars:jumpPoint(0) ;
jumpPoint = MinMove/PriceScale ;
//****************** Basic Setup ****************************************
MP = MarketPosition ;
PF = 6000/BigPointValue ;
PL = 1500/BigPointValue ;
//計算進場後獲利點數
// ******** Long/Short win/loss point *********
vars:WinPoint_LE(0),LossPoint_LE(0),WinPoint_SE(0),LossPoint_SE(0),PF_Ref(800),SL_Ref(-800) ;
if barssinceentry > 0 then begin
if MP > 0 then begin
WinPoint_LE = HighSinceEntry_N - EntryPrice ;
LossPoint_LE = LowSinceEntry_N - EntryPrice ;
end ;
if MP < 0 then begin
WinPoint_SE = EntryPrice - LowSinceEntry_N ;
LossPoint_SE = EntryPrice - HighSinceEntry_N ;
end ;
end else begin
WinPoint_LE = 0 ;
LossPoint_LE = 0 ;
WinPoint_LE = 0 ;
LossPoint_LE = 0 ;
end ;
//計算五日平均振幅
// ************* 5 Day Avg Range *************
vars:Day5Range(0) ;
Day5Range = ((HighD(1)-LowD(1))+(HighD(2)-LowD(2))+(HighD(3)-LowD(3))+(HighD(4)-LowD(4))+(HighD(5)-LowD(5)))/5 ;
//計算布林通道
// ************ BollingerBand *****************
vars:BBUP(0),BBDN(0),BBRange(0),BBLen(0),DataBase(Close),DataType(1) ;
BBLen = MaxList(LenA2,LenB2) ;
DataType = Mod(BBLen,5)+1 ;
if DataType < 1 or DataType > 5 then DataType = 1 ;
if DataType = 3 then DataBase = Highest(High,BBLen)-Lowest(Low,BBLen) ;
BBUP = BollingerBand(DataBase,BBLen,2) ;
BBDN = BollingerBand(DataBase,BBLen,-2) ;
BBRange = BBUP-BBDN ;
//檢查突破布林通道上下界次數
var:UPBreak(false),DnBreak(false),vStdA(0),vStdB(0),LowBBband(false),Shrink(false),ShrinkUp(false),ShrinkDn(false) ;
UPBreak = Countif(High > BBUP,2) = 2 ;
DnBreak = Countif(Low < BBDN,2) = 2 ;
//計算凱特通道
// ******** Keltner Entry ***********
vars:KeltnerL(0),KeltnerS(0),KAvgL(0),KAvgS(0) ;
KAvgL = Average(TypicalPrice,LenA1) ;
KAvgS = Average(TypicalPrice,LenB1) ;
KeltnerL = KavgL+AvgTrueRange(LenA1)*FracA ;
KeltnerS = KavgS-AvgTrueRange(LenB1)*FracB ;
//**************************************************
if BarNumber = 1 then begin
Buy this bar on Close ;
Sell this bar on Close ;
end ;
// ************* Time Set Up *************
TimeOK = (time >= 0800 or time <= 2000) ;
// ************* Entry/Exit Condition Set Up *************
EntryExitCond = BarsSinceExit(1) > MinList(LenA1,LenB1) ;
//***************** BuyPrice & ShortPrice Setup *****************
BuyPrice = HighW(1) ;
ShortPrice = Minlist(OpenD(0),OpenD(1),OpenD(2))-Range*0.5 ;
// ********** Main Strategy *********
// ********** Entry Method
// ******** BB band Entry ***********
if EntryExitCond then begin
//近期出現連續兩根K突破布林通道上界 則收盤價突破設定價格 做多
if MP <> 1 and MRO(UPBreak,BBLen,1) >-1 and Close < BuyPrice then
Buy ("LE_BBband") next bar at BuyPrice stop ;
//近期出現連續兩根K跌破布林通道下界 則收盤價跌破設定價格 做空
if MP <> -1 and MRO(DnBreak,BBLen,1) >-1 and Close > ShortPrice then
SellShort ("SE_BBband") next bar at ShortPrice stop ;
end ;
// ******** Keltner Entry ***********
if TimeOK then begin
//近期出現最高價突破凱通道上界 則收盤價突破設定價格 做多
if MP <> 1 and MRO(High Cross over KeltnerL,NBarL,1) > 0 and Close < BuyPrice then
Buy ("LE_KeltnerAT") next bar at BuyPrice stop;
//近期出現最低價跌破凱通道下界 則收盤價跌破設定價格 做空
if MP <> -1 and MRO(Low Cross under KeltnerS,NBarS,1) > 0 and Close > ShortPrice then
SellShort ("SE_KeltnerAT") next bar at ShortPrice stop;
end ;
//基本停利及移動停損
// ************* Base Exit *************
if MP > 0 then begin
Sell ("LX_PF5D_"+NumtoStr(PF+Day5RAnge*0.618,0)) next bar at EntryPrice+PF+Day5RAnge*0.618 limit ;
if WinPoint_LE <= PL*1.5 then Sell ("LX_EPL"+NumtoStr(PL,0)) next bar at EntryPrice-PL stop
else if WinPoint_LE <= PF then Sell ("LX_H2PL_"+NumtoStr(PL*2,0)) next bar at HighSinceEntry_N-PL*2 stop
else if WinPoint_LE > PF then Sell ("LX_PF_"+NumtoStr(WinPoint_LE*0.5,0))
next bar at HighSinceEntry_N-WinPoint_LE*0.5 stop ;
end ;
if MP < 0 then begin
BuytoCover ("SX_PF5D_"+NumtoStr(PF+Day5RAnge*0.618,0)) next bar at EntryPrice-PF-Day5RAnge*0.618 limit ;
if WinPoint_SE <= PL*1.5 then BuytoCover ("SX_EPL_"+NumtoStr(PL,0)) next bar at EntryPrice+PL stop
else if WinPoint_SE <= PF then BuytoCover ("SX_L2PL_"+NumtoStr(PL*2,0)) next bar at LowSinceEntry_N+PL*2 stop
else if WinPoint_SE > PF then BuytoCover ("SX_PF_"+NumtoStr(WinPoint_SE*0.5,0))
next bar at LowSinceEntry_N+WinPoint_SE*0.5 stop ;
end ;
小那斯達克 留倉 交易週期 2018/1/1 ~ 2024/12/31 交易成本 USD 60
沒有留言:
張貼留言