Library "ZigzagMethods" Object oriented implementation of Zigzag methods. Please refer to ZigzagTypes library for User defined types used in this library
tostring(this, sortKeys, sortOrder, includeKeys) Converts ZigzagTypes/Pivot object to string representation Parameters: this: ZigzagTypes/Pivot sortKeys: If set to true, string output is sorted by keys. sortOrder: Applicable only if sortKeys is set to true. Positive number will sort them in ascending order whreas negative numer will sort them in descending order. Passing 0 will not sort the keys includeKeys: Array of string containing selective keys. Optional parmaeter. If not provided, all the keys are considered Returns: string representation of ZigzagTypes/Pivot
tostring(this, sortKeys, sortOrder, includeKeys) Converts Array of Pivot objects to string representation Parameters: this: Pivot object array sortKeys: If set to true, string output is sorted by keys. sortOrder: Applicable only if sortKeys is set to true. Positive number will sort them in ascending order whreas negative numer will sort them in descending order. Passing 0 will not sort the keys includeKeys: Array of string containing selective keys. Optional parmaeter. If not provided, all the keys are considered Returns: string representation of Pivot object array
tostring(this) Converts ZigzagFlags object to string representation Parameters: this: ZigzagFlags object Returns: string representation of ZigzagFlags
tostring(this, sortKeys, sortOrder, includeKeys) Converts ZigzagTypes/Zigzag object to string representation Parameters: this: ZigzagTypes/Zigzagobject sortKeys: If set to true, string output is sorted by keys. sortOrder: Applicable only if sortKeys is set to true. Positive number will sort them in ascending order whreas negative numer will sort them in descending order. Passing 0 will not sort the keys includeKeys: Array of string containing selective keys. Optional parmaeter. If not provided, all the keys are considered Returns: string representation of ZigzagTypes/Zigzag
calculate(this, ohlc, indicators, indicatorNames) Calculate zigzag based on input values and indicator values Parameters: this: Zigzag object ohlc: Array containing OHLC values. Can also have custom values for which zigzag to be calculated indicators: Array of indicator values indicatorNames: Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: current Zigzag object
calculate(this) Calculate zigzag based on properties embedded within Zigzag object Parameters: this: Zigzag object Returns: current Zigzag object
nextlevel(this) Calculate Next Level Zigzag based on the current calculated zigzag object Parameters: this: Zigzag object Returns: Next Level Zigzag object
drawfresh(this) draws fresh zigzag based on properties embedded in ZigzagDrawing object Parameters: this: ZigzagDrawing object Returns: ZigzagDrawing object
drawcontinuous(this) draws zigzag based on the zigzagmatrix input Parameters: this: ZigzagDrawing object Returns: [array<line> zigzaglines, array<label> zigzaglabels]
Nota Keluaran
⋅
v2
Updates to auto calculate zigzag in Drawing methods.
Updated: drawfresh(this, ohlc, indicators, indicatorNames) draws fresh zigzag based on properties embedded in ZigzagDrawing object Parameters: this: ZigzagDrawing object ohlc: values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators: Array of indicator values indicatorNames: Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: ZigzagDrawing object
drawcontinuous(this, ohlc, indicators, indicatorNames) draws zigzag based on the zigzagmatrix input Parameters: this: ZigzagDrawing object ohlc: values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators: Array of indicator values indicatorNames: Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: [array<line> zigzaglines, array<label> zigzaglabels]
Nota Keluaran
⋅
v3
Added: drawplain(this) draws fresh zigzag based on properties embedded in ZigzagDrawing object without trying to calculate Parameters: this: ZigzagDrawing object Returns: ZigzagDrawing object
Updated: method tostring(this, sortKeys, sortOrder, includeKeys) Converts ZigzagTypes/Zigzag object to string representation Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/4): ZigzagTypes/Zigzagobject sortKeys (bool): If set to true, string output is sorted by keys. sortOrder (int): Applicable only if sortKeys is set to true. Positive number will sort them in ascending order whreas negative numer will sort them in descending order. Passing 0 will not sort the keys includeKeys (string[]): Array of string containing selective keys. Optional parmaeter. If not provided, all the keys are considered Returns: string representation of ZigzagTypes/Zigzag
method calculate(this) Calculate zigzag based on properties embedded within Zigzag object Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/4): Zigzag object Returns: current Zigzag object
method nextlevel(this) Calculate Next Level Zigzag based on the current calculated zigzag object Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/4): Zigzag object Returns: Next Level Zigzag object
method clear(this) Clears zigzag drawings array Namespace types: Objects.ZigzagDrawing[] Parameters: this (ZigzagDrawing[] type from HeWhoMustNotBeNamed/ZigzagTypes/4): array<ZigzagDrawing> Returns: void
method drawplain(this) draws fresh zigzag based on properties embedded in ZigzagDrawing object without trying to calculate Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/4): ZigzagDrawing object Returns: ZigzagDrawing object
method drawfresh(this, ohlc, indicators, indicatorNames) draws fresh zigzag based on properties embedded in ZigzagDrawing object Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/4): ZigzagDrawing object ohlc (float[]): values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators (matrix<float>): Array of indicator values indicatorNames (string[]): Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: ZigzagDrawing object
method drawcontinuous(this, ohlc, indicators, indicatorNames) draws zigzag based on the zigzagmatrix input Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/4): ZigzagDrawing object ohlc (float[]): values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators (matrix<float>): Array of indicator values indicatorNames (string[]): Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: [array<line> zigzaglines, array<label> zigzaglabels]
Nota Keluaran
⋅
v6
Updated: method tostring(this, sortKeys, sortOrder, includeKeys) Converts ZigzagTypes/Zigzag object to string representation Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/5): ZigzagTypes/Zigzagobject sortKeys (bool): If set to true, string output is sorted by keys. sortOrder (int): Applicable only if sortKeys is set to true. Positive number will sort them in ascending order whreas negative numer will sort them in descending order. Passing 0 will not sort the keys includeKeys (string[]): Array of string containing selective keys. Optional parmaeter. If not provided, all the keys are considered Returns: string representation of ZigzagTypes/Zigzag
method calculate(this) Calculate zigzag based on properties embedded within Zigzag object Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/5): Zigzag object Returns: current Zigzag object
method nextlevel(this) Calculate Next Level Zigzag based on the current calculated zigzag object Namespace types: Objects.Zigzag Parameters: this (Zigzag type from HeWhoMustNotBeNamed/ZigzagTypes/5): Zigzag object Returns: Next Level Zigzag object
method clear(this) Clears zigzag drawings array Namespace types: Objects.ZigzagDrawing[] Parameters: this (ZigzagDrawing[] type from HeWhoMustNotBeNamed/ZigzagTypes/5): array<ZigzagDrawing> Returns: void
method drawplain(this) draws fresh zigzag based on properties embedded in ZigzagDrawing object without trying to calculate Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/5): ZigzagDrawing object Returns: ZigzagDrawing object
method drawfresh(this, ohlc, indicators, indicatorNames) draws fresh zigzag based on properties embedded in ZigzagDrawing object Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/5): ZigzagDrawing object ohlc (float[]): values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators (matrix<float>): Array of indicator values indicatorNames (string[]): Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: ZigzagDrawing object
method drawcontinuous(this, ohlc, indicators, indicatorNames) draws zigzag based on the zigzagmatrix input Namespace types: Objects.ZigzagDrawing Parameters: this (ZigzagDrawing type from HeWhoMustNotBeNamed/ZigzagTypes/5): ZigzagDrawing object ohlc (float[]): values on which the zigzag needs to be calculated and drawn. If not set will use regular OHLC indicators (matrix<float>): Array of indicator values indicatorNames (string[]): Array of indicator names for which values are present. Size of indicators array should be equal to that of indicatorNames Returns: [array<line> zigzaglines, array<label> zigzaglabels]
Won't `na(indicatorValues) or indicatorValues.rows()==0` (line 33) produce an error if indicatorValues is na? As far as I know, both arguments of logical operators are evaluated in Pine Script.
Trendoscope
⋅
@moebius1977, good catch. Yes, it does. May need to change it to nested ternary statement instead.
@moebius1977, hmm. Don't think so. I can check. But, I use na ternary on loops all the time. Never faced issue
Trendoscope
⋅
@HeWhoMustNotBeNamed, hmm. Actually you are right. I assumed that indicator of lows will always be lower than that of indicator of highs. Apparently not.
moebius1977
⋅
@HeWhoMustNotBeNamed, also, based on line 35, Indicator.indicatorHigh looks like "highest of the indicator values" rather than "Indicator Value applied on High" as stated in the @Field description.
Trendoscope
⋅
@moebius1977, not really. It's indicator value applied on high and indicator low is indicator value applied on low. But, they need to be passed as such by caller.
moebius1977
⋅
Absolutely beautiful! I am just starting with PineScript and my first move was to go your way, typify and objectify everything. But then I found that UDT of arrays may be faster than array of UDT's, so went that way for now. Here is how I tested it. Not sure my test method is 100% accurate, but looks like it is about 20-30% more efficient for large arrays to store values in individual arrays rather than make an array of UDT objects tradingview.com/script/F4dFQBtz-Profiling-array-of-UDTs-vs-UDT-of-arrays/
Trendoscope
⋅
@moebius1977, I have noticed slight lag as well. But, using array of UDTs is more easy to read and maintain. Hopefully pine team will work on improvements.
lruczu
⋅
Your code looks impressive! I'm quite new to Pine Script. Could you give some hint how to plot just one zigzag (I mean one level)?