全檔案:從 0.0.1 到 6.1.5 的架構(gòu)變遷與升級路線)
金融科技【免費(fèi)下載鏈接】rqalphaA extendable, replaceable Python algorithmic backtest trading framework supporting multiple securities項(xiàng)目地址https://gitcode.com/gh_mirrors/rq/rqalpha點(diǎn)擊查看免費(fèi)下載本文以倉庫 docs/source/history.rst 所包含的完整 CHANGELOG.rst 為骨架系統(tǒng)梳理 RQAlpha 從 0.0.1 到 6.1.5 的版本演進(jìn)史合約時(shí)序化架構(gòu)變革、多市場重構(gòu)、撮合體系成型、Mod 機(jī)制確立等關(guān)鍵節(jié)點(diǎn)并結(jié)合倉庫源碼與配置給出可驗(yàn)證的實(shí)現(xiàn)依據(jù)。讀者讀完后既能按版本號快速定位歷史功能與不兼容改動(dòng)也能理解這些演進(jìn)的底層邏輯為策略升級、Mod 開發(fā)與二次擴(kuò)展提供可直接落地的遷移清單。一、這份歷史檔案的構(gòu)成history.rst 與 CHANGELOG.rst在 RQAlpha 的文檔體系中docs/source/history.rst 本身只是一個(gè)輕量入口其正文只有三行.. _history: .. include:: ../../CHANGELOG.rst也就是說文檔站的歷史版本頁面通過 Sphinx 的include指令直接引入倉庫根目錄下的 CHANGELOG.rst。因此這份歷史檔案的絕對主體是 CHANGELOG.rst 本身——它按版本號倒序最新版本在前記錄了從0.0.1搭建基本框架到6.1.5的全部變更。CHANGELOG 的書寫慣例有幾個(gè)值得注意的規(guī)律版本分段每個(gè)版本以分隔標(biāo)題版本號下直接列出變更條目分類標(biāo)簽自 6.0.0 起引入[不兼容改動(dòng)]、[新增功能]、[重構(gòu)和改善]、[For Mod 開發(fā)者] 接口變更指引等結(jié)構(gòu)化分組其中For Mod 開發(fā)者分組專門面向二次開發(fā)人群說明對應(yīng)版本的接口級破壞性變更代碼塊繼承早期版本3.x、2.x、0.x內(nèi)嵌了完整的命令行與 Python 配置示例這些示例是理解當(dāng)時(shí)用法的一手材料本文后續(xù)會(huì)完整保留。二、6.x 系列合約時(shí)序化架構(gòu)變革與收尾6.x 是當(dāng)前倉庫覆蓋的最新主版本線核心事件集中在 6.1.0 的架構(gòu)基本假設(shè)變更。6.1.0從一碼一合約到合約時(shí)序化CHANGELOG 明確指出6.1.0 包含重大的架構(gòu)基本假設(shè)變更舊版本隱含假設(shè)每個(gè)order_book_id只對應(yīng)唯一的Instrument對象這與實(shí)際業(yè)務(wù)邏輯不符同一代碼在不同時(shí)間段可能對應(yīng)不同合約例如換月、換代碼的場景新版本假設(shè)instrument 是時(shí)序的同一個(gè)order_book_id在不同時(shí)間點(diǎn)可能對應(yīng)不同的Instrument對象。圍繞這一假設(shè)產(chǎn)生了一組不兼容改動(dòng)變更對象舊行為新行為order/order_toAPI參數(shù)名為order_book_id參數(shù)名改為id_or_insget_position可傳入未上市代碼傳入未上市order_book_id會(huì)拋出異常Instrument.listing_at判斷是否上市更名為active_at舊方法移除同時(shí)新增了兩組活躍合約查詢 APIactive_instrument/active_instruments獲取當(dāng)前交易時(shí)點(diǎn)正在活躍上市中、未退市的合約對象instrument_history/instruments_history獲取合約歷史記錄列表包含未上市或已退市合約。這一設(shè)計(jì)的意圖從倉庫代碼中可以印證參數(shù)校驗(yàn)體系增加了assure_that支持參數(shù)自動(dòng)轉(zhuǎn)換Instrument / symbol → order_book_id并新增is_valid_order_book_id用于基礎(chǔ)合法性校驗(yàn)/轉(zhuǎn)換同時(shí)移除了依賴全局唯一 Instrument假設(shè)的is_valid_stock/is_valid_future/is_valid_instrument等校驗(yàn)規(guī)則。風(fēng)控、下單、分析等模塊從此統(tǒng)一基于交易時(shí)點(diǎn)的合約對象進(jìn)行判斷。對于 Mod 開發(fā)者DataProxy新增了get_active_instrument(s)、get_instrument_history、get_instruments_history等接口而Environment.get_instrument及DataProxy舊合約接口被標(biāo)記為廢棄。6.1.2 ~ 6.1.5數(shù)據(jù)鏈路與細(xì)節(jié)收尾6.1.2修復(fù)更新 bundle 數(shù)據(jù)時(shí)因數(shù)據(jù)量過大導(dǎo)致與 rqdata 斷開連接的問題6.1.3修復(fù)all_instruments獲取數(shù)據(jù)缺失的問題6.1.4order_target_portfolio_smart支持 ETF/LOF/REITs 品種order_target_portfolio支持 REITs漲跌停邊界撮合改為按tick_size做容差處理且漲跌停價(jià)為 NaN 時(shí)視為無漲跌停限制6.1.5回測結(jié)果圖片和 Excel 報(bào)告新增年化雙邊換手倍數(shù)指標(biāo)order_target_portfolio_smartAPI 性能優(yōu)化AbstractPosition類新增instrumentproperty修復(fù)分紅再投資未考慮交易費(fèi)用的問題獲取結(jié)算價(jià)的品種范圍由期貨擴(kuò)增為期貨、期權(quán)、現(xiàn)貨。三、6.0.0面向多市場的大規(guī)模重構(gòu)6.0.0 是一次面向多市場A 股 港股等與多品種的重構(gòu)版本CHANGELOG 用大篇幅記錄了接口級變更。新功能dividend_tax_rate 與 order_target_portfolio_smartmod_sys_accounts新增dividend_tax_rate配置項(xiàng)支持固定股息稅率配置默認(rèn)為 0新增order_target_portfolio_smartAPI相比order_target_portfolio更加智能和精確。在 rqalpha/mod/rqalpha_mod_sys_accounts/init.py 的__config__中可以看到該模塊當(dāng)前的完整配置族stock_t1股票 T1 限制、dividend_reinvestment自動(dòng)分紅再投資、dividend_tax_enabled按持股期限差異化費(fèi)率征收紅利稅、dividend_tax_rate紅利稅暫只支持固定稅率、cash_return_by_stock_delisted退市按退市價(jià)返還現(xiàn)金、auto_switch_order_value資金不足自動(dòng)轉(zhuǎn)為全部剩余資金下單、validate_stock_position/validate_future_position倉位風(fēng)控開關(guān)、financing_rate融資利率/年與futures_settlement_price_type逐日盯市結(jié)算價(jià)可選settlement/close等。值得一提的是從源碼看dividend_tax_rate在后續(xù)版本中已被標(biāo)記為廢棄mod.py 中當(dāng)其值非 0 時(shí)會(huì)打印警告 Configuration sys_accounts.dividend_tax_rate is no longer available. Please use configuration sys_accounts.dividend_tax_enabled instead.。這說明 CHANGELOG 與當(dāng)前代碼之間存在版本漂移——查閱歷史文檔時(shí)應(yīng)以當(dāng)前源碼的實(shí)際行為為準(zhǔn)。測試框架遷移 pytest 與 assert_result6.0.0 將測試框架從自定義框架遷移到 pytest提升了測試靈活性與 IDE 集成度。倉庫 rqalpha/utils/testing/init.py 下新增了assert_result工具函數(shù)用于斷言回測結(jié)果與文件中持久化的結(jié)果一致并定義了兼顧可讀性與序列化能力的自定義結(jié)果文件格式tests/integration_tests/test_backtest_results/ 目錄下的outs/*.txt就是這套斷言體系的持久化樣本。接口層重大變更For Mod 開發(fā)者interface.pyAbstractTransactionCostDecider多個(gè)方法合并為單一calc方法DataSource新增get_exchange_rate單一貨幣場景可參考BaseDataSource返回全 1 匯率結(jié)構(gòu)BaseDataSourceregister_xxx_store增加market參數(shù)register_instrument_store替換為register_instrumentsInstrumentStore/AbstractInstrumentStore標(biāo)記廢棄DataProxy刪除get_dividend_by_book_date與get_split_by_ex_dateget_prev_close新增adjust_type參數(shù)新增instrument_not_none、multi_instruments、get_exchange_rate交易日歷相關(guān)方法默認(rèn)值改為TRADING_CALENDAR_TYPE.CN_STOCKEnvironment稅費(fèi)計(jì)算接口合并精簡為calc_transaction_costdata_proxy、data_source、price_board、event_source、broker、strategy_loader、portfolio、mod_dict、user_strategy等屬性在未設(shè)置前訪問會(huì)拋出AttributeError而非返回None提升類型安全枚舉TRADING_CALENDAR_TYPE新增HK_STOCK、SOUTHBOUND原EXCHANGE重命名為CN_STOCK新增MARKET枚舉MARKET.CN、MARKET.HK用于多市場支持。業(yè)務(wù)模型類改進(jìn)Instrument構(gòu)造函數(shù)新增market參數(shù)新增min_order_quantity與order_step_size改善原round_lot含義模糊的問題Order新增estimated_transaction_cost屬性用于估算訂單交易成本Trade構(gòu)造后無需再顯式設(shè)置commission和tax已集成至__from_create__內(nèi)部Account新增available_cash_for方法多市場場景下獲取指定標(biāo)的可用資金風(fēng)控場景應(yīng)使用該方法而非cash屬性。運(yùn)行行為改進(jìn)策略拋出異常時(shí)RQAlpha 主函數(shù)或進(jìn)程最終也會(huì)拋出異常而不是僅打印錯(cuò)誤日志同時(shí)大幅改善進(jìn)程內(nèi)多次運(yùn)行回測會(huì)出現(xiàn)的內(nèi)存泄漏問題。如果你在循環(huán)中多次調(diào)用 rqalpha/init.py 的run()這一改進(jìn)直接影響可用性。四、5.x 系列REITs、算法單與基準(zhǔn)修復(fù)5.x 主線以功能擴(kuò)展和精度修復(fù)為主5.0.0適配 pandas 2.0新增算法單VWAPOrder 與 TWAPOrder交易指數(shù)標(biāo)的時(shí)不檢查上市日期而依據(jù)行情數(shù)據(jù)有無決定撮合時(shí)屏蔽已完成的訂單5.5.0修復(fù)復(fù)合基準(zhǔn)收益率計(jì)算錯(cuò)誤如399370.XSHE:0.5,399371.XSHE:0.5組合基準(zhǔn)被錯(cuò)誤放大該 bug 于 5.4.0 引入支持負(fù)權(quán)重指數(shù)作為基準(zhǔn)、支持NULL作為基準(zhǔn)標(biāo)的修復(fù)order_target_portfolio因交易費(fèi)用導(dǎo)致資金不足的問題5.6.x回測支持場內(nèi)交易 REITs5.6.1instrument 兼容 REITs 類型合約并兼容 Python 3.135.6.05.3.x期貨回測支持使用 rqdatac 提供的時(shí)間序列費(fèi)率與保證金費(fèi)率數(shù)據(jù)、印花稅費(fèi)率新增 PIT歷史時(shí)點(diǎn)模式、兼容 Python 3.125.3.5兼容 rqdata 3.05.3.65.2.0report 年度指標(biāo)新增超額夏普比率默認(rèn)印花稅調(diào)整為萬 5order_target_portfolio支持可轉(zhuǎn)債5.4.x調(diào)整拆分送股邏輯拆分產(chǎn)生不足 1 股時(shí)四舍五入修復(fù)order_target_portfolio資金不足問題5.1.0新增個(gè)股權(quán)重檢測summary 報(bào)告新增表格新增futures.get_dominant_price支持動(dòng)態(tài)復(fù)權(quán)。五、4.x 系列open_auction、擴(kuò)展 API 與撮合體系成型4.x 是 RQAlpha 從單機(jī)回測走向可擴(kuò)展多品種的關(guān)鍵時(shí)期。4.0.0與 RQDatac 聯(lián)動(dòng)、bundle 命令拆分新增集合競價(jià)函數(shù)open_auction可在該函數(shù)內(nèi)發(fā)單實(shí)現(xiàn)開盤成交新增擴(kuò)展 API 實(shí)現(xiàn)get_pit_financials_ex等擁有 RQDatac license 的用戶可在開源框架下直接調(diào)用新增order_target_portfolio股票批量下單 APIrqalpha update-bundle改為使用 RQDatac 更新已存在 bundle新增rqalpha download-bundle與rqalpha create-bundlebundle 存儲(chǔ)格式由 bcolz 替換為 hdf5不再支持 Python 2.7context.portfolio.positions標(biāo)記為可能廢棄推薦使用get_position/get_positionsMod 相關(guān)移除rqalpha mod install/uninstall命令用 pip 替代、移除BenchmarkProvider接口、Instrument新增calc_cash_occupation供風(fēng)控計(jì)算資金占用。撮合體系matching_type 的演進(jìn)撮合方式是 4.x 反復(fù)打磨的核心能力CHANGELOG 記錄了完整脈絡(luò)4.3.3--matching-type支持vwap成交量加權(quán)平均價(jià)撮合4.5.0新增逐檔撮合counterparty_offer根據(jù) tick 行情多檔掛單信息逐步撮合4.10.0將DefaultMatcher劃分為DefaultBarMatcher與DefaultTickMatcherTick 回測支持成交量限制兩個(gè) tick 成交量之差 ×volume_percentTick 回測不再支持open_auction集合競價(jià)時(shí)段一律用last撮合4.11.1matching_type為None時(shí)根據(jù)回測頻率自動(dòng)選擇——日/分鐘回測下為current_bartick 回測下為last。當(dāng)前源碼 rqalpha/mod/rqalpha_mod_sys_simulation/init.py 中的__config__給出了撮合相關(guān)配置的完整取值表配置項(xiàng)可選值 / 默認(rèn)值說明matching_type默認(rèn)None日回測current_bar/vwap分鐘回測current_bar/next_bar/vwaptick 回測last/best_own/best_counterparty/counterparty_offer逐檔price_limitTrue是否開啟漲跌停狀態(tài)的撮合限制liquidity_limitFalse對手盤無流動(dòng)性的撮合限制僅 tick 回測生效volume_limitTrue每個(gè) bar/tick 累計(jì)成交量不超過市場總成交量的一定比值volume_percent0.25可成交數(shù)量占市場總成交量的比值slippage_modelPriceRatioSlippage可選TickSizeSlippage或傳入繼承自slippage.BaseSlippage的自定義類完整路徑slippage0對PriceRatioSlippage為價(jià)格比例對TickSizeSlippage為跳數(shù)inactive_limitTrue當(dāng)前 bar 無成交量時(shí)禁止成交日/分鐘回測生效management_fee[]賬戶每日計(jì)提費(fèi)用格式如[(STOCK, 0.0001)]撮合決策的實(shí)現(xiàn)位于 matcher.py其中_create_deal_price_decider按matching_type選擇對應(yīng)的成交價(jià)決策器_match_immediatelysimulation_broker.py則決定了current_bar_close/vwap等模式下訂單的即時(shí)撮合行為。賬戶與配置擴(kuò)展4.3.0新增出入金 APIwithdraw/deposit新增資產(chǎn)收益加權(quán)基準(zhǔn)如--benchmark 000300.XSHG:0.5,510050.XSHG:-1新增按日簿記賬戶管理費(fèi)用--management-fee stock 0.00024.11.0針對股票和 ETF 新增融資功能新增finance/repayAPIAccount新增cash_liabilities現(xiàn)金負(fù)債sys_accounts新增financing_rate融資利率/年與financing_stocks_restriction_enabled融資可買股票池限制依賴 rqdatac4.15.0期貨回測支持使用結(jié)算價(jià)進(jìn)行結(jié)算4.16.2sys_accounts支持分別設(shè)置股票、期貨傭金倍率4.16.0新增check-bundle檢查日線 bundle 命令。報(bào)告與分析能力4.6.0 / 4.7.0收益圖加入超額收益曲線、周度收益曲線與買賣點(diǎn)繪制選項(xiàng)指標(biāo)改為通過配置項(xiàng)激活4.8.0sys_analyser報(bào)表新增 Excel 格式對應(yīng) rqalpha/mod/rqalpha_mod_sys_analyser/report/4.14.0新增 UlcerIndex累計(jì)回撤深度與 UlcerPerformanceIndex累計(jì)回撤夏普率4.16.0report 年度指標(biāo) sheet 新增指標(biāo)。六、3.x 系列多賬戶與 Mod 體系確立3.0.0--account 取代多參數(shù)賬戶體系3.0.0 是策略使用者必讀的遷移版本-sc/--stock-starting-cash、-fc/--future-starting-cash、-i/--init-cash、-s/--security、-k/--kind、--strategy-type等參數(shù)全部移除統(tǒng)一改為--account# 策略通過命令行運(yùn)行設(shè)置可交易類型是股票起始資金為 10000 $ rqalpha run --account stock 10000 # 策略通過命令行運(yùn)行設(shè)置可交易類型為期貨起始資金為 50000 $ rqalpha run --account future 50000 # 策略通過命令行運(yùn)行設(shè)置可交易類型為期貨和股票起始資金分別為 股票 10000, 期貨 50000 $ rqalpha run --account stock 10000 --account future 50000 # 如果您通過 Mod 擴(kuò)展自定義了一種可交易類型(假設(shè)是huobi)您也可以增加對于火幣的支持和起始資金設(shè)置 $ rqalpha run --account stock 10000 --account future 50000 --account huobi 20000通過run_file | run_code | run_func啟動(dòng)策略時(shí)配置文件中的base.stock_starting_cash/base.future_starting_cash/base.securities也對應(yīng)替換為base.accounts# 策略通過配置設(shè)置可交易類型是股票起始資金為 10000 config { base: { start_date: ..., end_date: ..., frequency: ..., matching_type: ..., benchmark: ..., accounts: { stock: 10000 } } } # 策略通過配置設(shè)置可交易類型為期貨和股票起始資金分別為 股票 10000, 期貨 50000 config { base: { start_date: ..., end_date: ..., frequency: ..., matching_type: ..., benchmark: ..., accounts: { stock: 10000, future: 50000 } } } # 如果您通過 Mod 擴(kuò)展自定義了一種可交易類型(假設(shè)是huobi)您也可以增加對于火幣的支持和起始資金設(shè)置 config { base: { start_date: ..., end_date: ..., frequency: ..., matching_type: ..., benchmark: ..., accounts: { stock: 10000, future: 50000, huobi: 20000 } } }這一設(shè)計(jì)在今天的 rqalpha/config.yml 中依然可見base.accounts下只需為想啟用的賬戶設(shè)置初始資金stock: ~表示默認(rèn)不啟用。對 Mod 開發(fā)者而言3.0.0 引入了AbstractAccount與AbstractPosition抽象類、Environment.set_account_model / set_position_model / set_smart_order注入機(jī)制并將賬戶、持倉模型與 API 抽離至rqalpha_mod_sys_accounts。當(dāng)時(shí)的注入示例在今日 rqalpha/mod/rqalpha_mod_sys_accounts/mod.py 中仍有對應(yīng)實(shí)現(xiàn)形態(tài)from .account_model import * from .position_model import * from .api import api_future, api_stock class AccountMod(AbstractMod): def start_up(self, env, mod_config): # 注入 Account env.set_account_model(DEFAULT_ACCOUNT_TYPE.STOCK.name, StockAccount) env.set_account_model(DEFAULT_ACCOUNT_TYPE.FUTURE.name, FutureAccount) env.set_account_model(DEFAULT_ACCOUNT_TYPE.BENCHMARK.name, BenchmarkAccount) # 注入 Position env.set_position_model(DEFAULT_ACCOUNT_TYPE.STOCK.name, StockPosition) env.set_position_model(DEFAULT_ACCOUNT_TYPE.FUTURE.name, FuturePosition) env.set_position_model(DEFAULT_ACCOUNT_TYPE.BENCHMARK.name, StockPosition) # 注入 API if DEFAULT_ACCOUNT_TYPE.FUTURE.name in env.config.base.accounts: # 注入期貨API for export_name in api_future.__all__: export_as_api(getattr(api_future, export_name)) # 注入 smart order env.set_smart_order(DEFAULT_ACCOUNT_TYPE.FUTURE.name, api_future.smart_order) if DEFAULT_ACCOUNT_TYPE.STOCK.name in env.config.base.accounts: # 注入股票API for export_name in api_stock.__all__: export_as_api(getattr(api_stock, export_name)) # 注入 smart order env.set_smart_order(DEFAULT_ACCOUNT_TYPE.STOCK.name, api_stock.smart_order) def tear_down(self, code, exceptionNone): pass3.2.0sys_transaction_cost 與事件訂閱新增AbstractTransactionCostDecider接口在Environment中注冊實(shí)現(xiàn)可自定義不同合約品種、不同市場的稅費(fèi)計(jì)算邏輯新 Modsys_transaction_cost實(shí)現(xiàn)了該接口抽離了原sys_simulation中的稅費(fèi)計(jì)算邏輯并加入對港股稅費(fèi)計(jì)算的支持對應(yīng)今日 rqalpha/mod/rqalpha_mod_sys_transaction_cost/init.py 的stock_min_commission、stock_commission_multiplier、futures_commission_multiplier、tax_multiplier、pit_tax等配置新增subscribe_eventAPI 訂閱框架內(nèi)部事件新增get_position/get_positions獲取持倉對象DEFAULT_ACCOUNT_TYPE增加債券BOND類型--market參數(shù)標(biāo)記策略交易標(biāo)的市場cn、hk 等rqalpha update_bundle更名為rqalpha update-bundle邏輯改進(jìn)下單凍結(jié)資金與前端風(fēng)控驗(yàn)資均考慮稅費(fèi)年化計(jì)算改為使用交易日而非自然日基準(zhǔn)收益率改為直接使用前復(fù)權(quán)價(jià)格序列計(jì)算滑點(diǎn)計(jì)算增加漲跌停價(jià)判斷。3.1.0滑點(diǎn)與價(jià)格規(guī)則精細(xì)化新增base.round_price參數(shù)--round-price開啟后現(xiàn)價(jià)單價(jià)格調(diào)整為最小價(jià)格變動(dòng)單位的整倍數(shù)sys_simulation新增slippage_model參數(shù)滑點(diǎn)不再限于價(jià)格比率支持基于最小價(jià)格變動(dòng)單位的模型乃至自定義滑點(diǎn)模型新增股票最小手續(xù)費(fèi)stock_min_commission--stock-min-commission 5sys_accounts新增future_forced_liquidation期貨賬戶爆倉時(shí)強(qiáng)平新增通用下單接口submit_order(id_or_ins, amount, side, priceNone, position_effectNone)TickObject替代原Tick與SnapshotObject。七、2.x 與 0.x框架誕生期2.2.x運(yùn)行方式與下單 API 定型run_file / run_code / run_func2.2.2 引入三種程序化運(yùn)行策略的方式今日 rqalpha/init.py 中仍保留這三個(gè)入口run()已被標(biāo)記為 Deprecated推薦使用run_file/run_code/run_funcorder / order_to2.2.2 新增高階調(diào)倉函數(shù)——order的quantity 0向 BUY 方向調(diào)倉、quantity 0向 SELL 方向調(diào)倉order_to的quantity表示調(diào)倉后的最終倉位POSITION_EFFECT增加CLOSE_TODAY2.2.4所有下單函數(shù)支持多種等價(jià)寫法order_shares(000001.XSHE, 100, 200)、order_shares(000001.XSHE, 100, LimitOrder(200))等均可buy_close/sell_close增加close_today參數(shù)支持平今單且期貨平倉支持平昨/平今智能拆單返回訂單列表Order.__from_create__/Trade.__from_create__不再接收calendar_dt與trading_dt2.2.5提供 IPython Magic%load_ext rqalpha后可用%%rqalpha -s 20160101 -e 20170101 -sc 100000直接在 notebook 中運(yùn)行回測對應(yīng) docs/source/notebooks/run-rqalpha-in-ipython.ipynb新增--source-code參數(shù)直接傳入策略源代碼。2.0.xMod 管理與配置體系配置改為從當(dāng)前路徑讀取config.ymlrqalpha generate_config生成含全部默認(rèn)系統(tǒng)配置的文件Mod 默認(rèn)配置從主配置中刪除獨(dú)立維護(hù).mod_config.yml并提供rqalpha mod install/uninstall/enable/disable/list命令RUN_TYPE增加LIVE_TRADINGcontext.config獲取配置信息base.extra_vars/extra.context_vars向策略預(yù)定義變量。0.x起點(diǎn)CHANGELOG 的最底層記錄展示了框架的誕生過程0.0.1 搭建基本框架與 unittest0.0.2 增加日線回測、分紅處理、漲跌停檢查運(yùn)行參數(shù)形如# 生成sample策略 rqalpha generate_examples -d ./ # 運(yùn)行回測 rqalpha run -f examples/simple_macd.py -s 2013-01-01 -e 2015-01-04 -o /tmp/a.pkl0.3.0 支持多周期回測、期貨策略、混合策略并抽離接口層數(shù)據(jù)源、事件源、撮合引擎、下單模塊全部可以替換或擴(kuò)展同時(shí)引入 Mod 機(jī)制與 pub/sub 事件模式——這正是 RQAlpha可擴(kuò)展、可替換架構(gòu)定位的源頭。八、升級與遷移要點(diǎn)速查綜合全文按版本整理的遷移清單如下版本不兼容 / 重大變更應(yīng)對動(dòng)作6.1.0Instrument 時(shí)序化order/order_to參數(shù)改id_or_inslisting_at→active_atget_position拒絕未上市代碼下單與持倉查詢改用id_or_ins合約活躍判斷改用active_at需要?dú)v史合約時(shí)用instrument_history(s)6.0.0接口重構(gòu)calc、get_exchange_rate、available_cash_for等Environment 未初始化屬性拋AttributeError測試遷移 pytestMod 開發(fā)者按 rqalpha/interface.py 與 rqalpha/data/base_data_source/data_source.py 的現(xiàn)狀核對接口風(fēng)控取可用資金改用available_cash_for5.0.0適配 pandas 2.0新增 VWAP/TWAP 算法單pandas 低版本策略需升級依賴4.0.0移除 Python 2.7bundle 命令拆分bcolz → hdf5移除rqalpha mod install/uninstallbundle 重新下載/創(chuàng)建Mod 改用 pip 管理3.0.0賬戶參數(shù)全部收斂為--account/base.accounts命令行與配置文件按本文第三節(jié)示例改寫2.2.x下單 API 擴(kuò)展等價(jià)寫法平今拆單Order.__from_create__簽名變更對接第三方交易源的 Mod 需調(diào)整訂單/成交構(gòu)造驗(yàn)證遷移是否成功的快捷路徑倉庫 tests/integration_tests/test_backtest_results/ 下有從test_f_buy_and_hold到test_sf_buy_and_hold的端到端回測結(jié)果斷言配合 tests/unittest/ 的單元測試可直接運(yùn)行以確認(rèn)當(dāng)前環(huán)境與版本行為一致。九、延伸閱讀在倉庫中定位這些演進(jìn)CHANGELOG 的每個(gè)條目都能在源碼中找到落點(diǎn)以下是核心對照路徑全局默認(rèn)配置rqalpha/config.yml含base.accounts、frequency、matching_type、margin_multiplier、capital_gain_tax_rate、auto_update_bundle等Mod 啟停清單rqalpha/mod_config.yml默認(rèn)啟用sys_accounts、sys_simulation、sys_progress、sys_risk、sys_analyser、sys_scheduler、sys_transaction_cost賬戶與持倉配置rqalpha/mod/rqalpha_mod_sys_accounts/init.py 與 rqalpha/mod/rqalpha_mod_sys_accounts/mod.py撮合與滑點(diǎn)配置rqalpha/mod/rqalpha_mod_sys_simulation/init.py、matcher.py、slippage.py交易成本配置rqalpha/mod/rqalpha_mod_sys_transaction_cost/init.py程序化運(yùn)行入口rqalpha/init.py 的run_file/run_code/run_func參數(shù)校驗(yàn)體系rqalpha/utils/arg_checker.py含assure_that、is_valid_order_book_id等演進(jìn)數(shù)據(jù)分析與報(bào)告rqalpha/mod/rqalpha_mod_sys_analyser/。結(jié)語從 0.0.1 的日線回測 分紅處理到 6.1.5 的合約時(shí)序化 多市場 REITs/期權(quán)/現(xiàn)貨結(jié)算價(jià)RQAlpha 的 CHANGELOG 完整記錄了它從一個(gè)簡單回測腳本演進(jìn)為可擴(kuò)展、可替換的多品種回測與交易框架的全過程。對于策略開發(fā)者它是升級路上的避坑手冊對于 Mod 開發(fā)者它是接口演進(jìn)的編年史對于想要理解框架設(shè)計(jì)哲學(xué)的讀者它則是一條按版本號展開的架構(gòu)時(shí)間線。查閱時(shí)請記住本文反復(fù)強(qiáng)調(diào)的一點(diǎn)CHANGELOG 描述的是當(dāng)時(shí)源碼呈現(xiàn)的是現(xiàn)在兩者結(jié)合閱讀才能得到完整且準(zhǔn)確的圖景。贊分享金融科技【免費(fèi)下載鏈接】rqalphaA extendable, replaceable Python algorithmic backtest trading framework supporting multiple securities項(xiàng)目地址https://gitcode.com/gh_mirrors/rq/rqalpha點(diǎn)擊查看免費(fèi)下載相關(guān)推薦RQAlpha 版本演進(jìn)全解析從 0.0.1 到 6.1.5 的架構(gòu)變遷與升級指引RQAlpha 版本演進(jìn)全解析從 0.0.1 到 6.1.5 的架構(gòu)變遷與升級指引 本文以倉庫根目錄下 CHANGELOG.rst https://link.金融科技google_sign_in 插件版本演進(jìn)全解析從 0.0.1 到 7.2.0 的架構(gòu)變遷與升級指南google_sign_in 插件版本演進(jìn)全解析從 0.0.1 到 7.2.0 的架構(gòu)變遷與升級指南 導(dǎo)讀 本文以 Flutter 官方團(tuán)隊(duì)維護(hù)的 googl跨平臺(tái)移動(dòng)開發(fā)UI組件開發(fā)工具restify 版本演進(jìn)全解從 CHANGELOG 看 Node.js REST 框架的架構(gòu)變遷與升級路徑restify 版本演進(jìn)全解從 CHANGELOG 看 Node.js REST 框架的架構(gòu)變遷與升級路徑 導(dǎo)讀 CHANGELOG.md https://l后端上一篇Conductor 工作流狀態(tài)事件發(fā)布實(shí)戰(zhàn)Kafka、內(nèi)部隊(duì)列與 Webhook 三種通知通道配置全解下一篇10分鐘上手Glimmer構(gòu)建你的第一個(gè)跨平臺(tái)桌面應(yīng)用創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考