TradingView
Peter_O
29 mar 2020 19:10

Function Highest/Lowest by PeterO 

Euro Fx/U.S. DollarFXCM

Opis

No matter how much I like PineScript, there are still things missing in the language. One of the most annoying issues is that you cannot set dynamic length value for highest/lowest functions. This length must be fixed integer. But it doesn't make sense in a lot of cases, when you'd like to know what was the highest/lowest value of a series SINCE EVENT in the past, but you don't know WHEN this event exactly happened.

Us, coders would like to do this: `highest(series,barssince(...))`

But it is not working.

Numerous coders are using RicardoSantos' f_highest/f_lowest script (tradingview.com/script/32ohT5SQ-Function-Highest-Lowest/), probably the most often copy/pasted snippet of PineScript code out there. It is doing more-less what `highest(series,barssince(...))` would be doing, but with hardcoded max bars back.

Ricardo is my idol by the way, but that didn't stop me from creating my own version of Highest/Lowest functions. They are fast, simple, effective and very light for Pine engine.

Please treat this as an OPEN SOURCE snippet of code, which can be used in variety of ways.
I have implemented a simple use-case myself, to demonstrate what can be done. The example shows what was the highest/lowest value of RSI since the previous cross of Stochastic. So that you don't enter SHORT on Stochastic crossunder, if RSI didn't reach oversold (<30) since the previous Stochastic crossunder = aka maybe the downtrend has exhausted.

I'm sure you'll find plenty of use cases for it in your studies and strategies as well. If you create your own code using my Highest/Lowest functions, don't hesitate to put a link down here in comments.

P.S. This is not a strategy in any way, so don't ask me "does it backtest well?".
P.S.2 This code doesn't repaint as well ;)

Informacje o Wersji

Removed unnecessary nz() calls. This is much cleaner. Thanks LucF for tutoring me!

Informacje o Wersji

One more cleaning fix delivered thanks to LucF's mentorship :)
Komentarze
PineCoders
This publication will be featured in our "Best Scripts of The Month" selection. Thank you for your valuable contribution to the TradingView community, and congrats!
syrinxflunki
WICKED COOL !
Peter_O
@syrinxflunki, Thanks!
ru2cool
I am new to pine script and was trying to do the very thing you mentioned in your release notes:

`highest(series,barssince(...))`

However, I had assigned the return value of barssince(...) to a variable and wasn't getting any errors when I saved my script. It simply wouldn't load on the chart and the error there mentioned something about max_bars_back(). Suffice it to say, I was thoroughly confused at that point. Thank you so much for making these functions and for giving a good explanation of the issue in your release notes.
Peter_O
@ru2cool, cool!
LucF
Beautiful logic and will be useful to many, I'm sure. Great idea. Congrats!
Peter_O
Thanks @LucF!
RedKTrader
Absolutely fantastic - well done! very effective piece of code to learn from. thanks for sharing.
Peter_O
@RedKTrader, thanks! I hope you'll find it useful :)
ZMad
Hi, awesome script which I'd like to modify a bit but don't have the knowledge. Could you help solve this issue:

I want to get the lowest low since certain condition happened. With barssince I get the number of bars since the condition happened (I plotted the number and it's correct) but when I pass the variable into lowest function, it returns study error. Here is a code which I hoped would return the lowest value since condition happened but it's not happening.

value_since_last_close = valuewhen((tradeline > tradeline[1]), close, 0)
bars_since = barssince(value_since_last_close)
lowest_low = lowest(low, bars_since)

Many tnx!
Więcej