KB / ARTICLE

核心API-辅助功能

策略文档 · 期货版修订 R1发布于 2026-10-10

本文汇总期魔方期货策略中的辅助功能 API,包括日志与消息推送、交易时间判断、模型/因子函数加载、策略停止任务。

日志与消息推送

put_log(text_data, level='INFO') — 推送日志

推送日志到前端展示的方法

用户可以使用 put_log 函数打印日志,如果没有显示出来,可以将level参数提高级别到 'ERROR'级别或者通过 设置-通用设置打开策略日志记录;

基于回测的日志信息在软件退出后会写入到用户目录的 AppData\Local\qmfquant\logs\backtest_server 下面

基于任务的日志信息在软件退出后会写入到用户目录的 AppData\Local\qmfquant\logs\task_server 下面

输入参数

参数 参数名称 参数类型 是否必填 描述
text_data 消息内容 str 是
level 日志级别 str 否 有'INFO','ERROR','USER_LOG'三种级别(默认为 'USER_LOG' 级别)
def on_tick(context):
    put_log(f"tick price={get_tick('rb2510').get('last_price')}", level='INFO')

def on_trade(context, trade):
    put_log(f"成交! {trade.symbol} {trade.volume}手 @ {trade.price}", level='USER_LOG')

def on_error(context, err):
    put_log(f"出错了: {err}", level='ERROR')

send_message_ex(text_data) — 推送自定义消息

调用该函数可以通过期魔方软件推送指定消息。

输入参数

参数 参数名称 参数类型 是否必填 描述
text_data 消息内容 str 是
def on_tick(context):
    # 此处运行交易逻辑代码
    # 在某个条件触发时发送预警
    if signal_alert:
        send_message_ex(f"RSI 突破 80,当前值={rsi_val}")

避免在循环中使用,防止大量消息刷屏。

交易时间判断

is_trading_time(symbol_name) — 获取当前是否处于交易时间范围

通过该函数判断当前时间是否可处于交易时间范围中,一般用于报单前,只有处于报单时间范围时,才触发报单操作。

输入参数

参数 参数名称 参数类型 是否必填 描述
symbol_name 合约代码 str 是 需要查询当前主力合约的品种,不可以带后缀,例如 'ss','ag','rb'

返回值

参数 参数名称 参数类型 描述
is_time 返回是否处在交易时间中 bool 为 True 时,当前处在交易时间中; 为 False 时,当前处在不可交易时间中

接口案例

def on_tick(context):
    # 夜盘可能会有不同品种的交易时段差异
    if not is_trading_time('rb'):
        return
    # ... 正常逻辑

模型与因子加载

load_model(model_file_path) — 加载机器学习模型

调用该函数可以加载指定机器学习模型,并返回模型。

输入参数

参数 参数名称 参数类型 是否必填 描述
model_file_path 模型的地址 str 是

返回值

参数 参数名称 参数类型 描述
model 返回模型对象 any

接口案例

def on_tick(context):
    # 此处运行交易逻辑代码
    ...
    # 需要退出任务运行时调用
    model = load_model(model_file_path)

get_indicator_function(file_path) — 加载因子计算函数

调用该函数可以加载指定因子计算函数,并返回函数。

输入参数

参数 参数名称 参数类型 是否必填 描述
file_path 因子计算函数的地址 str 是

返回值

参数 参数名称 参数类型 描述
fun 返回函数对象 function

接口案例

def on_init(context):
    # 在init中读取因子计算方法
    context.rsi_fun = get_indicator_function("rsi.dill")
def on_bar(context):
    # 传入获取的K线,调用该方法计算因子值
    rsi = context.rsi_fun(get_kline(symbol, period, 600))

策略停止任务

remove() — 策略停止任务

立即停止当前策略(相当于用户点了「停止」按钮),回测谨慎使用,相当于停止回测无回测结果。

典型用途:策略内部主动退出(例如达到目标、风控触发)。

def on_bar(context):
    # 止盈:总浮盈 > 20% 时策略主动退出
    account = get_account()
    balance = account.get('TotalBalance', 0)
    if balance > context.initial_balance * 1.20:
        put_log("达到目标收益,策略主动退出", level='USER_LOG')
        remove()

相关阅读

  • [策略生命周期与回调函数]
  • [核心API 账户持仓查询]
  • [核心API 合约信息查询]
  • [核心API 交易指令]
  • [日志查询与调试]
已复制到剪贴板
策略文档 · 期货版修订 R1

返回策略文档 · 期货版板块

评论