關(guān)于現(xiàn)貨期權(quán)合約交易所系統(tǒng)開發(fā)詳細(xì)邏輯及方案分析
Want to know clearly what is a quantitative trading robot?First of all,we should clarify the basic concept of quantitative trading: Quantitative trading refers to an investment method that uses modern statistics and mathematical methods to trade through computer technology.Quantitative trading selects a variety of"high probability"events that can achieve excess returns from massive historical data to formulate strategies,uses quantitative models to verify and solidify these laws and strategies,and then strictly implements the solidified strategies to guide investment,in order to obtain sustained,stable and higher than average returns. 入口代碼為vnpy.app.cta_backtester.ui.widget.BacktesterManager.start_backtesting()方法.獲取界面配置的合約相關(guān)參數(shù),彈窗vnpy.app.cta_backtester.ui.widget.BacktestingSettingEditor對(duì)話框,用戶確認(rèn)后,調(diào)用vnpy.app.cta_backtester.engine.BacktesterEngine.start_backtesting()開始回測(cè),該方法開啟新線程調(diào)用run_backtesting().此方法調(diào)用邏輯如下:開發(fā)詳情I35設(shè)計(jì)7o98邏輯o7I8 1.獲取vnpy.app.cta_strategy.backtesting.BacktestingEngine類對(duì)象,傳入界面參數(shù). 2.調(diào)用vnpy.app.cta_strategy.backtesting.BacktestingEngine.load_data()方法加載數(shù)據(jù).根據(jù)是bar模式還是tick模式,調(diào)用load_bar_data()和load_tick_data()加載數(shù)據(jù)到self.history_data的list中。默認(rèn)bar模式,進(jìn)入vnpy.app.cta_strategy.backtesting.load_bar_data(),調(diào)用vnpy.trader.database.database_sql.SqlManager.load_bar_data(),它通過peewee的orm庫(kù)讀取數(shù)據(jù)庫(kù). 3.調(diào)用vnpy.app.cta_strategy.backtesting.BacktestingEngine.run_backtesting()開始回測(cè). (1).根據(jù)bar還是tick模式,確認(rèn)進(jìn)入BacktestingEngine.new_bar()還是BacktestingEngine.new_tick()方法. (2).進(jìn)入vnpy.app.cta_strategy.strategies.double_ma_strategy.DoubleMaStrategy.on_init()初始化策略.進(jìn)入vnpy.app.cta_strategy.template.CtaTemplate.load_bar()初始化加載.案例分析:mrsfu123 (3).遍歷歷史K線數(shù)據(jù),統(tǒng)計(jì)總天數(shù).如果是一個(gè)月的分鐘線,針對(duì)前10根K線(這塊沒看懂?),每一根K線都進(jìn)入double_ma_strategy.DoubleMaStrategy.on_bar()方法處理。首先調(diào)用vnpy.trader.utility.ArrayManager.update_bar()更新當(dāng)前K線信息.然后計(jì)算短期和長(zhǎng)期均線價(jià)格,如果短期上穿長(zhǎng)期均線,且當(dāng)前倉(cāng)位為0,則調(diào)用template.CtaTemplate.buy()方法下單買入.下單進(jìn)入vnpy.app.cta_strategy.template.CtaTemplate.send_order()方法,回測(cè)期間該方法返回空.如果短期下穿長(zhǎng)期均線,且當(dāng)前倉(cāng)位為0,調(diào)用vnpy.app.cta_strategy.template.CtaTemplate.short()做空. (4).調(diào)用double_ma_strategy