使用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 中同時使用 Python 和 RPython
- Telegram使用者可使用TeleX AI進行加密貨幣交易AI加密
- Jupyter Notebook實現從IB介面歷史資料獲取,寫入資料庫,策略回測和實盤交易資料庫
- 使用MDX進行環比查詢
- NHibernate查詢示例合集
- 銀行在IBM區塊鏈上進行跨境交易IBM區塊鏈
- Jupyter Notebook介紹、安裝及使用教程
- PyCharm使用技巧(五):在PyCharm中使用IPython / Jupyter NotebookPyCharmPython
- pycharm中執行jupyter notebookPyCharm
- 使用Excel進行快速模糊查詢的方法Excel
- JPA使用Specification pattern 進行資料查詢
- 讓OData和NHibernate結合進行動態查詢
- 數字貨幣/期貨量化交易系統開發(交易演算法)| 量化交易系統開發原始碼示例演算法原始碼
- 查詢演算法__Fibonacci查詢演算法
- 如何使用Java Streams進行資料庫查詢?Java資料庫
- 如何使用PL/SQL進行分級查詢WPSQL
- Spinach: 使用Spark SQL進行即席查詢 [session]SparkSQLSession
- 使用T-SQL進行活動目錄查詢SQL
- Q&Me:越南Facebook Messenger商品交易使用行為調查Messenger
- 最詳盡使用指南:超快上手Jupyter Notebook
- Python開發環境—— jupyter Notebook 安裝使用Python開發環境
- conda 安裝R以及在 Jupyter Notebook中執行 R 程式碼
- 【Jupyter Notebook】jupyter notebook呼叫另一個.ipynb檔案
- 如何使用Solidity和Hardhat構建你自己的NFT以及NFT交易市場Solid
- Bit-Wasp/bitcoin-php 的簡單使用:建立錢包 + 進行交易PHP
- 在檔案上使用 SQL 查詢的示例SQL
- ogg長交易查詢及增加複製表
- 淘寶開放平臺交易API - 查詢賣家已賣出的增量交易資料API
- jupyter notebook 中執行展示控制行的數量
- 如何使用 Eloquent 在兩個日期之間進行查詢?
- LangChain SQL介紹以及使用Qwen1.5執行SQL查詢教程LangChainSQL
- jupyter notebook各種操作
- Jupyter Notebook入門指南
- Jupyter Notebook的安裝
- Jupyter Notebook簡潔教程
- 如何在指定資料夾下進入jupyter notebook
- 橫截面交易策略:概念與示例