本文汇总期魔方期货策略中的辅助功能 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 交易指令]
- [日志查询与调试]

评论
登录后参与讨论,与站内账号体系共用。