TradingView Pine Script特定日期行权价绘制及趋势线生成问题
完整解决方案代码(Pine Script v5)
//@version=5 indicator("Entry to Strike Trendline", overlay=true) // 自定义输入参数 entry_time = input.time(defval = timestamp("8/31/2021 09:30"), title = "入场日期时间") short_strike = input.float(defval = 4400.0, title = "卖出行权价", step = 0.1) // 默认结束时间为入场当日收盘,可自行修改 end_time = input.time(defval = timestamp(year(entry_time), month(entry_time), dayofmonth(entry_time), 16, 0), title = "结束时间") // 1. 限定范围的行权价水平线绘制 strike_line = time >= entry_time and time <= end_time ? short_strike : na plot(strike_line, color = color.new(color.red, 0), linewidth = 2, title = "行权价线") // 2. 入场点到行权价的趋势线绘制 var line trend_line = na if barstate.islastconfirmedhistory and na(trend_line) // 定位入场时间对应的K线位置和价格 entry_bar_idx = ta.valuewhen(time == entry_time, bar_index, 0) entry_price = ta.valuewhen(time == entry_time, close, 0) // 定位结束时间对应的K线位置 end_bar_idx = ta.valuewhen(time == end_time, bar_index, 0) // 创建趋势线 trend_line := line.new(x1 = entry_bar_idx, y1 = entry_price, x2 = end_bar_idx, y2 = short_strike, color = color.new(color.blue, 0), width = 2, style = line.style_dashed)
核心改动说明
- 行权价线范围限制:去掉原代码中带
var声明的持久化变量,通过三元表达式动态判断当前K线是否在指定时间区间内,超出区间时返回na,plot函数遇到na会自动中断绘制,自然限制了线条显示范围。 - 趋势线实现:通过
var声明line对象仅初始化一次,避免重复生成冗余线条,使用ta.valuewhen定位入场、结束时间对应的K线位置,以入场点收盘价为起点、结束时间的行权价为终点绘制趋势线。 - 如需兼容Pine Script v4,只需将
indicator替换为study,ta.valuewhen替换为valuewhen即可。
内容的提问来源于stack exchange,提问作者user1015196
相关产品推荐
相关产品推荐

