溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Jupyter NoteBook進行IB查詢和交易以及使用算法交易

發(fā)布時間:2021-11-30 16:53:39 來源:億速云 閱讀:192 作者:小新 欄目:編程語言

這篇文章主要介紹如何使用Jupyter NoteBook進行IB查詢和交易以及使用算法交易,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Script_engine的大多操作都是針對main_engine的封裝,類似的邏輯,其他交易相關(guān)App,也可以用類似方法調(diào)用,真的很方便,比起之前調(diào)試來說。其實算法交易調(diào)用也很直接,直接傳入algo setting 的dict就可以。

應(yīng)為Jupyter NoteBook代碼不好貼,我這里又改寫會直接python code。在啟動tws登錄后,可以直接運行。
另外IB接口的返回信息采用一個中wrapper機制,有點類似Spring的反轉(zhuǎn)調(diào)用,可以理解為本地返回方法是被IBapi調(diào)用的寫入。

from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.ib import IbGateway
from time import sleep
# 連接到服務(wù)器
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) #創(chuàng)建行情訂閱,騰訊
req2 = SubscribeRequest("332623976",Exchange.SEHK) #創(chuàng)建行情訂閱,美團
req3 = SubscribeRequest("12087792",Exchange.IDEALPRO) #創(chuàng)建行情訂閱,美團
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)) #返回所有已經(jīng)訂閱的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)
# 按照訂單號查詢委托狀態(tài),這里也可以用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
# 創(chuàng)建算法交易的要執(zhí)行交易內(nèi)容, 這個可以復(fù)制 algo_trading_setting.json的內(nèi)容,這里這里策略是,100秒內(nèi)每隔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查詢和交易以及使用算法交易”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI