In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.
The indicator works fine with me, but I will not use it for it's a bad try of the Better Sine Wave. See http://emini-watch.com/
Did you put //@version=2 on the first line? It's a must, see below an excerpt of the tutorial manual. We should avoid the use of the operator ":=" whenever possible. This was translated from another language and it's easier to do it this way using just one mutable variable DeltaPhase but in the future there will be problems using mutable variables within functions.
Mutable variable is such a variable which can be given a new value.
The operator ‘:=’ must be used to give a value to a variable. To use this operator, a special attribute must be used in the first line of a code: //@version=2. This attribute identifies the version of Pine Script. Mutable variables were introduced in version 2.
A variable must be declared before you can set a value for it (declaration of variables has been described above).
Type of a variable is identified on the declaration step. A variable can be given a value of expression only if both the expression and the variable belong to the same type, otherwise it will give you a compilation error.
Variable assignment example:
price = close
if hl2 > price
price := hl2
Getting the occasional following error: Index can't be a negative value (-1)
Only on some price charts though, so might be difficult to recreate.
Pine points to plot(currdotvalue, ... as having the Index error.
Been having a play myself, and thought maybe it's when nz(currdotvalue) gets initialised ...