You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

1分钟图表交易策略如何查看5秒/1秒级利润?request.security返回零求助

1分钟策略里跟踪5秒/1秒周期的盈亏方法

首先说你遇到的request.security返回0的问题,大概率是两个原因:要么平台回测时不提供这么低周期的历史数据,要么你没在低周期上下文里正确传递持仓信息来计算盈亏。下面给你具体解决办法:

正确用request.security实现低周期盈亏跟踪

要在5秒/1秒周期里算利润,得把1分钟主框架的持仓状态(多空、入场价)传到低周期,然后在低周期里用实时收盘价算浮动盈亏。直接上代码示例:

//@version=5
strategy("1min策略+5秒盈亏跟踪", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// 1分钟级别的买卖信号(你可以换成自己的策略逻辑)
开多 = ta.crossover(ta.sma(close, 5), ta.sma(close, 20))
开空 = ta.crossunder(ta.sma(close, 5), ta.sma(close, 20))

if (开多)
    strategy.entry("多单", strategy.long)
if (开空)
    strategy.entry("空单", strategy.short)

// 获取当前1分钟框架下的持仓状态
持仓多 = strategy.position_size > 0
持仓空 = strategy.position_size < 0
入场均价 = strategy.position_avg_price

// 定义盈亏计算的小函数
计算盈亏(_持仓多, _入场价, 当前价) =>
    if _持仓多
        (当前价 - _入场价) / _入场价 * 100  // 多单盈亏百分比
    else if _持仓空
        (_入场价 - 当前价) / _入场价 * 100  // 空单盈亏百分比
    else
        0.0

// 请求5秒周期的数据,计算该周期内的盈亏
5秒盈亏 = request.security(syminfo.tickerid, "5", 计算盈亏(持仓多, 入场均价, close))

// 把5秒盈亏画在图表上,方便查看
plot(5秒盈亏, title="5秒盈亏(%)", color=color.blue, linewidth=2)

// 最后一根K线显示当前盈亏(可选)
if barstate.islast
    label.new(bar_index, high, str.tostring(5秒盈亏) + "%", color=color.yellow)

关键注意事项

  • 数据权限问题:很多平台回测时不支持1秒/5秒的历史数据,只在实时行情里提供。如果换15秒周期测试能出数据,那就是平台限制,没法在回测里用更低周期。
  • 持仓状态同步:必须把主框架的持仓多/空、入场价传到低周期,不然低周期里不知道你有没有持仓,算出来的盈亏肯定是0。
  • 性能问题:请求1秒数据会让回测速度变慢很多,建议先测5秒没问题再试1秒。
  • 别碰calc_on_every_tick:这个确实只在实时/正向测试生效,回测时用不了,所以必须用request.security走低周期计算。

排查返回0的小技巧

先测下低周期的收盘价能不能拿到,把这段代码加到策略里:

5秒收盘价 = request.security(syminfo.tickerid, "5", close)
plot(5秒收盘价, title="5秒收盘价", color=color.red)

如果5秒收盘价是0,那就是平台不给这个周期的回测数据,只能换周期或者用实时测试。

内容的提问来源于stack exchange,提问作者Kaamran Raahemifar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:52:23