重修vn.py笔记 之 七 : 运行策略

    通过上面的准备,运行一个策略,显示交易信号。

    

from vnpy_ctabacktester import CtaBacktesterApp
from vnpy_ctabacktester.ui.widget import CandleChartDialog
from vnpy_ctastrategy.strategies.boll_channel_strategy import BollChannelStrategy as strategy
from vnpy_ctastrategy.backtesting import BacktestingEngine
from vnpy.trader.ui import MainWindow, create_qapp

from datetime import datetime

from vnpy.trader.object import OrderData, TradeData, BarData, TickData
from typing import Callable, List, Dict, Optional, Type

def backtest(instrument_id : str,  start_date : datetime, end_date : datetime) ->  BacktestingEngine:
    engine = BacktestingEngine()
    engine.set_parameters(
        vt_symbol=instrument_id,
        interval="1m",
        start=start_date,
        end=end_date,
        rate=0.5/10000,
        slippage=0.2,
        size=300,
        pricetick=0.2,
        capital=1_000_000,
    )
    engine.add_strategy(strategy, {})
    engine.load_data()
    engine.run_backtesting()
    df = engine.calculate_result()
    engine.calculate_statistics()    
    fig = engine.show_chart()
    fig.show()
    return engine


if __name__ == "__main__":    
    instrumentId = "IC888.CFFEX"
    start_date = datetime(2020, 3, 14)
    end_date = datetime(2023, 3, 14)
    engine =  backtest(instrumentId, start_date, end_date)
    while create_qapp():
        candle_dialog: CandleChartDialog = CandleChartDialog()
        history: list = engine.history_data
        candle_dialog.update_history(history)
        trades: List[TradeData] = engine.get_all_trades()        
        candle_dialog.update_trades(trades)        
        candle_dialog.exec()
        break

    print("task finished")

  这个代码显示了策略的运行结果,并将交易信号展现出来。

posted on 2025-12-26 17:21  金凯旋  阅读(1)  评论(0)    收藏  举报

导航