PeopleQuant帮助文档:上线本地回测系统
back_test = BackTest([r'C:\datas\KQ.m@DCE.m.tick.csv',#r'C:\datas\KQ.m@SHFE.rb.tick.csv',],start_datetime=datetime(2021,10,8,9,0,0),end_datetime=datetime(2026,7,8,15,0,0), balance=1000000.0*1000,symbol_infos={'KQ.m@DCE.m':{'ExchangeID': "DCE", 'PriceTick':1, "VolumeMultiple":10, "OpenRatioByMoney":0.1, "OpenRatioByVolume":10,"LimitPriceRatio":0.1},#'KQ.m@SHFE.rb':{'ExchangeID': "SHFE", 'PriceTick':1, "VolumeMultiple":10, "OpenRatioByMoney":0.1, "OpenRatioByVolume":10,"LimitPriceRatio":0.1},},col_mapping = { "datetime": "datetime","InstrumentID": "symbol","LastPrice": "close","AskPrice1": "","BidPrice1": "","AskVolume1": "","BidVolume1": "","Volume": "volume" },datetime_format = "%Y-%m-%d %H:%M:%S%.f",result_file=r'C:\datas',draw_line = True)
#添加新行情是否被使用记录quote_lable=pqapi.update_quote_pipe([symbol],add_or_used='add')
pqapi.update_quote_pipe([symbol],quote_lable,add_or_used='used') #新行情已经被使用完毕
kline = pqapi.get_kline(symbol,period='1d',kline_count=40) #获取K线数据
#计算指标,10日/5日均线,均价金叉死叉indicator_signal = (kline.data.tail(30).with_columns([MA_expr("close", 5).alias("ma5"), #计算5日均线,m5为列名MA_expr("close", 10).alias("ma10"), #计算10日均线,m10为列名]).with_columns([CROSSUP_expr("ma5", "ma10").alias("crossup"), #判断是否金叉CROSSDOWN_expr("ma5", "ma10").alias("crossdown"), #判断是否死叉]))
#将时间、价格、持仓等参与交易逻辑计算的数据记录下来signals.append({"ctp_datetime":quote.ctp_datetime,"LastPrice":quote.LastPrice,"kline_close":(kline.data)["close"][-1],"pos_long":position.pos_long,"open_price_long":position.open_price_long,"float_profit_long":position.float_profit_long,"pos_short":position.pos_short,"open_price_short":position.open_price_short,"float_profit_short":position.float_profit_short,"buy_up":buy_up,"sell_down":sell_down,'loss_long':loss_long,'loss_short':loss_short,'profit_long':profit_long,'profit_short':profit_short,'open_price_long+':position.open_price_long + 150*symbol_info.PriceTick,'open_price_long-':position.open_price_long - 50*symbol_info.PriceTick,'open_price_short+':position.open_price_short + 50*symbol_info.PriceTick,'open_price_short-':position.open_price_short - 150*symbol_info.PriceTick,"PriceTick":symbol_info.PriceTick,'ma10':indicator_signal['ma10'][-1]})
if pqapi.backtest_finished :#回测结束,将记录的交易信号保存在本地polars.DataFrame(signals).write_csv(fr'{pqapi._backtest.result_file}\backtest_signal_{sum(quote_lable)}.csv')#Data.write_csv(fr'{pqapi._backtest.result_file}\backtest_indicator.csv')print('回测结束')print(f"回测结果已保存至:{pqapi._backtest.result_file}")

pip install -U PeopleQuant
https://github.com/zhuxueli-cta/PeopleQuant
欢迎关注公众号,一起学习量化交易
QQ交流群:

夜雨聆风
