Function - Custom SwitchMethod to do a custom switch that can handle int/float/bool/string type conditions using arrays.
Function
Examples of Rolling Average Using Automated AnchoringIn this study, I present a method to expose NaN values to development environment.
This exposure allows NaN values to be used by methods in scripts.
I also show how to use values, even NaN values, as anchors from which statistics can be computed from.
I demonstrate how to do this with constants and variables in methods for computing the cumulative/rolling average of a series.
I also show how to calculate the cumulative/rolling average from the start of a ticker series using the aforementioned methods.
Each method has a description on how some of their parts work as well as their constraints.
Method #1 - Can only be used for computing the rolling average on the ticker series.
Method #2 - The simple moving average from the Pine Script reference.
- Can be used to calculate the rolling average of the ticker series and number values of a series.
- This method seems to cause an error when there are many bars in the series.
Method #3 - The most versatile method due to the use of computing the rolling average using an array.
- Timeout will occur when computing the rolling average of an entire ticker series which is long.
- Timeout has not occurred when computing a rolling average of a series from NaN or non-NaN anchor points even when the series is long.
This is an attempt to get around the constraints of the built-in sma(source, length) function in which length cannot be dynamically adjusted.
Other Pine Script functions have that constraint which we can get around by defining our own functions.
Function: Dinamic string InterpreterEXPERIMENTAL:
a arithmetic string interpreter that allows for using basic operations on input strings.
note: float values not supported currently.
Remember Rules Label - incl. Text Function with different colorsHi BIG PLAYERS
Each of us makes mistakes and exceptions confirm the rule.
However, if you disregard the rules of trading, you lose your money - without any ifs and buts!
I have therefore created a reminder label for myself, which trading approaches I always want to stick to. These rules serve me as a guideline when I should trade.
Through the permanent reminder I set myself the goal of not trading too early and impatiently. The biggest problem of all traders is overtrading: the constant swaying back and forth between greed and fear. This must always be kept in mind. Because trading is in principle very simple: stick to your own rules. Keep a logbook and for my sake, record every trade as a screenshot in a PowerPoint presentation. Then you can see your mistakes in the past trades and recognize your background, why loss trades have arisen - you can also determine profit trades: As a rule, profits arise when you strictly adhere to your trading rules.
If you compare a company with a trader, then it is generally a similar procedure.
company view
a company plans its annual development with budget and forecast.
a company compares monthly between actual values and plan values and draws conclusions from the differences.
trader view
a trader should handle and plan his trade with all rules.
a trader should compare the result after the trade with the planned trade and discuss conclusions from possible differences.
I hope I could help other traders with this.
Kind regards
NXT2017
Mod and Round To Tick FunctionI have not found this function anywhere on Tradingview but it can be very useful in setting orders in a strategy and non-integer boundaries for certain indicator designs. Its a bit underwhelming, but in other languages you can call a mod() function and the output will be the remainder of the integer.
If you want to set an order at a specific tick value, particularly in futures, you can't set it at a specific tick when using calculated values like ATR or Standard Deviation without a function like this.
It can also be used to clean up certain band/envelope style indicators if you want to have a straight line, but don't want to simply round to an integer.
Credit for the round to tick aspect goes to the eternal fountain of resources, the Backtesting & Trading Engine script from @pinecoders
This is just another tool to throw in the box for when you might need it.
function: Array DownsamplingA low cost function to down sample a array.
specially useful for pattern recognition algorithms.
Test: Chain casting multiple functions performanceExperimental:
A simple test to check performance impact of chaining functions in pinescript.
Test calling frequency impact.
Test: Chain casting functions performanceExperimental:
A simple test to check performance impact of chaining functions in pinescript.
Function Polynomial RegressionDescription:
A function that returns a polynomial regression and deviation information for a data set.
Inputs:
_X: Array containing x data points.
_Y: Array containing y data points.
Outputs:
_predictions: Array with adjusted _Y values.
_max_dev: Max deviation from the mean.
_min_dev: Min deviation from the mean.
_stdev/_sizeX: Average deviation from the mean.
Resources:
en.wikipedia.org
rosettacode.org
Function - Linear RegressionDescription:
A Function that returns a linear regression channel using (X,Y) vector points.
Inputs:
_X: Array containing x data points.¹
_Y: Array containing y data points.¹
Note:
¹: _X and _Y size must match.
Outputs:
_predictions: Array with adjusted _Y values at _X.
_max_dev: Max deviation from the mean.
_min_dev: Min deviation from the mean.
_stdev/_sizeX: Average deviation from the mean.
Resources:
www.statisticshowto.com
en.wikipedia.org
Function K-Means ClusteringDescription:
A Function that returns cluster centers for given data (X,Y) vector points.
Inputs:
_X: Array containing x data points.¹
_Y: Array containing y data points.¹
_number_of_clusters: number of clusters.
Note:
¹: _X and _Y size must match.
Outputs:
_centers_x: Array containing x data points.
_centers_y: Array containing y data points.
Resources:
rosettacode.org
en.wikipedia.org
Function: Multi Dimension IndexerDescription:
A Function that returns the flat index of a N dimensions array.
Inputs:
_indices: Array containing dimension indices.¹
_limits: Array containing dimension size.¹
Note:
¹: _indices and _limits size must match. indices must be within dimension size.
Outputs:
_offset: the flat 1D index.
Resources:
eli.thegreenplace.net
FUNCTION: Specify lengths in time (or bars) This is a function to give measures in time rather than bars...
I often want to measure in things in time rather than bars and change the sample rate (the candle size)
without reconfiguring my settings. This is a handy function for setting you input lengths in time units
(or bars when you want that)
For example
I want a 3 hour moving average, regardless of whether I have 5 minute candles or 30 min candles...
I want a 200 day moving average, regardless of whether I have 1 day or 1 week candles...
This is designed for you to put in your own scripts for your own purpose, but you can use this as is for time constant moving averages
or as an indicator on an indicator.
This shows the same moving averages 45 min / 3 hours in aqua / fuchsia and 1 day / 1 week in red / green
First row: On an extended session chart with 10m, 30m and 60m candles (all of them use the same settings (day length is 16 hours) everything else default.
Second row: On a standard session chart with 10m, 30m and 60m candles (all of them use the same settings everything else default.
Nth-Occurrence Custom barssince() Function by Cryptorhythms [CR]Nth-Occurrence Custom barssince() Function by Cryptorhythms
Description
The vanilla barssince() function in pine only finds the number of bars since the most recent occurrence of the condition. This version allows you to specify an Nth occurrence back to check the bars since! Its also a nice little one liner.
I really hope you enjoy it and if you're looking for more, this is our 79th script on TV, so there is plenty to choose from!
Let me know in the comments if you create anything useful from this or think of anyway to improve it!
[e2] Fibonacci slicerFibonacci slicer function.
The script is a simple calculator that accepts any 2 input values and divides the distance between those values using Fibonacci proportions.
- Easy for script integration (lines 21-35).
- The function accepts any 2 values and their order doesn't matter.
- Correctly divides negative-negative, negative-positive, positive-negative and positive-positive values.
- Calculates 7 levels derived from the Golden ratio (1.618033).
[RS]Example: function instantiationEXPERIMENTAL:
Practical example of how to create a shared function instance.
Early/Delayed Signal FunctionEarly/Delayed Signal Function (before the bar close or after)
Usually, signals are considered to be valid at the bar close .
Some traders may prefer to have a chance to enter earlier .
It is of great risk , and the Strategy Tester is unable to provide consistent backtest data with regards to this.
But for those who want to integrate such a choice in their strategies, here is the Early Signal Function .
The function takes 2 parameters
- the signal that is considered valid at the bar close , of type bool
- the early time value in seconds, the time before the signal is valid, of type int
it returns a value of type bool - a New Entry Signal
The resulting conditions used for alerts would be:
- newLongCondition = earlySignal_f(myLongSignal, earlyTime)
- newShrtCondition = earlySignal_f(myShrtSignal, earlyTime)
Note: the signals can also be delayed - use a negative value for early time
Function Decimal To Binary/Binary To DecimalNOTE: Experimental. Pinescript implementation of Decimal to Binary and Binary to Decimal that is intended for use in the development of a neural network proof of concept.
Intended for use in as subcomponent in the development of a more complex/highly experimental prototype.
Protection/logic for edge cases above 11111111/255 (8bits) is NOT implemented.
Do NOT use this in any trading system or component without edge case testing/unit tests.
// Decimal to Binary, Binary to Decimal Reference:
// diwasfamily.com
// www.wikihow.com
//
// www.khanacademy.org
Function : Stochastic Money Flow IndexThis function is similar to the stochastic rsi function.
The only difference is that Money Flow Index is used instead of rsi.
Oversold and overbought values were changed to 80 and 20.
Because the MFI's overbought and overbought zones are 20 and 80.
In MFI, I think that it can be more beneficial in liquid markets than stochastic rsi since volume is taken into account in contrast to RSI.
Regards.
Real Candles Heikin Ashi (HA) Candle functionsThis script plots both real and HA candles regardless or which are used on the chart in TV settings.
(and has the functions for you to use.)
Lots of people seem to misunderstand backtesting (or scam people) based on HA candles.
Backtesting with HA candles leads to impossible trades. ALWAYS backtest with real candles.
That doesn't mean you might not want to look at HA candle values to make trading decisions.
Add the code below to calculate HA candles from real and use that in your HA trading algo,
but test it on real charts.