原文出處: http://www.waihui.ru/post/15cafd_486975
日内模型。
类型:日内趋势追踪+反转策略
周期:1分钟、5分钟
主要的思想依据上图为:
根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价(TrendBuy)、观察卖出价(SellCheck)、反转卖出价(RevSell)、反转买入价(RevBuy)、观察买入价(BuyCheck)、突破卖出价(TrendSell)。以此来形成当前交易日盘中交易的触发条件。这里,通过对计算方式的调整。可以调节六个价格间的距离。
交易系统的基本原理如下:
1. 根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价、观察卖出价、反转卖出价、反转买入价、观察买入价、突破卖出价。
以此来形成当前交易日盘中交易的触发条件。这里,通过对计算方式的调整,可以调节六个价格间的距离,进一步改变触发条件。
S1 : 當日內最高價超過SellCeck 且未高過 TrendBuy,盤中價格出現回檔,且進一步跌破 RevSell 的支撐線時,採取逆勢策略,即在 RevSell(反手、新倉)做空;
B1: 當日內最低價低於 BuyCheck 且未低於 TrendSell,盤中價格出現反彈,且進一步超過 RevBuy 的阻力線時,採取逆勢策略,即在RevBuy(反手、新倉)做多;
B2: 在空手的情況下,如果盤中價格超過 TrendBuy,則採取順勢策略,即在該點位做多;
S2: 在空手的情況下,如果盤中價格跌破 TrendSell,則採取順勢策略,即在該點位做空。
3. 設定停損條件。當虧損達到設定值後,平倉。
4. 設定過濾條件。當前一個交易日波幅過小,該交易日不進行交易。
5. 在每日收盤前,對所持部位進行平倉。
这个策略参照国外的经验较适用于股指,在商品上的表现一般。
==============================
我在日盛HTS4000上的實作
Parameter: StartDate(1030101), EndDate(1201231);
parameters:TimeEntry(090500),TimeExit(120500),TimeFlat(132000),
Reverse(1.00),RamgeMin(0.2);
parameters:f1(0.35),f2(0.07),f3(0.25),xdiv(3);
vars:SellCheck(0),BuyCheck(0),RevSell(0),RevBuy(0),TrendBuy(0),
TrendSell(0),DayLow(0),DayHigh(9999),startnow(0),div(0),
Rangefilter(false),MP(0),TradeStopLoss(0),HLrange(0);
if D >= StartDate and D <= EndDate then
MP = MarketPosition ;
TradeStopLoss = Reverse * (OpenD(0)/100)
HLrange = RamgeMin * (OpenD(0)/100)
//print(date,time,OpenD(0),TradeStopLoss,HLrange)
if currentbar=1 then
startnow=0;
end if
div=maxlist(xdiv,1);
//Setup data while daily Market Open
//remark for making HTS bug
/*if date>date[1] then */
startnow=startnow+1;
//Calculate Ref Price box
SellCheck=HighD(1)+f1*(CloseD(1)-LowD(1));
RevSell=((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=SellCheck+f3*(SellCheck-BuyCheck);
TrendSell=BuyCheck-f3*(SellCheck-BuyCheck);
DayHigh = High;
DayLow = Low;
if (HighD(1)-LowD(1)) >= HLrange then
Rangefilter = true
else
Rangefilter = false
end if
//end if
if High > DayHigh then
DayHigh = High
end if
if Low < DayLow then
DayLow = Low;
end if
if time >= TimeEntry and time < TimeExit and startnow>=2 and
Rangefilter and date> entrydate(1) then
if DayHigh >= SellCheck and MP > -1 then
Sell ("Rv S") next bar at RevSell+(DayHigh-SellCheck)/div stop;
end if
if DayLow <= BuyCheck and MP < 1 then
Buy ("Rv B") next bar at RevBuy-(BuyCheck-DayLow)/div stop;
end if
if MP < 0 then
Buy ("CD B") next bar at entryprice(0)+TradeStopLoss stop;
end if
if MP > 0 then
Sell ("CD S")next bar at entryprice(0)-TradeStopLoss stop;
end if
if MP = 0 then
Buy ("TB") next bar at TrendBuy stop;
Sell ("TS") next bar at TrendSell stop;
end if
end if
if time >= Timeflat then
if MP < 0 then
ExitShort("SL S") next bar at entryprice(0)+TradeStopLoss stop ;
end if
if MP > 0 then
ExitLong ("SL B") next bar at entryprice(0)-TradeStopLoss stop ;
end if
ExitShort ("Late SX") next bar at High+1 stop;
ExitLong ("Late LX") next bar at Low-1 stop;
end if
end if
Value99=CurrentContracts;
if Value99 <> Value99[1] then
Value98 = TXT_New(D,T,iff(Value99>Value99[1], High+20, Low-20),"");
end if
TXT_SetString(Value98, iff(Value99>Value99[1], NumToStr(iff(Value99=0,
ExitPrice(0), EntryPrice(0)),0)+"|n","|n" + NumToStr(iff(Value99=0,
ExitPrice(0), EntryPrice(0)),0)));
TXT_SetStyle(Value98,2,iff(Value99>Value99[1],1,0));
TXT_SetColor(Value98, DarkRed);
if date = lastcalcdate and time = LastCalcTime then
FileAppend("h:\JihSunOrderRobot\signal\"+"RBreaker6"+"_"+"MXF"+"_"+NumToStr(Close,0)+"_"+NumToStr(CurrentContracts,0)+"_"+NumToStr(date,0)+"_"+NumToStr(Q_time,0),"")
Filedelete("h:\JihSunOrderRobot\signal\"+"RBreaker6"+"_"+"MXF"+"_"+NumToStr(Close,0)+"_"+NumToStr(CurrentContracts,0)+"_"+NumToStr(date,0)+"_"+NumToStr(Q_time,0))
end if
0 意見 :
張貼留言