Pinescript Increment Swing Low count или Reset - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь увеличить, чтобы создать переменную, которая будет увеличиваться, если они соответствуют определенным c условиям. Я пытаюсь использовать синтаксис ValueWhen, но мне трудно заставить его работать.

В основном я ищу Swing low (это я смог это сделать), но если мой текущий минимум колебания выше, чем предыдущий чем я хочу увеличить счет на 1, и если мой текущий минимум колебания ниже, чем мой предыдущий, я хочу сбросить счет до 1

Вот результат, который у меня есть сегодня

enter image description here With this code

// 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)

And here is the expected output i would like to have введите описание изображения здесь

1 Ответ

2 голосов
/ 13 июля 2020

Это синтаксис Pine версии 4, я удалил аргумент смещения, чтобы правильно отладить низкий счетчик.

// @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)
...