您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用Jupyter NoteBook進行IB查詢和交易以及使用算法交易,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Script_engine的大多操作都是針對main_engine的封裝,類似的邏輯,其他交易相關App,也可以用類似方法調用,真的很方便,比起之前調試來說。其實算法交易調用也很直接,直接傳入algo setting 的dict就可以。
應為Jupyter NoteBook代碼不好貼,我這里又改寫會直接python code。在啟動tws登錄后,可以直接運行。
另外IB接口的返回信息采用一個中wrapper機制,有點類似Spring的反轉調用,可以理解為本地返回方法是被IBapi調用的寫入。
from vnpy.app.script_trader import init_cli_trading from vnpy.gateway.ib import IbGateway from time import sleep # 連接到服務器 setting = { "TWS地址": "127.0.0.1", "TWS端口": 7497, "客戶號":5 #每個鏈接用一個獨立的鏈接號,一個IBAPI支持32個來同時鏈接 } engine = init_cli_trading([IbGateway]) #返回Script_engine 示例,并且給main_engine注冊了gateway engine.connect_gateway(setting, "IB") #鏈接 # 查詢資金 - 自動 sleep(10) print(engine.get_all_accounts(use_df = True)) # 查詢持倉 print(engine.get_all_positions(use_df = True)) # 訂閱行情 from vnpy.trader.constant import Exchange from vnpy.trader.object import SubscribeRequest # 從我測試直接用Script_engine有問題,IB的品種太多,get_all_contracts命令不行,需要指定具體后才可以,這里使用main_engine訂閱 req1 = SubscribeRequest("152791428",Exchange.SEHK) #創建行情訂閱,騰訊 req2 = SubscribeRequest("332623976",Exchange.SEHK) #創建行情訂閱,美團 req3 = SubscribeRequest("12087792",Exchange.IDEALPRO) #創建行情訂閱,美團 engine.main_engine.subscribe(req1,"IB") engine.main_engine.subscribe(req2,"IB") engine.main_engine.subscribe(req3,"IB") # 返回行情 sleep(10) print(engine.get_all_contracts(use_df = True)) #返回所有已經訂閱的contact print(engine.get_contract("152791428.SEHK",use_df = True)) #返回單個訂閱的contact print(engine.get_ticks(["152791428.SEHK","332623976.SEHK"],use_df = True)) #返回訂閱的tick # 委托下單,返回訂單號 from vnpy.trader.constant import OrderType vt_orderid = engine.buy(vt_symbol = "12087792.IDEALPRO",price = 1.20, volume = 50000, order_type = OrderType.LIMIT) print(vt_orderid) # 按照訂單號查詢委托狀態,這里也可以用get_orders, 查詢訂單號隊列 sleep(10) print(engine.get_order(vt_orderid)) # print(engine.get_trades(vt_orderid, use_df= True)) # 再次查詢持倉 print(engine.get_all_positions(use_df = True)) # 使用算法交易引擎 from vnpy.app.algo_trading import AlgoTradingApp engine.main_engine.add_app(AlgoTradingApp) #加入app AlgoInstance = engine.main_engine.get_engine("AlgoTrading") #為了方便,這里直接用返回的AlgoInstance # 創建算法交易的要執行交易內容, 這個可以復制 algo_trading_setting.json的內容,這里這里策略是,100秒內每隔10秒下單一次,每次購買10000 AlgotradingDict1 = { "template_name": "TwapAlgo", "vt_symbol": "12087792.IDEALPRO", "direction": "多", "price": 1.0985, "volume": 10000.0, "time": 100, "interval": 10, "offset": "" } AlgoInstance.start_algo(setting = AlgotradingDict1) # 再次查詢持倉 print(engine.get_all_positions(use_df = True))
以上是“如何使用Jupyter NoteBook進行IB查詢和交易以及使用算法交易”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。