TradingView策略中获取实时Tick价格及高低点交易实现咨询
解决方案:Pine Script策略中获取Tick级实时价格并实现高低点触发交易
核心逻辑
策略默认仅在K线闭合时计算,要实现Tick级实时响应,必须在策略声明中开启calc_on_every_tick=true参数。在实时行情下,Pine Script内置的close变量本身就代表当前最新的Tick成交价,无需额外调用外部函数。
1小时实时高低点跟踪与交易实现
以下是可直接运行的策略代码,实现“1小时K线高点更新做空、低点更新做多”的逻辑:
//@version=5 strategy("实时高低点交易策略", overlay=true, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1) // 获取当前未闭合1小时K线的实时高点/低点 hourly_high = request.security(syminfo.tickerid, "60", high, barmerge.gaps_on, barmerge.lookahead_on) hourly_low = request.security(syminfo.tickerid, "60", low, barmerge.gaps_on, barmerge.lookahead_on) // 存储前一次记录的高低点(用var确保值不随K线重置) var float prev_hourly_high = na var float prev_hourly_low = na // 判断高低点是否更新 high_updated = hourly_high > prev_hourly_high low_updated = hourly_low < prev_hourly_low // 高点更新时执行做空逻辑 if (high_updated) strategy.close("多单", comment="高点更新平多") strategy.entry("空单", strategy.short, comment="高点更新开空") prev_hourly_high := hourly_high // 更新记录的高点 // 低点更新时执行做多逻辑 if (low_updated) strategy.close("空单", comment="低点更新平空") strategy.entry("多单", strategy.long, comment="低点更新开多") prev_hourly_low := hourly_low // 更新记录的低点 // 初始化高低点记录 if (na(prev_hourly_high)) prev_hourly_high := hourly_high if (na(prev_hourly_low)) prev_hourly_low := hourly_low // 可视化实时高低点 plot(hourly_high, color=color.red, title="实时1小时高点") plot(hourly_low, color=color.green, title="实时1小时低点")
关键参数说明
calc_on_every_tick=true:强制策略在每一个Tick到来时重新计算,这是实现实时触发交易的核心开关。barmerge.lookahead_on:开启此参数后,request.security会返回当前未闭合1小时K线的实时数据,而非仅已闭合的历史K线数据。var关键字:用于声明持续保留的变量,避免每次K线刷新时重置高低点记录值,确保能准确判断是否更新。
避坑提示
- 不要用
request.security(syminfo.ticker, "1", close)获取Tick价格:1分钟K线的close是1分钟周期的闭合价,并非真正的Tick级实时价格。直接使用当前图表的close变量即可获取最新Tick成交价(仅在实时行情生效)。
内容的提问来源于stack exchange,提问作者hellyeah
相关产品推荐
相关产品推荐

