如何在PineScript中同时基于开盘收盘价绘制高低枢轴线?
问题描述
我目前在PineScript中通过K线影线(high、low)识别高低枢轴点(swing high、swing low)并绘制对应线条,但现在希望同时基于开盘价(open)和收盘价(close)来绘制这类线条,请问该如何实现?
以下是我当前使用的代码:
study(title="Para Basma", shorttitle="Para Basma", overlay=true) // Inputs pvtLenL= input(3, minval=1, title="Pivot Uzunluğu Sol Taraf") pvtLenR= input(3, minval=1, title="Pivot Uzunluğu Sağ Taraf") // Yüksek ve Düşük Pivot Noktaları Alın pvthi_ = pivothigh(high, pvtLenL, pvtLenR) pvtlo_ = pivotlow(low, pvtLenL, pvtLenR) // Çizdirmeden önce Zorla Pivot tamamlama. Shunt = 1 //Pivotu yazdırmadan önce kapanmayı bekle? 1 gerçek için 0 yanlış için maxLvlLen = 0 //Maksimum Uzatma Uzunluğu pvthi = pvthi_[Shunt] pvtlo = pvtlo_[Shunt] // Mevcut Pivot Seviyesi için kaç mum olduğunu sayın, Yeni sıfırlama durumunda. counthi = barssince(not na(pvthi)) countlo = barssince(not na(pvtlo)) pvthis = fixnan(pvthi) pvtlos = fixnan(pvtlo) hipc = change(pvthis) != 0 ? na : color.maroon lopc = change(pvtlos) != 0 ? na : color.green // Display Pivot lines plot((maxLvlLen == 0 or counthi< maxLvlLen) ? pvthis : na, color=hipc, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="Top Levels") plot((maxLvlLen == 0 or countlo < maxLvlLen) ? pvtlos : na, color=lopc, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="Bottom Levels")
(原效果示意图展示了基于影线绘制的高低枢轴水平线)
实现方案
要基于open和close绘制枢轴线,只需仿照原有逻辑,分别对开盘价、收盘价调用pivothigh()和pivotlow()函数,再添加对应的绘制逻辑即可。以下是修改后的完整代码:
study(title="Para Basma - 多价格维度枢轴线", shorttitle="Para Basma", overlay=true) // Inputs pvtLenL= input(3, minval=1, title="左侧枢轴长度") pvtLenR= input(3, minval=1, title="右侧枢轴长度") // --- 原有影线枢轴逻辑 --- pvthi_high_ = pivothigh(high, pvtLenL, pvtLenR) pvtlo_low_ = pivotlow(low, pvtLenL, pvtLenR) // --- 新增开盘价枢轴逻辑 --- pvthi_open_ = pivothigh(open, pvtLenL, pvtLenR) pvtlo_open_ = pivotlow(open, pvtLenL, pvtLenR) // --- 新增收盘价枢轴逻辑 --- pvthi_close_ = pivothigh(close, pvtLenL, pvtLenR) pvtlo_close_ = pivotlow(close, pvtLenL, pvtLenR) // 延迟绘制(确保枢轴确认) Shunt = 1 // 1=等待K线收盘后绘制,0=即时绘制 maxLvlLen = 0 // 线条最大延伸长度(0=无限延伸) // 应用延迟 pvthi_high = pvthi_high_[Shunt] pvtlo_low = pvtlo_low_[Shunt] pvthi_open = pvthi_open_[Shunt] pvtlo_open = pvtlo_open_[Shunt] pvthi_close = pvthi_close_[Shunt] pvtlo_close = pvtlo_close_[Shunt] // 计算当前枢轴持续的K线数 counthi_high = barssince(not na(pvthi_high)) countlo_low = barssince(not na(pvtlo_low)) counthi_open = barssince(not na(pvthi_open)) countlo_open = barssince(not na(pvtlo_open)) counthi_close = barssince(not na(pvthi_close)) countlo_close = barssince(not na(pvtlo_close)) // 填充NaN值(让线条连续) pvthis_high = fixnan(pvthi_high) pvtlos_low = fixnan(pvtlo_low) pvthis_open = fixnan(pvthi_open) pvtlos_open = fixnan(pvtlo_open) pvthis_close = fixnan(pvthi_close) pvtlos_close = fixnan(pvtlo_close) // 线条颜色逻辑(仅在枢轴延续时显示颜色) hipc_high = change(pvthis_high) != 0 ? na : color.maroon lopc_low = change(pvtlos_low) != 0 ? na : color.green hipc_open = change(pvthis_open) != 0 ? na : color.orange lopc_open = change(pvtlos_open) != 0 ? na : color.yellow hipc_close = change(pvthis_close) != 0 ? na : color.blue lopc_close = change(pvtlos_close) != 0 ? na : color.cyan // 绘制所有枢轴线 // 影线高低枢轴 plot((maxLvlLen == 0 or counthi_high < maxLvlLen) ? pvthis_high : na, color=hipc_high, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="影线高点枢轴") plot((maxLvlLen == 0 or countlo_low < maxLvlLen) ? pvtlos_low : na, color=lopc_low, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="影线低点枢轴") // 开盘价高低枢轴 plot((maxLvlLen == 0 or counthi_open < maxLvlLen) ? pvthis_open : na, color=hipc_open, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="开盘价高点枢轴") plot((maxLvlLen == 0 or countlo_open < maxLvlLen) ? pvtlos_open : na, color=lopc_open, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="开盘价低点枢轴") // 收盘价高低枢轴 plot((maxLvlLen == 0 or counthi_close < maxLvlLen) ? pvthis_close : na, color=hipc_close, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="收盘价高点枢轴") plot((maxLvlLen == 0 or countlo_close < maxLvlLen) ? pvtlos_close : na, color=lopc_close, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="收盘价低点枢轴")
代码说明
- 分别为
open和close新增了枢轴点计算逻辑,与原有high/low的逻辑完全一致 - 为不同价格维度的枢轴线设置了不同颜色,方便区分
- 保留了原有的延迟绘制、线条延伸长度控制等逻辑
- 所有注释已翻译成中文,便于理解
内容的提问来源于stack exchange,提问作者user3134138
相关产品推荐
相关产品推荐

