1. 程式人生 > >C#比特幣網格交易策略實現及回測分析-基於OKex交易所

C#比特幣網格交易策略實現及回測分析-基於OKex交易所

網格交易法或者網格交易策略,網上有很多的介紹,這裡是利用C#實現了比特幣網格交易的策略及程式化交易,並利用OKex上的K線資料進行了回測驗證,同時也進行視覺化的K線展示。對於網格交易策略簡單的說就是低買高賣策略,網格的含義是指對買賣區間和買賣倉位的控制手段。比如這裡我有8萬的資金,總網格數定義為4格,每格的區間定義為5%,比特幣的基準價為40000元人民幣。那策略的每格的倉位為20000元(8萬除以4),每下跌5%買入一格,也就是到比特幣跌到38000時買入第一格,買入金額20000元。以此類推跌到36000元時買入第二格,倉位也是20000元,第三格、第四格以此類推。這是買入的策略。對於賣出策略也是嚴格按照每格設定的策略進行,策略是和買入相反,只是定義的賣出價格不是按照每上升一格就賣出的策略,這裡定義每上漲三格才賣出的策略。比如最後一格的買入價為32000,每上漲3格賣出的價格為32000+32000*0.15=36800元。在程式開發中基準價和網格寬度都是靈活可調的。具體倉位及買賣點如下所示: 

格子買入價格格寬5%倉位賣出價格
第一格38000-5%2000043700
第二格36000-10%2000041400
第三格34000-15%2000039100
第四格32000-20%2000036800

整個程式是用C#開發的,除了實現了網格策略的實現及回測程式碼,為了進行策略回測還獲取了OKex上的1分鐘、3分鐘、5分鐘、1天、3天等K線資料。1天的K線資料是從2017年-10月-11日開始的。如圖:

 網格定義和回測主介面是在同一個視窗中,策略定義和生成主要包括資產型別、幣種選擇、移動平均線(可以通過移動平均線選擇基準價)選擇、總倉位、買賣倉位、網格數、網格寬度及止損點(目前沒有做止損控制)等引數項,這裡測試我們選擇的網格總數4格,寬度為0.05(即5%),點選“生成網格”按鈕會生成四條網格策略資料,每條資料主要包含買點價格、賣點價格。如下圖: 


回測功能包括回測資料時間選擇,包括開始時間和結束時間,還包括測的K線資料型別,如1天、30分鐘等,回測結果包括成交次數、盈利總和、盈利百分比、成交列表等資料。成交列表主要包括每條成交的買點價格、買點時間、賣點價格、賣點時間、交易成本(這裡是OKex的買賣各收0.02%的手續費計算的)。這裡我們選擇的回測資料是2017-12-17至2018-4-14時間段,日線的資料作為回測資料,總資金20萬,網格4格,網格寬度3%。回測結果總成交17次,盈利47600,23.8%;當前被套3次,虧損2569,1.2%;去掉虧損回測總盈利:45030.8,22.5%。如下圖: 


K線分析,在K線上視覺化的標示出了網格買點、網格賣點及實際買點和實際賣點,如: