現貨期權交易所開發案例原始碼丨現貨期權交易所繫統開發(海外版)

xiaofufu發表於2023-02-22

  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()方法.獲取介面配置的合約相關引數,彈窗vnpy.app.cta_backtester.ui.widget.BacktestingSettingEditor對話方塊,使用者確認後,呼叫vnpy.app.cta_backtester.engine.BacktesterEngine.start_backtesting()開始回測,該方法開啟新執行緒呼叫run_backtesting().此方法呼叫邏輯如下:


  1.獲取vnpy.app.cta_strategy.backtesting.BacktestingEngine類物件,傳入介面引數.I35 Develop 7O98 software O7I8


  2.呼叫vnpy.app.cta_strategy.backtesting.BacktestingEngine.load_data()方法載入資料.根據是bar模式還是tick模式,呼叫load_bar_data()和load_tick_data()載入資料到self.history_data的list中。預設bar模式,進入vnpy.app.cta_strategy.backtesting.load_bar_data(),呼叫vnpy.trader.database.database_sql.SqlManager.load_bar_data(),它透過peewee的orm庫讀取資料庫.


  3.呼叫vnpy.app.cta_strategy.backtesting.BacktestingEngine.run_backtesting()開始回測.


  (1).根據bar還是tick模式,確認進入BacktestingEngine.new_bar()還是BacktestingEngine.new_tick()方法.


  (2).進入vnpy.app.cta_strategy.strategies.double_ma_strategy.DoubleMaStrategy.on_init()初始化策略.進入vnpy.app.cta_strategy.template.CtaTemplate.load_bar()初始化載入.


  (3).遍歷歷史K線資料,統計總天數.如果是一個月的分鐘線,針對前10根K線(這塊沒看懂?),每一根K線都進入double_ma_strategy.DoubleMaStrategy.on_bar()方法處理。首先呼叫vnpy.trader.utility.ArrayManager.update_bar()更新當前K線資訊.然後計算短期和長期均線價格,如果短期上穿長期均線,且當前倉位為0,則呼叫template.CtaTemplate.buy()方法下單買入.下單進入vnpy.app.cta_strategy.template.CtaTemplate.send_order()方法,回測期間該方法返回空.如果短期下穿長期均線,且當前倉位為0,呼叫vnpy.app.cta_strategy.template.CtaTemplate.short()做空.


  (4).呼叫double_ma_strategy.DoubleMaStrategy.on_start()觸發start事件,


  (5).呼叫BacktestingEngine.new_bar()從第10根K線開始回放歷史資料.該方法處理邏輯如下:


  (5.1)呼叫BacktestingEngine.cross_limit_order()撮合本地限價單委託,將最新的行情K線或者TICK和策略之前下達的所有委託進行檢查,如果能夠撮合成交,則返回並記錄資料。


  (5.2)撮合本地停止單(條件單)委託.


  K線圖表


  入口程式碼為BacktesterManager.show_candle_chart().獲取之前載入的資料庫裡面的bar資料。


  1.呼叫CandleChartDialog.update_history(),呼叫vnpy.chart.manager.BarManager.update_history(),呼叫vnpy.chart.item.ChartItem.update_history()遍歷所有K線,呼叫vnpy.chart.item.CandleItem._draw_bar_picture()透過QT畫K線圖.


  2.獲取所有交易記錄,呼叫widget.CandleChartDialog.update_trades()在K線圖上標記買賣記錄.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章