您現在的位置:程序化交易>> 期貨公式>> 金字塔等>> 金字塔模型>>正文內容

【高頻策略】利用掛單價差實現高頻交易的策略[金字塔模型]

相關標簽:

?


策略原理:

高頻交易的種類很多,比如我們常見的跨期套利,通過一個合約的2個相近的月份2個合約,通過價差波動的相關性進行套利,實現穩定盈利的目的。

本文通過另外一種高頻交易模式,即同一個品種的買賣價差來實現盈利。????

以IC00為例,我們通過一個簡單公式在分筆周期上就能出買一和賣一價差每天都會有大量的價差波動,并且從分析上講機會很多,例如:

?測試公式如下:

掛單價差:BIDPRICE - ASKPRICE;?

?

效果圖


圖片點擊可在新窗口打開查看此主題相關圖片如下:qq截圖20150924223702.jpg
圖片點擊可在新窗口打開查看

?

通過上面的效果圖不難看出,只要我們在點差較大時能同時持有多空雙方的2個頭寸,就會像套利一樣鎖定了利潤空間,待價差縮小后就可以實現平倉盈利。

?

利用VBA制作的模型源碼如下:

?

\'訂閱數據,這里范例訂閱IC00合約
Sub APPLICATION_VBAStart()
?marketdata.RegReportNotify "IC00", "ZJ"
?call application.SetTimer(1,500)
End Sub

BuyOrder = 0
SellOrder = 0
HoldOk = 1
ModeStatus = 0 \'0無持倉 1持倉狀態

Sub MARKETDATA_ReportNotify(ReportData)
?\'計算掛單價差
?Diff = ReportData.SellPrice1 - ReportData.BuyPrice1
?If ModeStatus =0 And HoldOk = 1 Then
???? if?Diff >= 5 Then
??????? \'當價差達到5個價位時,觸發交易
??????? \'application.MsgOut "diff"&diff
???????? HoldOk = 0
???????? ModeStatus = 1
???????? \'使用釣魚方式掛單,比現有價格優惠一個變動價位,然后等待市場客戶賣出給你
???BuyOrder = Order.Buy(0,1,ReportData.BuyPrice1+0.2,0,"IC00","ZJ","",0)
???SellOrder = Order.BuyShort(0,1,ReportData.SellPrice1-0.2,0,"IC00","ZJ","",0)
??End If
?End If
?
?If ModeStatus = 1 And HoldOk = 1 Then
???? If Diff <= 0.4 Then
???? ?\'當價差縮回去時,市價平掉倉位
???? ?\'application.MsgOut "diff2"&diff
???????? HoldOk = 0
???? ?ModeStatus = 0
???BuyOrder = Order.Sell(1,1,0,0,"IC00","ZJ","",0)
???SellOrder = Order.SellShort(1,1,0,0,"IC00","ZJ","",0)
??End If
?End If
End Sub

?

\'收到成交回報后對標志位進行處理
Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
?OkThis = 0
?If Status = "Tradeing" Then
?If OrderID = BuyOrder Then
???? OkThis = 1
???? BuyOrder = 0
?End If
?
?If OrderID = SellOrder Then
??? OkThis = 1
??? SellOrder = 0
?End If
?
?If BuyOrder = 0 And SellOrder = 0 And OkThis = 1 Then
??HoldOk = 1
??
?End If
?End If
?
?\'下面的是不成交的追單處理模式
??? if status="Cancelled" and? remaining>0? and Holdok=0 then
????????????? if aspect=0 then???????
????????????? if kaiping=0 then?????????????????
???????????????? BuyOrder = order.Buy(1,remaining,0,0,Code,market,Account,0)??????????????
?????????????? else??????????????????
??????????????? SellOrder = order.sellshort(1,remaining,0,0,code,market,Account,0)
????????????? end if
?????????? end if
????????????? if aspect=1 then
????????????? if kaiping=0 then
???????????????? SellOrder = order.Buyshort(1,remaining,0,0,code,market,Account,0)
?????????????? else?????????????????
????????????????? BuyOrder = order.sell(1,remaining,0,0,code,market,Account,0)
?????????????? end if
?????????? end if
???? end if
?End Sub

?

\'定時器,用于處理掛單的不成交追單,這里不考慮價格是否合適,使用時還請用戶自己更改算法
sub application_timer(id)
??? IF ID =1 THEN
??? for i=0 to order.OrderNum2-1

??? call order.OrderInfo2(i, OrderID, ConSign, Filled, Remaining, Action, OrderType, LmtPrice, Account, Kaiping, Code, Market)
????????? OrdTime=right(Order.OrderInfoTime2(i),8)?
?????????????? aa=Datediff("s",OrdTime,Cdate(time))
????????????? \'application.MsgOut "ordtime="&aa
????????????? \'application.MsgOut "cdsj="&cdsj
????????? if aa-2>=0 then

???????????? \'超過間隔指定的秒數,
?????????? Call Order.CancelOrder(OrderID,account)
????????? end if
???? next
???? end if
END SUB


?

該高頻的模型目前還僅在雛形階段,需要解決如下幾個問題:

1,測試時是根據中金所IC品種的常規手續費進行的,如今平今手續費奇高,所以對IC品種已經不適合,用戶需要找其他交易所的合適品種,適合該高頻模式的品種需要比較大的合約價格,因為只有合約比較大了后才會出現較大掛單價差,另外一個就是該合約的交易量即不是很大也不是很小,很大的交易量勢必導致套利空間縮小,較小的流通性又會導致頻繁的開倉單腿問題存在。

2,由于是釣魚方式開倉掛單,容易出現單腿情況,因此范例代碼未考慮如何去解決單腿問題及單腿后的更多問題,本文僅起到拋磚引玉的作用,需要用戶自行去完善了

?

?

?

?

{別忘了將本網告訴您身邊的朋友,向朋友傳達有用資料,也是一種人情,你朋友會感謝你的。}

www.weistock.com/bbs/TopicOther.asp?t=5&BoardID=10&id=85627

 

有思路,想編寫各種指標公式,交易模型,選股公式,還原公式的朋友

可聯系技術人員 QQ: 262069696  點擊在線交流或微信:cxhjy888 進行 有償收費 編寫!(注:由于人數限制,QQ或微信請選擇方便的一個聯系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)

怎么收費,代編流程等詳情請點擊查閱!

(注:由于人數限制,QQ或微信請選擇方便的一個聯系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)

 


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
  排列五千神机器人软件