一、前言
套利有跨期、跨品種、跨市場,有些交易所又稱“價差合約”,比如AP003和AP005,價差合約AP003-AP005的行情就是兩個合約價格相減(價差)產生的價格。
價差套利的本質就是認定兩個相關合約的價格不會偏離太多,當市場發生波動導致價格差擴大或縮小就產生了套利空間,此時買入A合約賣出B合約也就鎖定了風險,當市場回歸正常則產生利潤。
價差合約就是跨期套利的一種,實際上不同品種間、不同市場間都有可能產生價格關聯性,利用這種關聯性的偏移交易就是套利。由於一買一賣風險比單邊小很多,所以深受大家喜愛。
同步套利就是當價格達到某個值后同時發送兩個合約的委托,先后套利是先發送優先腿的委托,成交后再發送第二腿的委托。
實際上同步套利與條件單差不多,都是監控價格達到某個值后發送委托,而先后套利也只是在同步套利基礎上增加了一次委托和成交判斷。
二、同步套利實現
初始化如下
為了區分減號和負號,所以這里用add、sub、mul、div分別來表示加、減、乘、除
由於存在兩個合約,而且兩個合約取的價格可能還不一樣,所以在觸發條件里使用A_、B_前綴來區別兩個合約。
同樣的價格觸發后兩個合約的委托價格也不一樣,所以需要分別設置兩個合約的委托價格。
整體的代碼結構與條件單一致,只是條件觸發后發送的兩個合約的委托而不是一個合約。
class SpreadOrder(object):
#初始化
def __init__()
#發送訂單
def sendOrder(self):
#判斷是否觸發
def handle(self):
三、先后套利
先后套利只是對同步套利做了微小的修改,除了“未觸發”、“完全觸發”之外增加了“已觸發第一腿”這個狀態,
代碼比較簡單,直接看代碼吧
四、回顧
這里只是實現了非常簡單的兩個套利,還有很多工作可以做,比如加入追單、回退、浮動套利等等,以后有精力可以寫寫
因為與條件單類似所以沒啥可說的,建議之前寫的條件單、止盈、止損可以一起看
完整代碼:
https://share.weiyun.com/5IJCQUS