Pine Script策略无交易生成问题求助:时段多单止盈止损设置
Pine Script策略无交易生成问题分析与修正
原代码核心问题
- 入场单类型错误:
strategy.entry同时设置stop=high-30和limit=high+60属于止损限价单,逻辑是价格先触及高于当前K线高点60点的limit激活订单,再跌到低于当前高点30点的stop才成交,这种场景几乎无法触发,完全不符合开多单需求。 - 止损止盈逻辑错误:独立的
strategy.exit使用当前K线的high计算止损止盈,会随每根K线动态变化,而非基于入场价固定30/60点。 - 时间条件筛选不严谨:通过时区参数后缀
:23456筛选周几的方式不符合Pine Script规范,正确做法应结合dayofweek和session函数。
修正后的代码
//@version=5 strategy('NY Session Long Strategy', overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1) // 定义纽约时间周一至周五9:00-11:00的时间条件 nySession = session.new("0900-1100", "America/New_York") timeCondition = dayofweek >= dayofweek.monday and dayofweek <= dayofweek.friday and session.ismarket(nySession) // 仅在时间窗口内且无持仓时开多单 if timeCondition and strategy.position_size == 0 strategy.entry('Long', strategy.long) // 绑定入场单,设置固定点差的止损止盈(基于入场价) strategy.exit('Exit Long', from_entry='Long', stop=strategy.position_avg_price - 30, limit=strategy.position_avg_price + 60)
关键修正说明
- 时间条件:用
session.new定义纽约时段,结合dayofweek明确筛选周一至周五,session.ismarket确保当前处于目标交易时段。 - 入场逻辑:改为市价开多,仅在时间窗口内且无持仓时触发,避免重复开单。
- 止损止盈:通过
from_entry绑定入场单,使用strategy.position_avg_price(入场均价)计算固定30点止损、60点止盈,确保止损止盈不随后续K线波动。
内容的提问来源于stack exchange,提问作者Y0ung1
相关产品推荐
相关产品推荐

