002 常见量化交易平台使用

常见的量化交易平台:米筐,BigQuant,优矿,聚宽,掘金。

本文简单介绍其中的米筐量化交易平台。米筐支持Python,Java编写交易策略进行回测。

 一、平台使用

1. 注册账号

平台网址:米筐量化平台

 平台的帮助文档见网站【支持】页面:

2.  进入界面

打开右上角的【产品——米筐量化协作平台】进入策略编写界面,然后点击【新建策略】的【代码策略】,当然,也可以使用向导策略。

3. 编写策略

在左侧编写策略,点击右侧的【编译策略】

4. 运行回测

编译通过后,点击最右侧的【运行回测】,模拟交易策略的结果。

 二、常用函数

1. init()

策略启动运行时首先执行的函数,只执行一次。其中context参数可理解为全局变量,可在各个函数中使用,以传递参数。

# 可以导入常见的numpy,pandas等库,以及米筐自带的talib库

# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    # 在context中保存全局变量
    context.s1 = "000001.XSHE"
    # 实时打印日志
    logger.info("RunInfo: {}".format(context.run_info))

2. handle_bar()

股票数据有更新时会自动执行该函数,用于编写量化策略的主要逻辑和触发交易动作。

# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # 开始编写你的主要的算法逻辑

    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合信息

    # 使用order_shares(id_or_ins, amount)方法进行落单

    # TODO: 开始编写你的算法吧!
    order_shares(context.s1, 1000)

3. before_training()

每天策略开始交易前自动触发的函数。具体触发事件取决于交易策略的执行事件。

4. after_training()

每天收盘后组东触发的函数。

5. 交易函数

order_percent():按目前总资产的百分比金额买入或买出。如:

order_percent('000651.SZ', 1)    # 全仓买入格力
order_percent('000651.SZ', 0.5)    # 半仓买入格力

order_percent('000651.SZ', -1)    # 清仓格力
order_percent('000651.SZ', -0.5)    # 减半仓格力

order_shares:按若干股(必须是1手的倍数,A股中,1手=100股)的数量交易。如:

order_shares('000651.SZ', 200)    # 买入200股格力
order_shares('000651.SZ', -100)    # 卖出100股格力

order_lots:按若干手的数量交易。如:

order_lots('000651.SZ', 2)    # 买入2手格力
order_lots('000651.SZ', -1)    # 卖出1手股格力

order_value():按金额数量交易。如 

order_value('000651.SZ', 100000)    # 买入共1w人民币的格力
order_value('000651.SZ', -100000)    # 卖出共1w人民币的格力
order_value('000651.SZ', 0)    # 清仓格力

其他还有order_target_percent、order_target_portfolio是按当前仓位百分比进行增减仓的函数等。

6. 股票筛选函数

is_st_stock(stock_code):股票是否ST

is_suspend(stock_code):是否停牌

三、策略示例

策略示例摘自李天胜《python量化交易实战》一书。

1. 策略示例1

如果空仓,直接全仓买入茅台股票。

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import talib
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    logger.info('init')
    context.s1 = "600519.XSHG"      # 茅台
    context.fired = False           # 是否发送了交易命令
    context.cnt = 1                 # 策略相关函数执行次数

 
    # 设置这个策略当中会用到的参数,在策略中可以随时调用,这个策略使用长短均线,我们在这里设定长线和短线的区间,在调试寻找最佳区间的时候只需要在这里进行数值改动
    context.SHORTPERIOD = 20
    context.LONGPERIOD = 120
 
def before_trading(context):
    logger.info('before trading', context.cnt)
    context.cnt += 1
 
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # 开始编写你的主要的算法逻辑
    context.cnt += 1
    logger.info('handle_bar', context.cnt)

    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合状态信息
 
    # 使用order_shares(id_or_ins, amount)方法进行落单
 
    # TODO: 开始编写你的算法吧!
    if not context.fired:
        order_percent(context.s1, 1)
        context.fired = True

回测结果: 

 2. 策略示例2

KDJ金叉全仓买入,KDJ死叉清仓

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import talib

# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    # 在context中保存全局变量
    context.s1 = "600519.XSHG"
    # 实时打印日志
    logger.info("RunInfo: {}".format(context.run_info))

    context.SHORTPERIOD = 20    # MA20
    context.LONGPERIOD = 60     # MA60

# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):
    pass


# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # 开始编写你的主要的算法逻辑

    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合信息

    # 使用order_shares(id_or_ins, amount)方法进行落单

    # TODO: 开始编写你的算法吧!
    prices = history_bars(context.s1, context.LONGPERIOD+1, '1d','close')

    short_avg = talib.SMA(prices, context.SHORTPERIOD)
    long_avg = talib.SMA(prices, context.LONGPERIOD)
    plot('short avg', short_avg[-1])
    plot('long avg', long_avg[-1])

    # 当前股票持有的仓位
    cur_position = get_position(context.s1).quantity   

    # 当前portfolio中现金可以买入多少股     
    shares = context.portfolio.cash/bar_dict[context.s1].close

    # 死叉,清仓
    if (short_avg[-1] - long_avg[-1]) < 0 and (short_avg[-2] - long_avg[-2] > 0) and cur_position > 0:
        order_target_value(context.s1, 0)
    
    # 金叉,加仓
    if (short_avg[-1] - long_avg[-1]) > 0 and (short_avg[-2] - long_avg[-2] < 0):
        order_shares(context.s1, shares) 

# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
    pass

回测结果:

<think>嗯,用户让我介绍一下QTM量化交易平台使用技巧。首先,我需要确定用户对QTM的了解程度,可能他们是刚开始接触这个平台,或者已经有些基础但想提高效率。接下来,我应该考虑QTM的主要功能模块,比如策略开发、回测、实盘交易、风险管理等,这些都是用户可能关心的方面。 用户可能希望得到具体的操作建议,而不仅仅是理论上的介绍。比如,如何编写高效的策略代码,如何优化回测参数,或者如何管理风险。需要分步骤来组织内容,结构清晰,方便用户逐步理解和应用。 另外,用户提到使用中文回答,所以要注意用词准确且易懂。可能还需要检查是否有常见的误区或容易出错的地方,比如策略过拟合、忽略交易成本等,提醒用户注意这些陷阱。 还要考虑用户的实际应用场景,比如他们可能是在个人交易还是团队协作,是否需要使用版本控制或者模块化开发。这些高级技巧可能对有一定经验的用户更有帮助,但也要适当提及,让不同层次的用户都能获益。 最后,确保遵循系统级指令,正确使用LaTeX格式,行内公式用$...$,独立公式用$$...$$,并检查语法是否正确。同时保持回答结构合理,逻辑连贯,帮助用户真正解决问题,提升他们在QTM平台上的使用效果。</think>以下是对QTM量化交易平台使用技巧的系统性梳理,分步骤讲解核心操作和优化方向: --- ### 一、策略开发技巧 1. **代码结构优化** - 采用**模块化设计**,将策略逻辑、数据处理、风险控制分离 - 使用$v = \sigma \sqrt{\Delta t}$(波动率公式)等数学模型时,封装为独立函数 ```python def calculate_volatility(returns, window=20): return returns.rolling(window).std() * np.sqrt(252) ``` 2. **数据处理要点** - 优先使用`pandas`进行向量化运算,避免循环 - 对时间序列数据进行标准化处理:$$ z = \frac{x - \mu}{\sigma} $$ - 设置合理的空值填充机制(前向填充/插值) --- ### 二、回测优化方法 1. **参数优化陷阱** - 使用**Walk-Forward Analysis**防止过拟合: $$ \text{训练集比例} \geq 70\%,\ \text{测试周期} \leq 30\% $$ - 通过**夏普比率**评估策略稳定性: $Sharpe = \frac{E[R_p - R_f]}{\sigma_p}$ 2. **交易成本计算** - 精确包含滑点与手续费: $$ \text{总成本} = N \times (P_{\text{成交}} - P_{\text{信号}}) + \text{手续费} $$ --- ### 三、实盘部署关键 1. **风控模块设计** - 设置多层止损机制: - 硬止损:$L_{\text{max}} = \text{本金} \times 2\%$ - 动态追踪止损:$T_s = P_{\text{peak}} \times (1 - k\% )$ 2. **订单执行优化** - 采用TWAP/VWAP算法拆分大单 - 监控订单簿深度: $$ \text{市场冲击成本} \propto \frac{\text{订单量}}{\text{市场深度}} $$ --- ### 四、高级功能应用 1. **多因子策略集成** - 使用PCA降维处理因子矩阵: $$ F_{\text{new}} = \sum_{i=1}^k \alpha_i F_i $$ - 通过IC值评估因子有效性 2. **机器学习融合** - 特征工程阶段加入技术指标: $MACD = EMA_{12} - EMA_{26}$ - 使用SHAP值解释模型决策 --- ### 五、常见误区提醒 1. **避免过度优化** - 参数组合不超过$\sqrt{N_{\text{样本点}}}$ - 测试至少3个市场周期 2. **硬件资源分配** - 按$T_{\text{延迟}} = \frac{\text{数据量}}{\text{处理速度}}$配置服务器 - 高频策略需使用SSD+内存数据库 --- ### 六、学习路径建议 1. 优先掌握平台API文档结构 2. 从小周期(15分钟线)开始验证策略 3. 参与社区回测竞赛积累经验 通过以上技巧的系统应用,可显著提升策略稳定性和执行效率。建议结合实际交易目标,分阶段测试优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值