def main(): mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() mduserspi = CFtdcMdSpi(mduserapi) mduserapi.RegisterFront("tcp://180.168.146.187:10031") mduserapi.RegisterSpi(mduserspi) mduserapi.Init() mduserapi.Join()
def main(): mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() mduserspi = CFtdcMdSpi(mduserapi) #mduserapi.RegisterFront("tcp://101.230.209.178:53313") '''以下是7*24小时环境''' mduserapi.RegisterFront("tcp://180.168.146.187:10131") mduserapi.RegisterSpi(mduserspi) mduserapi.Init() mduserapi.Join()
def 启动(): while True: #获取合约 while True: try: api=tqsdk.TqApi(auth="[email protected],24729220a") except: continue break 合约=api.query_quotes(ins_class="FUTURE",expired=False) api.close() #建立一个原版行情API实例 mduserapi=mdapi.CThostFtdcMdApi_CreateFtdcMdApi() #建立一个自定义的行情类()的连接实例 red=redis.Redis(db=14) mduserspi=CFtdcMdSpi(mduserapi,red,合约) #为连接实例设置连接地址 mduserapi.RegisterFront(行情地址) mduserapi.RegisterSpi(mduserspi) #启动连接线程 mduserapi.Init() #进行线程阻塞 while True: if time_to_str(time.time())[11:16]=="15:30": mduserapi.Release() 转存(red) while True: time.sleep(10) if time_to_str(time.time())[11:16]=="20:30": break break if time_to_str(time.time())[11:16]=="02:35": mduserapi.Release() while True: time.sleep(10) if time_to_str(time.time())[11:16]=="08:30": break break time.sleep(10)
def main(): app = QtWidgets.QApplication([]) widget = ChartWidget() mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() mduserspi = CFtdcMdSpi(mduserapi, widget) #mduserapi.RegisterFront("tcp://101.230.209.178:53313") '''以下是7*24小时环境''' mduserapi.RegisterFront("tcp://180.168.146.187:10131") mduserapi.RegisterSpi(mduserspi) mduserapi.Init() widget.add_plot("candle") widget.add_item(CandleItem, "candle", "candle") widget.add_cursor() widget.show() app.exec_() mduserapi.Join()
def main(): ###simnow 7x24 h marketFront_simnowx24 = "tcp://180.168.146.187:10031" tradeFront_simnowx24 = "tcp://180.168.146.187:10030" mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() mduserspi = CFtdcMdSpi(mduserapi) mduserapi.RegisterFront(marketFront_simnowx24) ## 测试地址 ##mduserapi.RegisterFront("tcp://180.168.146.187:10010") """mduserapi.RegisterFront("tcp://180.168.146.187:10031")""" ##东吴期货生产地址前置 ###mduserapi.RegisterFront("tcp://180.169.116.99:41213") mduserapi.RegisterSpi(mduserspi) mduserapi.Init() mduserapi.Join()
def 启动行情记录2(symbol_list, list_duration_seconds, 行情类型="TQ", redis_con=None, 天勤连接=None, 通达信连接=None, data_length=2000, 行情地址="tcp://101.230.209.178:53313", md_subscription_name="gaoctp"): 存储tick队列 = queue.Queue() if not redis_con: redis_con = redis.Redis(db=15) while True: 天勤连接 = tqsdk.TqApi(auth="[email protected],24729220a") if 行情类型 == "TQ": 单symbol_dict = set() 需要订阅的CTPsymbol = [] 订阅中的主连合约 = {} 订阅中的主连合约_反向 = {} 订阅中的指数合约 = {} 天勤需要添加的合约 = [] for x in symbol_list: if "KQ.m" in x: 订阅中的主连合约[x] = 天勤连接.get_quote(x).underlying_symbol 需要订阅的CTPsymbol.append(订阅中的主连合约[x]) 天勤需要添加的合约.append(订阅中的主连合约[x]) elif "KQ.i" in x: symbol = x.split("@")[1] 订阅中的指数合约[x] = [ y for y in 天勤连接._data['quotes'] if 天勤连接._data['quotes'][y]["expired"] == False and re.findall("^" + symbol + "[0-9]{3,4}$", y) ] 需要订阅的CTPsymbol += 订阅中的指数合约[x] 天勤需要添加的合约 += 订阅中的指数合约[x] list_duration_seconds.append(86400) else: 需要订阅的CTPsymbol.append(x) 单symbol_dict.add(x) symbol_list = list(set(symbol_list + 天勤需要添加的合约)) 订阅中的主连合约_反向 = {订阅中的主连合约[x]: x for x in 订阅中的主连合约} list_duration_seconds = list(set(list_duration_seconds)) 天勤 = TQ_md_class(symbol_list, list_duration_seconds, 天勤连接, redis_con, data_length, md_subscription_name) #建立一个原版行情API实例 mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() #建立一个自定义的行情类()的连接实例 mduserspi = CFtdcMdSpi(mduserapi, 存储tick队列, 需要订阅的CTPsymbol) #为连接实例设置连接地址 mduserapi.RegisterFront(行情地址) mduserapi.RegisterSpi(mduserspi) #启动连接线程 mduserapi.Init() #进行线程阻塞 单symbol_dict映射 = {x.split('.')[1]: x for x in 需要订阅的CTPsymbol} while True: try: symbol,UpdateTime, UpdateMillisec, TradingDay,ActionDay,LastPrice, Volume, AskPrice1,AskVolume1, BidPrice1,BidVolume1,OpenInterest,\ PreSettlementPrice,PreClosePrice, PreOpenInterest,OpenPrice,HighestPrice,LowestPrice,Turnover,ClosePrice,SettlementPrice,UpperLimitPrice,LowerLimitPrice,BidPrice2,BidVolume2,AskPrice2,AskVolume2,\ BidPrice3,BidVolume3,AskPrice3,AskVolume3,BidPrice4,BidVolume4,AskPrice4,AskVolume4,BidPrice5,BidVolume5,AskPrice5,AskVolume5,AveragePrice=存储tick队列.get(timeout=30) except: 当前时间 = time_to_str(time.time())[11:16] if 当前时间 > "20:30" or "00:00" < 当前时间 < "02:30" or "08:30" < 当前时间 < "15:30": continue else: time.sleep(1) mduserapi.Release() print("哥哥我释放了") break # if time_to_str(time.time())[11:13] in ("16","03") or time_to_str(time.time())[11:16]=="10:11" : # mduserapi.Release() # print("哥哥我释放了2") # # for x in range(1000): # # print(x) # # time.sleep(1) # break if 行情类型 == "TQ": #处理本条data 天勤.updata(单symbol_dict映射[symbol], UpdateTime, UpdateMillisec, TradingDay, ActionDay, LastPrice, Volume, AskPrice1, AskVolume1, BidPrice1, BidVolume1, OpenInterest, PreSettlementPrice, PreClosePrice, PreOpenInterest, OpenPrice, HighestPrice, LowestPrice, Turnover, ClosePrice, SettlementPrice, UpperLimitPrice, LowerLimitPrice, BidPrice2, BidVolume2, AskPrice2, AskVolume2, BidPrice3, BidVolume3, AskPrice3, AskVolume3, BidPrice4, BidVolume4, AskPrice4, AskVolume4, BidPrice5, BidVolume5, AskPrice5, AskVolume5, AveragePrice) #处理主连 if 单symbol_dict映射[symbol] in 订阅中的主连合约_反向: 天勤.updata(订阅中的主连合约_反向[单symbol_dict映射[symbol]], UpdateTime, UpdateMillisec, TradingDay, ActionDay, LastPrice, Volume, AskPrice1, AskVolume1, BidPrice1, BidVolume1, OpenInterest, PreSettlementPrice, PreClosePrice, PreOpenInterest, OpenPrice, HighestPrice, LowestPrice, Turnover, ClosePrice, SettlementPrice, UpperLimitPrice, LowerLimitPrice, BidPrice2, BidVolume2, AskPrice2, AskVolume2, BidPrice3, BidVolume3, AskPrice3, AskVolume3, BidPrice4, BidVolume4, AskPrice4, AskVolume4, BidPrice5, BidVolume5, AskPrice5, AskVolume5, AveragePrice) #如果处理data后,为空列表,change_i_data if 存储tick队列.empty(): time.sleep(0.003) if 存储tick队列.empty(): #print(time_to_str(time.time())) 天勤.change_i_data(订阅中的指数合约) #整体处理后,全部推送 天勤.all_push() else: #print("我错了") pass while True: 当前时间 = time_to_str(time.time())[11:16] if 当前时间 > "20:30" or "00:00" < 当前时间 < "02:30" or "08:30" < 当前时间 < "15:30": break else: time.sleep(1)
def __init__(self, code, sleeptime, output, df): self.mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi() self.thread = Thread(code, sleeptime, output, df, self.mduserapi)