예제 #1
0
def main():
    mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi()
    mduserspi = CFtdcMdSpi(mduserapi)
    mduserapi.RegisterFront("tcp://180.168.146.187:10031")
    mduserapi.RegisterSpi(mduserspi)
    mduserapi.Init()
    mduserapi.Join()
예제 #2
0
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()
예제 #3
0
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)
예제 #4
0
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()
예제 #5
0
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()
예제 #6
0
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)
예제 #7
0
 def __init__(self, code, sleeptime, output, df):
     self.mduserapi = mdapi.CThostFtdcMdApi_CreateFtdcMdApi()
     self.thread = Thread(code, sleeptime, output, df, self.mduserapi)