Pine Script新手求修正每日09:30买15:00卖的失效交易策略代码
Pine Script 日内定时交易代码修正方案
原代码核心问题
- 时间区间设置错误:你要实现09:30买入,原代码写的是09:20-09:21的触发区间,和需求不符
- time函数参数使用错误:第一个参数直接用
period会绑定当前图表的周期,如果你用的是1分钟以上的周期(比如5分钟、15分钟),很可能卡不到你设定的1分钟时间区间,导致触发失效 - 未做开仓状态校验:同一时间区间内如果有多根K线,会重复触发开仓逻辑
- 下单数量未做规则适配:国内股票最小交易单位为100股,直接用
strategy.equity/close得到的小数无法正常下单
修正后可运行代码
//@version=5 strategy("每日定时买卖策略", overlay=true, initial_capital=500000, commission_type=strategy.commission.percent, commission_value=0.1, default_qty_type=strategy.cash, margin_long=100, margin_short=100) // 定义交易时段:周一到周五(12345)的09:30、15:00 is_buy_time = time(timeframe.period, "0930-0931:12345") is_sell_time = time(timeframe.period, "1500-1501:12345") // 判断当前无持仓时才开仓 if is_buy_time and strategy.position_size == 0 // 计算可买股数,向下取整到100的整数倍(适配A股交易规则) qty = math.floor(strategy.equity / close / 100) * 100 strategy.entry("多单入场", strategy.long, qty=qty) // 判断当前有持仓时才平仓 if is_sell_time and strategy.position_size > 0 strategy.close("多单入场")
注意事项
- 请将图表周期调整为1分钟,确保可以准确命中你设置的1分钟时间区间
- 如果交易的标的不是A股,可以删除股数取整的
/100 *100逻辑,适配对应市场的交易单位规则 - 如果需要兼容更高的图表周期,可以把
timeframe.period替换为固定的"1m",强制按1分钟周期校验时间
内容的提问来源于stack exchange,提问作者Venkatesan B
相关产品推荐
相关产品推荐

