量化研究--策略迁移算法1研究

风险提示:本内容为量化技术及平台操作的纯知识分享,不构成任何投资建议,不推荐任何具体证券或交易时机。部分内容可能理解包含错误,请自行核实。市场有风险,投资需谨慎

教程量化研究--策略迁移算法1研究https://mp.weixin.qq.com/s/BifYp-8eFQD4YebZbLQkbA?scene=1&click_id=1402956498

今天我们简单的介绍一下,策略迁移的策略,目前大概有3种处理方式,直接迁移代码,对编程要求最高,本地的策略怎么样迁移到大QMT,大QMT策略怎么样迁移到本地,这个主要是在看见的兼容,大qmt有固定的交易框架,init,haedbar,run_time,3个核心的部分,其他的可有可无,init,做全局设计,参数的配置,haedbar做策略的启动,安固定的周期去运行策略,默认是3秒,run_time类似,haedbar,都是启动策略的,run_time比较灵活,扩展性好,支持定时和循环,下面是我做了简单的函数对比,方便参考迁移

1行情数据接口对照

2交易接口对照

本地QMT

:交易下单需先创建 连接对象,然后通过 连接对象.函数名() 调用。

大QMT

:交易下单直接调用全局函数 passorder

3策略框架与辅助函数对照

4总结:迁移策略时需要调整的关键点

大qmt简单的例子代码,来自官方例子,

python 复制代码
#coding:gbk
'''
大QMT双均线策略示例(在QMT内置编辑器运行)
金叉买入,死叉卖出
'''
def init(C):
    # 设置均线参数
    C.fast = 5      # 快线周期
    C.slow = 20     # 慢线周期
    C.stock = C.stockcode + '.' + C.market  # 当前主图品种
    C.accountid = "testS"  # 回测资金账号(可任意)
    print(f"大QMT策略初始化,标的:{C.stock}")
def handlebar(C):
    # 获取当前K线时间
    bar_time = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')

    # 获取足够的历史收盘价数据
    local_data = C.get_market_data_ex(
        ['close'], 
        [C.stock], 
        end_time = bar_time, 
        period = C.period, 
        count = C.slow + 5, 
        subscribe = False
    )

    close_list = list(local_data[C.stock].iloc[:, 0])
    if len(close_list) < C.slow + 1:
        return

    # 计算快慢均线
    fast_ma = sum(close_list[-C.fast:]) / C.fast
    slow_ma = sum(close_list[-C.slow:]) / C.slow
    prev_fast_ma = sum(close_list[-C.fast-1:-1]) / C.fast
    prev_slow_ma = sum(close_list[-C.slow-1:-1]) / C.slow

    # 获取当前持仓
    current_vol = 0
    holdings = get_holdings(C.accountid, "STOCK")
    if C.stock in holdings:
        current_vol = holdings[C.stock]['CurrentAmount']

    # 金叉买入
    if prev_fast_ma <= prev_slow_ma and fast_ma > slow_ma:
        if current_vol == 0:
            msg = f"金叉买入 {C.stock} 100股"
            passorder(23, 1101, C.accountid, C.stock, 5, -1, 100, '双均线策略', 2, msg, C)
            print(f"{bar_time} {msg}")

    # 死叉卖出
    elif prev_fast_ma >= prev_slow_ma and fast_ma < slow_ma:
        if current_vol > 0:
            msg = f"死叉卖出 {C.stock} 全部持仓"
            passorder(24, 1101, C.accountid, C.stock, 5, -1, current_vol, '双均线策略', 2, msg, C)
            print(f"{bar_time} {msg}")
相关推荐
青 春 记 忆42 分钟前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
阳明山水1 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技2 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
Tongzhi20262 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
eBest数字化转型方案2 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
residual_fan3 小时前
持续对比强化学习(Continual Contrastive Reinforcement Learning)论文分享
人工智能·算法·数据挖掘·数据分析
s_w.h3 小时前
【 计网 】序列化与反序列化
linux·服务器·网络·算法·bash
信奥卷王4 小时前
2025年09月GESPC++五级真题解析(含视频)
算法
白狐_7984 小时前
408 数据结构|外部排序:流程与 k 路归并
数据结构·算法
闻缺陷则喜何志丹4 小时前
【动态规划】P3609 [USACO17JAN] Hoof, Paper, Scissor G
c++·算法·动态规划·洛谷