Pinescript 增量摆动低计数或重置
Pinescript Increment Swing Low count or Reset
我正在尝试增加以创建一个变量,如果满足特定条件,该变量将增加。我正在尝试使用 valuewhen 语法,但很难让它发挥作用。
基本上我在搜索摆动低点(我能够做到这一点)但是如果我当前的摆动低点高于前一个,我想将计数增加 1 并且如果我当前的摆动低点较低比上一个我想将计数重置为 1
这是我今天的输出
使用此代码
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// test
study(title="Swing High Swing Low", shorttitle="Swing High Swing Low" , overlay = true)
HighOfCandle = high*1
LowOfCandle = low*1
CloseOfCandle = close*1
OpenOfCandle = open*1
SizeOfCandle = abs(HighOfCandle-LowOfCandle)
SwingLow = ((LowOfCandle > LowOfCandle[1]) and ( LowOfCandle[1] < LowOfCandle[2])) ?nz(SwingLow[1])+1:0
plotchar(SwingLow, title="SwingLow", text="SWL" , location=location.belowbar,offset=-1, color=green, char="")
SwingLowCount = SwingLow - valuewhen(SwingLow < SwingLow[1], SwingLow , 1 )
plotchar(SwingLowCount==1,char="1",color=orange,location=location.abovebar,transp=0,offset=-1)
plotchar(SwingLowCount==2,char="2",color=orange,location=location.abovebar,transp=0,offset=-1)
plotchar(SwingLowCount==3,char="3",color=orange,location=location.abovebar,transp=0,offset=-1)
这是我想要的预期输出
这是 pine 版本 4 语法,我删除了 offset 参数以正确调试低计数。
// @version=4
study(title="Swing High Swing Low", shorttitle="Swing High Swing Low" , overlay = true)
HighOfCandle = high*1
LowOfCandle = low*1
CloseOfCandle = close*1
OpenOfCandle = open*1
SizeOfCandle = abs(HighOfCandle-LowOfCandle)
SwingLow = ((LowOfCandle > LowOfCandle[1]) and (LowOfCandle[1] < LowOfCandle[2]))
// Value to compare
var float valueSwingLow = na
valueSwingLow := SwingLow ? low : valueSwingLow[1]
// Start the count
var int SwingLowCount = na
SwingLowCount := valueSwingLow > valueSwingLow[1] ? SwingLowCount + 1 : valueSwingLow < valueSwingLow[1] ? 1 : SwingLowCount[1]
// Offset removed
plotchar(SwingLow, title="SwingLow", text="SWL" , location=location.belowbar, color=color.green, char="")
plotchar(SwingLowCount==1 and SwingLow, char = "1", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==2 and SwingLow, char = "2", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==3 and SwingLow, char = "3", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==4 and SwingLow, char = "4", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==5 and SwingLow, char = "5", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==6 and SwingLow, char = "6", color = color.orange, location = location.abovebar, transp = 0)
我正在尝试增加以创建一个变量,如果满足特定条件,该变量将增加。我正在尝试使用 valuewhen 语法,但很难让它发挥作用。
基本上我在搜索摆动低点(我能够做到这一点)但是如果我当前的摆动低点高于前一个,我想将计数增加 1 并且如果我当前的摆动低点较低比上一个我想将计数重置为 1
这是我今天的输出
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// test
study(title="Swing High Swing Low", shorttitle="Swing High Swing Low" , overlay = true)
HighOfCandle = high*1
LowOfCandle = low*1
CloseOfCandle = close*1
OpenOfCandle = open*1
SizeOfCandle = abs(HighOfCandle-LowOfCandle)
SwingLow = ((LowOfCandle > LowOfCandle[1]) and ( LowOfCandle[1] < LowOfCandle[2])) ?nz(SwingLow[1])+1:0
plotchar(SwingLow, title="SwingLow", text="SWL" , location=location.belowbar,offset=-1, color=green, char="")
SwingLowCount = SwingLow - valuewhen(SwingLow < SwingLow[1], SwingLow , 1 )
plotchar(SwingLowCount==1,char="1",color=orange,location=location.abovebar,transp=0,offset=-1)
plotchar(SwingLowCount==2,char="2",color=orange,location=location.abovebar,transp=0,offset=-1)
plotchar(SwingLowCount==3,char="3",color=orange,location=location.abovebar,transp=0,offset=-1)
这是我想要的预期输出
这是 pine 版本 4 语法,我删除了 offset 参数以正确调试低计数。
// @version=4
study(title="Swing High Swing Low", shorttitle="Swing High Swing Low" , overlay = true)
HighOfCandle = high*1
LowOfCandle = low*1
CloseOfCandle = close*1
OpenOfCandle = open*1
SizeOfCandle = abs(HighOfCandle-LowOfCandle)
SwingLow = ((LowOfCandle > LowOfCandle[1]) and (LowOfCandle[1] < LowOfCandle[2]))
// Value to compare
var float valueSwingLow = na
valueSwingLow := SwingLow ? low : valueSwingLow[1]
// Start the count
var int SwingLowCount = na
SwingLowCount := valueSwingLow > valueSwingLow[1] ? SwingLowCount + 1 : valueSwingLow < valueSwingLow[1] ? 1 : SwingLowCount[1]
// Offset removed
plotchar(SwingLow, title="SwingLow", text="SWL" , location=location.belowbar, color=color.green, char="")
plotchar(SwingLowCount==1 and SwingLow, char = "1", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==2 and SwingLow, char = "2", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==3 and SwingLow, char = "3", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==4 and SwingLow, char = "4", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==5 and SwingLow, char = "5", color = color.orange, location = location.abovebar, transp = 0)
plotchar(SwingLowCount==6 and SwingLow, char = "6", color = color.orange, location = location.abovebar, transp = 0)