中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Jupyter Notebook怎么實現從IB接口歷史數據獲取及寫入數據庫、策略回測和實盤交易

發布時間:2021-12-04 15:35:11 來源:億速云 閱讀:250 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關Jupyter Notebook怎么實現從IB接口歷史數據獲取及寫入數據庫、策略回測和實盤交易,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

剛好有個同學問怎么實現IB盈透歷史數據獲取,和策略回測和實盤交易。想著熟悉vnpy2.0操作,就用Jupyter Notebook都是跑了一邊。VNPY2.0的整體架構設計很有擴展性,而且調用也比起v1.0先進清晰很多,引擎加載調用非常方便。

講講注意點:

  1. IB盈透接口歷史數據大多是要收費訂閱的,如果收費會有報錯信息提示,這里找個免費的作為使用。另外vnpy是按照最大6個月歷史數據設計的。

  2. 數據庫定義有個小坑,我是用mongodb的,在第一次填寫 trader/setting.py中密碼寫錯了,后面在trader/setting.py改發現怎么也改不好;原來當第一次維護后,配置會寫入.vntrader/vt_setting,之后系統只會去.vntrader/vt_setting讀取。去改vt_setting,而不是trader/setting.py。

  3. 使用CtaStrategyApp支持加入新策略,系統會自動輸出json保持策略信息;所以第二次運行代碼時候,會提示已經有了,不是問題。

  4. 我在代碼里面把回測和實盤放在一次,如果直接跑下來可能會報錯,建議跑實盤時候先注釋的回測。

  5. 使用script_engine訂閱歷史數據是是默認從rqdata獲取,vnpy v2.07 IB接口已經提供歷史數據獲取,這里創建HistoryRequest用main_engine來獲取,

為了方便貼出來,改成.py代碼格式,直接跑也沒有問題。

from vnpy.app.script_trader import init_cli_trading
from vnpy.app.script_trader.cli import process_log_event
from vnpy.gateway.ib import IbGateway
from time import sleep
from datetime import datetime
import pandas as pd
# 連接到服務器
setting = {
    "TWS地址": "127.0.0.1",
    "TWS端口": 7497,
    "客戶號":8 #每個鏈接用一個獨立的鏈接號,一個IBAPI支持32個來同時鏈接
}
engine = init_cli_trading([IbGateway]) #返回Script_engine 示例,并且給main_engine注冊了gateway
engine.connect_gateway(setting, "IB") #鏈接
# 查詢資金 - 自動
sleep(10)
print("***查詢資金和持倉***")
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("12087792",Exchange.IDEALPRO) #創建行情訂閱
engine.main_engine.subscribe(req1,"IB")
# 使用script_engine訂閱歷史數據是從rqdata獲取,vnpy v2.07已經提供歷史數據獲取,這里創建HistoryRequest來獲取,
# 查詢如果沒有endtime,默認當前。返回歷史數據輸出到數據庫和csv文件
# 關于api更多信息可以參見 https://interactivebrokers.github.io/tws-api/historical_bars.html
print("***從IB讀取歷史數據, 返回歷史數據輸出到數據庫和csv文件***")
from vnpy.trader.object import HistoryRequest
from vnpy.trader.object import Interval
start = datetime.strptime('20190901', "%Y%m%d")
historyreq = HistoryRequest(
   symbol="12087792",
   exchange=Exchange.IDEALPRO,
   start=start,
   interval=Interval.MINUTE
)
# # 讀取歷史數據,并把歷史數據BarData放入數據庫
bardatalist = engine.main_engine.query_history(historyreq,"IB")
from vnpy.trader.database import database_manager
database_manager.save_bar_data(bardatalist)
# 把歷史數據BarData輸出到csv
pd.DataFrame(bardatalist).to_csv("C:\Project\\"+ str(historyreq.symbol) + ".csv" , index=True, header=True)
print("History data export to CSV")
# # 參考backtesting.ipynb, 使用自帶的雙均線策略回測,10日上穿60日做多,否則反之
print("***從數據庫讀取歷史數據, 進行回測***")
from vnpy.app.cta_strategy.backtesting import BacktestingEngine
from vnpy.app.cta_strategy.strategies.double_ma_strategy import (
   DoubleMaStrategy,
)
btengine = BacktestingEngine() #新建回測引擎
btengine.set_parameters(
    vt_symbol="12087792.IDEALPRO",
    interval="1m",
    start=datetime(2019, 9, 1),
    end=datetime(2019, 10, 5),
    rate = 0,
    slippage=0.00005,
    size=1000,
    pricetick=0.00005,
    capital=1_000_000,
)
btengine.add_strategy(DoubleMaStrategy, {"fast_window":10, "slow_window": 60})
btengine.load_data()
btengine.run_backtesting()
df = btengine.calculate_result()
btengine.calculate_statistics()
btengine.show_chart()
# 給script_engine載入雙均線策略,實盤運行
print("***從數據庫讀取準備數據, 實盤運行***")
# 使用cta交易引擎
from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.cta_strategy.base import EVENT_CTA_LOG
engine.event_engine.register(EVENT_CTA_LOG, process_log_event)
cta_engine = engine.main_engine.add_app(CtaStrategyApp) #加入app
cta_engine.init_engine()
cta_engine.add_strategy("DoubleMaStrategy","DoubleMaStrategy_IB_12087792_v1", "12087792.IDEALPRO",{"fast_window":10, "slow_window": 50})
sleep(10)
cta_engine.init_strategy("DoubleMaStrategy_IB_12087792_v1")
sleep(10)
cta_engine.start_strategy("DoubleMaStrategy_IB_12087792_v1")

以上就是Jupyter Notebook怎么實現從IB接口歷史數據獲取及寫入數據庫、策略回測和實盤交易,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博野县| 墨竹工卡县| 云浮市| 普宁市| 仙居县| 乐至县| 鹿泉市| 临沧市| 抚松县| 察雅县| 乌兰浩特市| 故城县| 鹤峰县| 金堂县| 鄂温| 荔浦县| 泸溪县| 娱乐| 宣化县| 景东| 客服| 嘉黎县| 云龙县| 嘉鱼县| 松溪县| 古田县| 鄂托克旗| 天津市| 宝兴县| 启东市| 青田县| 大姚县| 霍林郭勒市| 安宁市| 石景山区| 清镇市| 肥乡县| 巴楚县| 通榆县| 靖远县| 东山县|