赠送一个完整的QMT学习回测模板 !

QUANT 2025-11-28 14:55:52 99 举报

赠送新手宝子们 一个完整的 QMT回测模板,搞起来 !!

#encoding:gbk
def init(ContextInfo):
    """
    初始化函数
    在策略启动时被调用一次
    """
    print("="*60)
    print("【策略初始化】")
    print("="*60)
    
    # 1. 设置回测参数(仅在回测模式有效)
    if ContextInfo.do_back_test:
        # 设置回测资金
        ContextInfo.capital = 1000000  # 100万
        print(f"回测初始资金: {ContextInfo.capital}元")
        
        # 设置回测时间范围
        ContextInfo.start = "2020-01-01 00:00:00"
        ContextInfo.end = "2023-12-31 23:59:59"
        print(f"回测时间: {ContextInfo.start} 到 {ContextInfo.end}")
    
    # 2. 打印策略基本信息
    print(f"当前股票: {ContextInfo.stockcode}")
    print(f"当前市场: {ContextInfo.market}")
    print(f"当前周期: {ContextInfo.period}")
    print(f"复权方式: {ContextInfo.dividend_type}")
    
    # 3. 初始化全局变量
    global strategy_status
    strategy_status = {
        "total_bars": 0,
        "buy_count": 0,
        "sell_count": 0
    }
    
    print("初始化完成!")

def handlebar(ContextInfo):
    """
    处理K线函数
    每根新K线生成时被调用
    """
    
    # 1. 获取当前K线信息
    bar_index = ContextInfo.barpos
    total_bars = ContextInfo.time_tick_size
    
    # 2. 跳过前100根K线(用于计算指标)
    if bar_index < 100:
        return
    
    # 3. 打印进度信息
    if bar_index % 100 == 0:
        progress = (bar_index + 1) / total_bars * 100
        print(f"进度: {progress:.2f}% ({bar_index + 1}/{total_bars})")
    
    # 4. 执行交易逻辑
    # 这里添加你的交易策略代码
    
    # 5. 最后一根K线时的处理
    if bar_index == total_bars - 1:
        print("="*60)
        print("【回测完成】")
        print("="*60)
        print(f"总K线数: {total_bars}")
        print(f"买入次数: {strategy_status['buy_count']}")
        print(f"卖出次数: {strategy_status['sell_count']}")




量化学习/软件申请 滴滴滴滴我们~~更多模板一起搞起来。

尊重知识,尊重市场 1

著作权归文章作者所有。

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)