2023年11月28日 星期二

★ 比特幣交易回測篇 [02]

EasyTrader 比特幣測試 02

《金融評論》曾發表過一篇論文,裡面刊載了十年間對二十多種技術型交易系統的測試和研究,最終得出了結論,周規則名列榜首為什麼它如此優秀,就連世界上最頂級的交易員都在使用它?

周規則是由(Richard Donchian)發明的,它是一種追隨趨勢的自動交易系統。最初它以四周的形式出現。以周規則為基礎的交易系統十分簡單,下面以四周規則為例,講述它的使用方法。
四周規則的使用方法:
1、只要價格超出前四周內的最高價,就平掉空頭倉位並做多;
2、只要價格跌破前四周內的最低價,就平掉多頭倉位並做空。

停損可以使用二週的高低點,當然也可以其他方式來實施

根據上述的規則我們可以搭配策略程式產生器做一些變化,將它轉為以下的程式碼並對比特幣作測試

// Public Variable
vars:MP(0),PF(0),PL(0),LotNum(1),BuyPrice(0),ShortPrice(0),BasePF(150),BasePL(100),FilterA(0),FilterB(0) ;
vars:BarPass(5),HLRange(0),WinPoint(0),HBarPos(0),LBarPos(0),ExitH(0),ExitL(0),TimeOK(false),EntryExitCond(false),SelectNo(0) ;

//****************** 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,2700) ;
PL = MinList(PL,1350) ;

//計算近3週高低區間價格
// ************3 Week High or Low *****************
vars:WeekH(High),WeekL(Low),WeekHL(0),WeekHPB(0),WeekLPB(0),Week33(0),Week67(0) ;
WeekH = MaxList(HighW(0),HighW(1),HighW(2)) ;
WeekL = MinList(LowW(0),LowW(1),LowW(2)) ;
WeekHL = WeekH - WeekL ;
Week33 = WeekL+WeekHL*0.33 ;
Week67 = WeekL+WeekHL*0.67 ;
WeekHPB = _BarsLast(High = WeekH) ;
WeekLPB = _BarsLast(Low = WeekL) ;

// ************ for week High/Low box *****************
Vars:WeekLong(5),WeekShort(5),WH(0),WL(0),HLWeek(0),WCount(0),WBox33(0),WBox67(0) ;
WH = 近週高點 ;
WL = 近週低點 ;

// ************* Time Set Up *************
TimeOK = ((time >= 0900 and time <= 1300)) ;

//***************** BuyPrice & ShortPrice Setup *****************
BuyPrice = LowM(0)+(HighM(0)-LowM(0))*0.67 ;
ShortPrice = OpenD(1)-AvgTrueRange(LenB1)*FracB  ;

// ********** Main Strategy *********
// ********** Entry Method

// *************  WeeK high or low Entry*************

   if TimeOK then begin
//連續4根K棒收盤價在近週位階中值上 則突破設定價位做多
      if MP <> 1 and Countif(Close > WeekL+WeekHL*0.5 and Close < WeekL+WeekHL*0.67,4) = 4 and Close < BuyPrice then Buy ("LE_Week067T") LotNum Contracts next bar at BuyPrice stop;

//連續4根K棒收盤價在近週位階中值下 則跌破設定價位做空
      if MP <> -1 and Countif(Close < WeekL+WeekHL*0.5 and Close > WeekL+WeekHL*0.33,4) = 4 and Close > ShortPrice then
         sellshort ("SE_Week067T") LotNum Contracts next bar at ShortPrice stop;
   end ;

   if TimeOK then begin
//手中無多單部位 在近週高點買進做多
      if MP <> 1 then Buy ("LE_WTrade1T") LotNum Contracts next bar at WH Stop ;
//手中無空單部位 在近週低點賣出做空
      if MP <> -1 then SellShort ("SE_WTrade1T") LotNum Contracts next bar at WL Stop ;
   end ;


//基本停利+移動停損出場
// ************* Base Exit *************
if MP > 0 then Sell ("Trail_PL1_"+NumtoStr(Absvalue(EntryPrice-(HighSinceEntry-MinList(PL,PF))),2)) 
   All Contracts next bar at HighSinceEntry-MinList(PL,PF) stop ;
if MP > 0 then Sell ("PF1_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice+PF limit ;
if MP < 0 then BuytoCover ("Trail_PL2_"+NumtoStr(Absvalue(EntryPrice-(LowSinceEntry+MinList(PL,PF))),2)) 
   All Contracts next bar at LowSinceEntry+MinList(PL,PF) stop ;
if MP < 0 then BuytoCover ("PF2_"+NumtoStr(PF,0)) All Contracts next bar at EntryPrice-PF limit ;

比特幣  留倉 交易週期 2017/6/1 ~ 2023 交易成本 交易量*0.1%







沒有留言:

張貼留言