使用Jupyter NoteBook進行IB查詢和交易,以及使用演算法交易示例
在搞好IB盈透介面後,試了下客戶端交易,但是最終目的還是使用程式化交易。發現vnpy已經提供的Script_engine來支援Jupyter NoteBook 交易的,而且非常方便呼叫。
這裡就用寫了基於VNPY包,用程式碼實現IB盈透下的查詢和交易,和一個TWVP演算法交易。
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))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2659265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jupyter Notebook的使用
- Jupyter Notebook實現從IB介面歷史資料獲取,寫入資料庫,策略回測和實盤交易資料庫
- Jupyter Notebook 中同時使用 Python 和 RPython
- Jupyter Notebook 使用與安裝
- PyCharm使用技巧(五):在PyCharm中使用IPython / Jupyter NotebookPyCharmPython
- Jupyter Notebook介紹、安裝及使用教程
- pycharm中執行jupyter notebookPyCharm
- Jupyter Notebook
- conda 安裝R以及在 Jupyter Notebook中執行 R 程式碼
- 【Jupyter Notebook】jupyter notebook呼叫另一個.ipynb檔案
- Q&Me:越南Facebook Messenger商品交易使用行為調查Messenger
- 如何使用PL/SQL進行分級查詢WPSQL
- 如何使用Java Streams進行資料庫查詢?Java資料庫
- 如何使用Solidity和Hardhat構建你自己的NFT以及NFT交易市場Solid
- 在檔案上使用 SQL 查詢的示例SQL
- 數字貨幣/期貨量化交易系統開發(交易演算法)| 量化交易系統開發原始碼示例演算法原始碼
- 將新建的虛擬環境匯入jupyter notebook中使用
- jupyter notebook 中執行展示控制行的數量
- 認識jupyter notebook 和 Matplotlib的基本用法
- Bit-Wasp/bitcoin-php 的簡單使用:建立錢包 + 進行交易PHP
- Jupyter Notebook入門指南
- jupyter notebook各種操作
- Jupyter Notebook的安裝
- Jupyter Notebook新增Ruby支援
- LangChain SQL介紹以及使用Qwen1.5執行SQL查詢教程LangChainSQL
- 如何使用 Eloquent 在兩個日期之間進行查詢?
- 使用Spring Reactive MongoDB進行自定義更新查詢 -Yuri MednikovSpringReactMongoDB
- 視覺化執行Python的神器Jupyter Notebook視覺化Python
- 如何在指定資料夾下進入jupyter notebook
- java和android app如何使用web3j開發以太坊智慧合約並進行交易JavaAndroidAPPWeb
- 使用 sed 命令查詢和替換檔案中的字串的 16 個示例字串
- Anaconda下安裝Jupyter notebook
- jupyter notebook 刪除指定 kernel
- 搭建jupyter notebook伺服器伺服器
- 為Jupyter Notebook 新增目錄
- jupyter notebook 遠端訪問
- Jupyter notebook快速入門教程
- 淘寶開放平臺交易API - 查詢賣家已賣出的增量交易資料API