EasyTrader NQ_Test 02
參考 國外知名交易系統 R-Breaker 及 內建高低點轉折函數應用
// 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 ;
if MP <> 0 then Begin
PF = EntryPrice*TradeProfit ;
PL = EntryPrice*TradeStopLoss ;
end else begin
PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
end ;
PF = MinList(PF,2500/BigPointValue) ;
PL = MinList(PL,1000/BigPointValue) ;
//計算 R-Break 區間價格
// ******** R-Break Entry ***********
vars:f1(0.4),f2(0.1),f3(0.1),xdiv(4);
var:SellshortCheck(0),BuyCheck(0),RevSellshort(0),RevBuy(0),TrendBuy(0),TrendSellshort(0),div(0),Rangefilter(false);
f1 = FracA/6 ;
f2 = FracB/6 ;
f3 = RatioL/6 ;
xdiv = RatioS ;
div=maxlist(xdiv,1) ;
if date>date[1] then begin
{ Calculate Ref Price box }
SellshortCheck=HighD(1)+f1*(CloseD(1)-LowD(1));
RevSellshort=((1+f2)/2)*(HighD(1)+CloseD(1))-(f2)*LowD(1);
RevBuy=((1+f2)/2)*(LowD(1)+CloseD(1))-(f2)*HighD(1);
BuyCheck=LowD(1)-f1*(HighD(1)-CloseD(1));
TrendBuy=SellshortCheck+f3*(SellshortCheck-BuyCheck);
TrendSellshort=BuyCheck-f3*(SellshortCheck-BuyCheck);
Rangefilter=HighD(1)-LowD(1)>=MaxList((Highband+LowBand)*div,80*jumpPoint);
end;
// ************* Time Set Up *************
TimeOK = (time >= 0900 or time <= 2100) ;
//***************** BuyPrice & ShortPrice Setup *****************
BuyPrice = High+Range*0.5 ;
hortPrice = LowD(0)+OpenD(0)*RatioS/10000 ;
// ********** Main Strategy *********
// ********** Entry Method
//判斷做多做空條件是否成立
// ******** Pivot Entry ***********
vars:LowCondA(false),HighCondA(false),LowCondB(false),HighCondB(false),LeftLen(5),RightLen(5) ;
LeftLen = Maxlist(5,LenA1) ;
RightLen = MaxList(5,LenB1) ;
LowCondA = PivotLowVS(1,Low,LeftLen,RightLen,RightLen+1 ) <> -1 ;
HighCondA = PivotHighVS(1,High,LeftLen,RightLen,RightLen+1 ) <> -1 ;
if TimeOK then begin
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 ;
if MP <> 0 then Begin
PF = EntryPrice*TradeProfit ;
PL = EntryPrice*TradeStopLoss ;
end else begin
PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
end ;
PF = MinList(PF,2500/BigPointValue) ;
PL = MinList(PL,1000/BigPointValue) ;
//計算 R-Break 區間價格
// ******** R-Break Entry ***********
vars:f1(0.4),f2(0.1),f3(0.1),xdiv(4);
var:SellshortCheck(0),BuyCheck(0),RevSellshort(0),RevBuy(0),TrendBuy(0),TrendSellshort(0),div(0),Rangefilter(false);
f1 = FracA/6 ;
f2 = FracB/6 ;
f3 = RatioL/6 ;
xdiv = RatioS ;
div=maxlist(xdiv,1) ;
if date>date[1] then begin
{ Calculate Ref Price box }
SellshortCheck=HighD(1)+f1*(CloseD(1)-LowD(1));
RevSellshort=((1+f2)/2)*(HighD(1)+CloseD(1))-(f2)*LowD(1);
RevBuy=((1+f2)/2)*(LowD(1)+CloseD(1))-(f2)*HighD(1);
BuyCheck=LowD(1)-f1*(HighD(1)-CloseD(1));
TrendBuy=SellshortCheck+f3*(SellshortCheck-BuyCheck);
TrendSellshort=BuyCheck-f3*(SellshortCheck-BuyCheck);
Rangefilter=HighD(1)-LowD(1)>=MaxList((Highband+LowBand)*div,80*jumpPoint);
end;
// ************* Time Set Up *************
TimeOK = (time >= 0900 or time <= 2100) ;
//***************** BuyPrice & ShortPrice Setup *****************
BuyPrice = High+Range*0.5 ;
hortPrice = LowD(0)+OpenD(0)*RatioS/10000 ;
// ********** Main Strategy *********
// ********** Entry Method
//判斷做多做空條件是否成立
// ******** Pivot Entry ***********
vars:LowCondA(false),HighCondA(false),LowCondB(false),HighCondB(false),LeftLen(5),RightLen(5) ;
LeftLen = Maxlist(5,LenA1) ;
RightLen = MaxList(5,LenB1) ;
LowCondA = PivotLowVS(1,Low,LeftLen,RightLen,RightLen+1 ) <> -1 ;
HighCondA = PivotHighVS(1,High,LeftLen,RightLen,RightLen+1 ) <> -1 ;
if TimeOK then begin
// 轉折低條件出現 則收盤價突破設定價位做多
if MP <> 1 and LowCondA and Close < BuyPrice then
Buy ("LE_PivotAT") next bar at BuyPrice stop;
if MP <> 1 and LowCondA and Close < BuyPrice then
Buy ("LE_PivotAT") next bar at BuyPrice stop;
// 轉折高條件出現 則收盤價破設定價位做空
if MP <> -1 and HighCondA and Close > ShortPrice then
SellShort ("SE_PivotAT") next bar at ShortPrice stop;
end ;
//基本停利/移動停損出場
// ************* Base Exit *************
if MP <> 0 then WinPoint = MaxPositionProfit/BigPointValue else WinPoint = 0 ;
if MP > 0 then Sell ("1Trail_PL2_"+NumtoStr(Absvalue(EntryPrice-(HighSinceEntry-MinList((PL+PF)*0.5,PL))),0))
All Contracts next bar at HighSinceEntry-MinList((PL+PF)*0.5,PL) stop ;
if MP > 0 then Sell ("1LPF1_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice+PF limit ;
if MP < 0 then BuytoCover ("1Trail_SL2_"+NumtoStr(Absvalue(EntryPrice-(LowSinceEntry+MinList((PL+PF)*0.5,PL))),0))
All Contracts next bar at LowSinceEntry+MinList((PL+PF)*0.5,PL) stop ;
if MP < 0 then BuytoCover ("1SPF1_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice-PF limit ;
//多單部位獲利小於預期 平倉出場
if MP > 0 and (BarsSinceEntry >= 300/Barinterval and MaxPositionprofit/currentcontracts < 200)
then sell ("WrongEntryL15") next bar at Close stop ;
if MP <> -1 and HighCondA and Close > ShortPrice then
SellShort ("SE_PivotAT") next bar at ShortPrice stop;
end ;
//基本停利/移動停損出場
// ************* Base Exit *************
if MP <> 0 then WinPoint = MaxPositionProfit/BigPointValue else WinPoint = 0 ;
if MP > 0 then Sell ("1Trail_PL2_"+NumtoStr(Absvalue(EntryPrice-(HighSinceEntry-MinList((PL+PF)*0.5,PL))),0))
All Contracts next bar at HighSinceEntry-MinList((PL+PF)*0.5,PL) stop ;
if MP > 0 then Sell ("1LPF1_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice+PF limit ;
if MP < 0 then BuytoCover ("1Trail_SL2_"+NumtoStr(Absvalue(EntryPrice-(LowSinceEntry+MinList((PL+PF)*0.5,PL))),0))
All Contracts next bar at LowSinceEntry+MinList((PL+PF)*0.5,PL) stop ;
if MP < 0 then BuytoCover ("1SPF1_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice-PF limit ;
//多單部位獲利小於預期 平倉出場
if MP > 0 and (BarsSinceEntry >= 300/Barinterval and MaxPositionprofit/currentcontracts < 200)
then sell ("WrongEntryL15") next bar at Close stop ;
//多單部位虧損大於預期 反手做空
if MP > 0 and (BarsSinceEntry <= 300/Barinterval and maxpositionloss/currentcontracts < -700)
then sellshort ("WrongEntryL16") next bar at Close stop ;
// ************* Rev R-Break System Exit *************
if MP > 0 and (BarsSinceEntry <= 300/Barinterval and maxpositionloss/currentcontracts < -700)
then sellshort ("WrongEntryL16") next bar at Close stop ;
// ************* Rev R-Break System Exit *************
// 持有空單 且收盤價大於 R-Break 買價 則突破K棒高點反手做多
if MP < 0 and Close > TrendBuy then Buy ("rSX_RBreak") next bar at High stop;
if MP < 0 and Close > TrendBuy then Buy ("rSX_RBreak") next bar at High stop;
請問策略是用幾分K呢?
回覆刪除1 Hr
刪除