日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跨期套利模型 2017-2019年白银跨期实盘年化7%-15%策略 策略开发

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨期套利模型 2017-2019年白银跨期实盘年化7%-15%策略 策略开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分享本人2017-2019年白銀跨期實盤年化7%-15%策略.

比較基礎的跨期套利模型,需要注意的重點是:確保雙腿交易的速度以及瘸腿的追單處理。

本模型不涉及交易細節的處理,主要是核心邏輯模塊。

采用白銀品種做跨期主要是基差非常平穩,同時采用眾數對上下軌進行控制。

模型代碼如下

import time import numpy as np from collections import Counter#### class timer():def __init__(self):self._keep_time_list=[]def keep(self,sec):self._keep_time_list.append(time.time())if self._keep_time_list[-1]-self._keep_time_list[0]>=sec:self._keep_time_list = []self._keep_time_list.append(time.time())return 1else:return 0class arbitrage_model():def __init__(self):self._turn_smaller_spread_list=[]self._turn_smaller_spread_basket=[]self._turn_bigger_spread_list=[]self._turn_bigger_spread_basket=[]self._lastprice_list=[]self._mytimer=timer()self._UPdata_time_span=60*5self._turn_smaller_most_spread_list=[]self._turn_bigger_most_spread_list=[]self._min_tick=1#ma runself._ma_turn_bigger_data_dict={}self._ma_turn_smaller_data_dict={}self._min_turn_bigger_data_list=[]self._min_turn_smaller_data_list=[]def run(self,highdata_askprice,highdata_bidprice,data_lastprice,lowdata_askprice,lowdata_bidprice):# signal# turn to smallerself._turn_smaller_spread_list.append(highdata_bidprice - lowdata_askprice)self._turn_smaller_spread_basket.append(highdata_bidprice - lowdata_askprice)# turn to biggerself._turn_bigger_spread_list.append(highdata_askprice - lowdata_bidprice)self._turn_bigger_spread_basket.append(highdata_askprice - lowdata_bidprice)# get quote_stdself._lastprice_list.append(data_lastprice)if len(self._lastprice_list) > 200:quote_std = np.std(self._lastprice_list)del self._lastprice_list[0]else:quote_std = 10if self._mytimer.keep(self._UPdata_time_span):turn_smaller_most_spread = Counter(self._turn_smaller_spread_basket).most_common(1)[0][0]self._turn_smaller_most_spread_list.append(turn_smaller_most_spread)turn_bigger_most_spread = Counter(self._turn_bigger_spread_basket).most_common(1)[0][0]self._turn_bigger_most_spread_list.append(turn_bigger_most_spread)self._turn_smaller_spread_basket = []self._turn_bigger_spread_basket = []if len(self._turn_smaller_most_spread_list) > 12 * 2:del self._turn_smaller_most_spread_list[0]if len(self._turn_bigger_most_spread_list) > 12 * 2:del self._turn_bigger_most_spread_list[0]#signal to smallerif len(self._turn_smaller_most_spread_list)>0 and max(self._turn_smaller_most_spread_list) <= self._turn_smaller_spread_list[-1] and self._turn_smaller_most_spread_list[-1] + 3 * self._min_tick <= self._turn_smaller_spread_list[-1]:signal_smaller=1else:signal_smaller=0#signal to biggerif len(self._turn_bigger_most_spread_list)>0 and self._turn_bigger_spread_list[-1] <= min(self._turn_bigger_most_spread_list) and self._turn_bigger_spread_list[-1] <=self._turn_bigger_most_spread_list[-1] - 3 * self._min_tick:signal_bigger=1else:signal_bigger=0return quote_std,signal_bigger,signal_smallerdef ma_run(self, highdata_askprice, highdata_bidprice, data_lastprice, lowdata_askprice, lowdata_bidprice):#signal#dataself._ma_turn_bigger_data_dict[time.time()]=(highdata_askprice-lowdata_bidprice)self._ma_turn_smaller_data_dict[time.time()]=(highdata_bidprice-lowdata_askprice)# get quote_stdself._lastprice_list.append(data_lastprice)if len(self._lastprice_list) > 200:quote_std = np.std(self._lastprice_list)del self._lastprice_list[0]else:quote_std = 10bigger_keys_list=list(self._ma_turn_bigger_data_dict.keys())#smaller_keys_list=list(self._ma_turn_smaller_data_dict.keys())if bigger_keys_list[-1]-bigger_keys_list[0]>60*1:self._min_turn_bigger_data_list.append(sum(list(self._ma_turn_bigger_data_dict.values()))/len(list(self._ma_turn_bigger_data_dict.values())))self._min_turn_smaller_data_list.append(sum(list(self._ma_turn_smaller_data_dict.values()))/len(list(self._ma_turn_smaller_data_dict.values())))self._ma_turn_bigger_data_dict = {}self._ma_turn_smaller_data_dict = {}signal_bigger=0signal_smaller=0min_span=20if len(self._min_turn_bigger_data_list)>min_span and len(self._min_turn_smaller_data_list)>min_span:if self._min_turn_bigger_data_list[-1]-sum(self._min_turn_bigger_data_list[-(1+min_span):-1])/min_span<-1.5:signal_bigger=1if self._min_turn_smaller_data_list[-1]-sum(self._min_turn_smaller_data_list[-(1+min_span):-1])/min_span>1.5:signal_smaller=1return quote_std,signal_bigger,signal_smaller

總結

以上是生活随笔為你收集整理的跨期套利模型 2017-2019年白银跨期实盘年化7%-15%策略 策略开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。