重修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")
这个代码显示了策略的运行结果,并将交易信号展现出来。
浙公网安备 33010602011771号