Gaussian Filter [BigBeluga]The Gaussian Filter - BigBeluga indicator is a trend-following tool that uses a Gaussian filter to smooth price data and identify directional shifts in the market. It provides dynamic signals for entering and exiting trades based on trend changes, helping traders stay aligned with the market's momentum. What sets this indicator apart is its ability to display precise entry and exit points with real-time tracking of percentage price changes, making it ideal for trend-based strategies.
SP500:
NIFTY50:
🔵 KEY FEATURES & USAGE
◉ Gaussian Filter Trend Line:
//@function GaussianFilter is used for smoothing, reducing noise, and computing derivatives of data.
//@param src (float) The source data (e.g., close price) to be smoothed.
//@param params (GaussianFilterParams) Gaussian filter parameters that include length and sigma.
//@returns (float) The smoothed value from the Gaussian filter.
gaussian_filter(float src, params) =>
var float weights = array.new_float(params.length) // Array to store Gaussian weights
total = 0.0
pi = math.pi
for i = 0 to params.length - 1
weight = math.exp(-0.5 * math.pow((i - params.length / 2) / params.sigma, 2.0))
/ math.sqrt(params.sigma * 2.0 * pi)
weights.set(i, weight)
total := total + weight
for i = 0 to params.length - 1
weights.set(i, weights.get(i) / total)
sum = 0.0
for i = 0 to params.length - 1
sum := sum + src * weights.get(i)
sum
The core functionality of the Gaussian Filter line is to show trend direction. When the trend line increases four times consecutively, it indicates an uptrend signal. Similarly, if it decreases four times in a row, it signals a downtrend. The smoothness of the filter helps traders stay on the right side of the market by filtering out noise and emphasizing the dominant trend direction.
◉ Entry and Exit Levels with Real-Time Price and Performance Data:
Each time the indicator detects a trend change, it plots an entry or exit level on the chart. For an uptrend, an entry level is marked, and for a downtrend, an exit level is plotted. These levels display the price at the time of the signal.
While the trend is ongoing, the indicator tracks the percentage change in price from the initial entry or exit signal to the current bar, updating in real-time. When a trend concludes, it displays the total percentage change from the entry or exit point to the trend's end. This feature provides valuable insights into how much the price has moved during each trend phase and allows traders to monitor the performance of each trade.
◉ Color-Coded Candlestick Representation with Trend Shift Alerts:
In addition to coloring the candlesticks based on the trend direction, the indicator also uses gray candles to highlight potential early trend shifts. For example, if the Gaussian Filter detects a downtrend but the price moves above the filter line, the candles turn gray, signaling a possible reversal or shift in momentum. Similarly, in an uptrend, if the price moves below the Gaussian Filter line, the candles turn gray as an early indication of potential bearish momentum. This visual cue helps traders stay alert to possible faster shifts in market direction, allowing for quicker decision-making.
🔵 CUSTOMIZATION
Length and Sigma for Gaussian Filter:
Adjust the length and sigma parameters to control how the Gaussian Filter smooths the price data. A longer length provides smoother trend lines, while adjusting sigma can fine-tune the level of smoothing applied.
Levels Display and Candle Coloring:
You can toggle the visibility of entry and exit levels as well as enable or disable the dynamic coloring of candlesticks based on the trend direction. The additional gray color setting provides an extra layer of information, allowing you to spot potential trend reversals early.
🔵 CONCLUSION
The Gaussian Filter indicator is a powerful tool for identifying and following market trends. By providing clear entry and exit signals, along with real-time tracking of price changes, it gives traders a structured way to manage trades and monitor performance. The color-coded candles, including gray to highlight possible trend shifts, add another dimension to visualizing market dynamics. The added flexibility of customizing colors and trend levels makes it a versatile indicator suitable for both trend-following and reversal strategies.
Поиск скриптов по запросу "VAR+计量模型+黄金期货"
Inverse Fisher Oscillator [BigBeluga]The Inverse Fisher Oscillator is a powerful tool for identifying market trends and potential reversal points by applying the Inverse Fisher Transform to normalized price data. This indicator plots multiple smoothed oscillators, each color-coded to signify their relation to dynamic volatility bands. Additionally, the Butterworth filter is incorporated to further refine trend signals. The Inverse Fisher Oscillator offers traders a visually appealing and insightful approach to trend analysis and market direction detection.
🔵 KEY FEATURES
● Inverse Fisher Oscillator Visualization
Multiple Oscillators : The indicator calculates and plots six different Inverse Fisher Oscillators, each smoothed at increasing levels to provide a layered view of price momentum.
Color-Coded Signals : The oscillator lines are color-coded based on their relation to the volatility bands—green for bullish momentum, red for bearish momentum, and yellow for neutral movements.
● Butterworth Filter Integration
Filtering : The Butterworth filter is applied to mid-line Bands to reduce noise, allowing for clearer trend detection.
// Calculate constants for the Butterworth filter
float piPrd = math.pi / mid_len
float g = math.sqrt(2)
float a1 = math.exp(-g * piPrd)
float b1 = 2 * a1 * math.cos(g * piPrd)
float coef2 = b1
float coef3 = -a1 * a1
float coef1 = (1 - b1 + a1 * a1) / 4
// Source data for the Butterworth filter
float source = ifish // The first inverse Fisher Oscillator is used as the source
// Previous source and butter filter values
var float butter = na // Initialize the 'butter' variable
// Handle null values using the nz function
float prevB1 = nz(butter , source) // Use 'source' as a fallback if butter is null
float prevB2 = nz(butter , source) // Use 'source' as a fallback if butter is null
// Calculate the Butterworth filter value
butter := coef1 * (source + (2 * source ) + source ) + (coef2 * prevB1) + (coef3 * prevB2)
● Numbered Signal Marks
Signal Markers : The indicator plots numbered signals on the chart when an oscillator crosses above the upper volatility band or below the lower volatility band.
Numbered Lines : Numbers correspond to the different oscillators (1-6), helping traders easily identify which smoothing level generated the signal.
Visual Cues : The signals are color-coded—green for bullish crossovers and red for bearish crossunders—providing clear visual cues for trend accumulation phases.
Mid-Line Option : Traders can choose between plotting the Butterworth filter as a dynamic mid-line or simply displaying it as part of the bands.
Volatility Bands : Dynamic volatility bands provide additional context for interpreting the strength and sustainability of trends.
● Dashboard Display
Real-Time Market Trend Overview : The dashboard in the bottom-right corner of the chart displays the market trend based on the Inverse Fisher Oscillator for six different smoothing levels, providing a clear visual summary of market direction.
Direction Symbols : Directional symbols (up, down, or neutral) are displayed in the dashboard, color-coded to represent bullish, bearish, or neutral momentum.
Current Price Display : The dashboard also shows the current price and highlights whether it is above or below the opening price.
🔵 HOW TO USE
● Identifying Trend Reversals
Bullish Reversals : When the oscillators short period lines start to cross above the upper volatility band (green), it indicates potential bullish momentum.
Bearish Reversals : When the oscillator crosses below the lower volatility band (red), it signals potential bearish momentum.
Neutral Signals : When the oscillator remains within the bands (yellow), it suggests that the market is in a neutral or consolidating state. Traders may choose to wait for a clearer trend signal.
● Using the Dashboard for Trend Overview
Market Trend Summary : The dashboard provides a quick overview of market direction across six different smoothing levels. Green arrows indicate bullish momentum, red arrows indicate bearish momentum, and wavy lines suggest neutrality.
Price Context : The dashboard also displays the current price, helping traders quickly assess whether the price is moving in the expected direction relative to their trend analysis.
● Volatility Band Interpretation
Volatility-Based Signals : Pay attention to how the oscillators interact with the volatility bands. Strong trends will often result in oscillators staying above or below the bands, while weaker trends or consolidations will see oscillators hovering within the bands.
🔵 CUSTOMIZATION
Length and Smoothing : Adjust the length and smoothing parameters to fit different market conditions and timeframes.
Bands Multiplier : Customize the multiplier for the volatility bands to make them more or less sensitive to price changes.
Mid-Line Type : Choose whether to display the Butterworth filter as a mid-line or incorporate it into the volatility bands.
Signal Markers : Toggle on or off the number markers for signal crossovers, making it easier to identify key entry and exit points.
🔵 CONCLUSION
The Inverse Fisher Oscillator combines the power of the Inverse Fisher Transform and the Butterworth filter to provide a sophisticated approach to trend and reversal detection. By leveraging volatility-based analysis and visually intuitive signals, this indicator helps traders spot potential entry and exit points with greater clarity. The customizable dashboard display adds further value, offering a real-time summary of market conditions to enhance decision-making. Use this tool in conjunction with other technical analysis methods to develop a well-rounded trading strategy.
[SGM Geometric Brownian Motion]Description:
This indicator uses Geometric Brownian Motion (GBM) simulations to predict possible price trajectories of a financial asset. It helps traders visualize potential price movements, assess risks, and make informed decisions.
Geometric Brownian Motion:
Geometric Brownian Motion is an extension of standard Brownian motion (or Wiener process) used to model the random behavior of particles in physics. In finance, this concept is used to model the evolution of asset prices over time in a continuous manner. The basic idea is that the price of an asset does not only change randomly but also exponentially depending on certain parameters.
Basic formula
The formula for the evolution of the price of an asset S(t) under MBG is given by the following stochastic differential equation:
𝑑𝑆(𝑡) = 𝜇𝑆(𝑡)𝑑𝑡 + 𝜎𝑆(𝑡)𝑑𝑊(𝑡)
where:
S(t) is the price of the asset at time
μ is the expected growth rate (or drift).
σ is the volatility of the price of the asset.
dW(t) represents the noise term, i.e. the standard Brownian motion.
Explanations of the terms
Expected growth rate (μ):
This is the expected average return on the asset. If you think your asset will grow by 5% per year,
μ will be 0.05.
Volatility (σ):
It is a measure of the uncertainty or risk associated with the asset. If the asset price varies a lot, σ will be high.
Noise term (dW(t)):
It represents the randomness of the price change, modeled by a Wiener process.
Features:
Customizable number of simulations: Choose the number of price trajectories to simulate to get a better estimate of future movements.
Adjustable simulation length: Set the duration of the simulations in number of periods to adapt the indicator to your trading horizons.
Trajectory display: Visualize the simulated price trajectories directly on the chart to better understand possible future scenarios.
Dispersion calculations: Display the distribution of simulated final prices to assess dispersion and potential variations.
Sharpe ratio distribution: Analyze the risk-adjusted performance of simulations using the Sharpe ratio distribution.
Risk Statistics: Get key risk metrics like maximum drawdown, average return, and Value at Risk (VaR) at different confidence levels.
User Inputs:
Number of Simulations: 200 by default.
Simulation Length: 10 periods by default.
Brownian Motion Transparency: Adjust the transparency of simulated lines for better visualization.
Brownian Motion Display: Enable or disable the display of simulated paths.
Brownian Dispersion Display: Display the distribution of simulated final prices.
Sharpe Dispersion Display: Display the distribution of Sharpe ratios.
Customizable Colors: Choose colors for lines and tables.
Usage:
Configure Settings: Adjust the number of simulations, simulation length, and display preferences to suit your needs.
Analyze Simulated Paths: Simulated path lines appear on the chart, representing possible price developments.
Review Dispersion Charts: Review the charts to understand the distribution of final prices and Sharpe ratios, as well as key risk statistics. This indicator is ideal for traders looking to anticipate future price movements and assess the associated risks. With its detailed simulations and dispersion analyses, it provides valuable insight into the financial markets.
Get intraday extended dataIf you have interacted with Pine for some time, you probably noticed that if you are using DWM resolutions, you will not be able to obtain complete data from the extended intraday ticker using the usual functions request.security() and request.security_lower_tf(). This is quite logical if you understand the principle of mapping data from the secure context to the main one. The main reason is the different opening and closing times of the intraday data with extended clocks and DWM.
This script visualizes one of the approaches to solving this problem. I will briefly describe the principle of operation:
For example, take the symbol NASDAQ:AAPL.
Our main resolution is 1D, but we want to receive extended data from a 4-hour interval. The daytime bar opens at 09:30 and closes at 16:00. The same period at a resolution of 4 hours covers 4 bars:
04:00 - 08:00
08:00 - 12:00
12:00 - 16:00
16:00 - 20:00
So, if we use the request.security_lower_tf() function, we will not get the bars 04:00 - 08:00 and 16:00 - 20:00 because their closing times are not within the range of the main context (09:30 - 16:00).
If we use the request.security() function, we will get the bar 04:00 - 08:00, but we will not get the bar 16:00 - 20:00 because its closing time will be in the future, and it is impossible to get values from the future.
So, what I propose is to use the upgraded request.security() function, inside which another function will be executed, storing all the bars in a var array and putting the post-market bars in the array of the next day. Next, all we have to do is isolate these bars, place them in the previous array, and remove them from the current one.
I visualized the received data simply as text, but you can do it differently using the proposed mechanism.
In order for everything to work, you need to fill in the inputs correctly:
"Symbol for calculate" - This is the symbol from which we will receive extended data.
"Intraday data period" - The period from which we will receive extended data.
"Specify your chart timeframe here" - This is an input that allows you to operate with data from the main context while being inside the secure one. Enter your current chart timeframe here. If there are problems, a warning will appear informing you about this.
If you want to use these developments, take the get_data() function, it will return:
1. the number of past items - it is useful for outputting values in real time, because it is not possible to simply delete them there, because they will always arrive and it is easier to make a slice with an indentation for this number
2. cleared object of type Inner_data containing arrays of open, high, low, close, volume, time, time_close intraday data
3. its same value from the previous bar
Adaptive Trend Lines [MAMA and FAMA]Updated my previous algo on the Adaptive Trend lines, however I have added new functionalities and sorted out the settings.
You can now switch between normalized and non-normalized settings, the colors have also been updated and look much better.
The MAMA and FAMA
These indicators was originally developed by John F. Ehlers (Stocks & Commodities V. 19:10: MESA Adaptive Moving Averages). Everget wrote the initial functions for these in pine script. I have simply normalized the indicators and chosen to use the Laplace transformation instead of the hilbert transformation
How the Indicator Works:
The indicator employs a series of complex calculations, but we'll break it down into key steps to understand its functionality:
LaplaceTransform: Calculates the Laplace distribution for the given src input. The Laplace distribution is a continuous probability distribution, also known as the double exponential distribution. I use this because of the assymetrical return profile
MESA Period: The indicator calculates a MESA period, which represents the dominant cycle length in the price data. This period is continuously adjusted to adapt to market changes.
InPhase and Quadrature Components: The InPhase and Quadrature components are derived from the Hilbert Transform output. These components represent different aspects of the price's cyclical behavior.
Homodyne Discriminator: The Homodyne Discriminator is a phase-sensitive technique used to determine the phase and amplitude of a signal. It helps in detecting trend changes.
Alpha Calculation: Alpha represents the adaptive factor that adjusts the sensitivity of the indicator. It is based on the MESA period and the phase of the InPhase component. Alpha helps in dynamically adjusting the indicator's responsiveness to changes in market conditions.
MAMA and FAMA Calculation: The MAMA and FAMA values are calculated using the adaptive factor (alpha) and the input price data. These values are essentially adaptive moving averages that aim to capture the current trend more effectively than traditional moving averages.
But Omar, why would anyone want to use this?
The MAMA and FAMA lines offer benefits:
The indicator offers a distinct advantage over conventional moving averages due to its adaptive nature, which allows it to adjust to changing market conditions. This adaptability ensures that investors can stay on the right side of the trend, as the indicator becomes more responsive during trending periods and less sensitive in choppy or sideways markets.
One of the key strengths of this indicator lies in its ability to identify trends effectively by combining the MESA and MAMA techniques. By doing so, it efficiently filters out market noise, making it highly valuable for trend-following strategies. Investors can rely on this feature to gain clearer insights into the prevailing trends and make well-informed trading decisions.
This indicator is primarily suppoest to be used on the big timeframes to see which trend is prevailing, however I am not against someone using it on a timeframe below the 1D, just be careful if you are using this for modern portfolio theory, this is not suppoest to be a mid-term component, but rather a long term component that works well with proper use of detrended fluctuation analysis.
Dont hesitate to ask me if you have any questions
Again, I want to give credit to Everget and ChartPrime!
Code explanation as required by House Rules:
fastLimit = input.float(title='Fast Limit', step=0.01, defval=0.01, group = "Indicator Settings")
slowLimit = input.float(title='Slow Limit', step=0.01, defval=0.08, group = "Indicator Settings")
src = input(title='Source', defval=close, group = "Indicator Settings")
input.float: Used to create input fields for the user to set the fastLimit and slowLimit values.
input: General function to get user inputs, like the data source (close price) used for calculations.
norm_period = input.int(3, 'Normalization Period', 1, group = "Normalized Settings")
norm = input.bool(defval = true, title = "Use normalization", group = "Normalized Settings")
input.int: Creates an input field for the normalization period.
input.bool: Allows the user to toggle normalization on or off.
Color settings in the code:
col_up = input.color(#22ab94, group = "Color Settings")
col_dn = input.color(#f7525f, group = "Color Settings")
Constants and functions
var float PI = math.pi
laplace(src) =>
(0.5) * math.exp(-math.abs(src))
_computeComponent(src, mesaPeriodMult) =>
out = laplace(src) * mesaPeriodMult
out
_smoothComponent(src) =>
out = 0.2 * src + 0.8 * nz(src )
out
math.pi: Represents the mathematical constant π (pi).
laplace: A function that applies the Laplace transform to the source data.
_computeComponent: Computes a component of the data using the Laplace transform.
_smoothComponent: Smooths data by averaging the current value with the previous one (nz function is used to handle null values).
Alpha function:
_computeAlpha(src, fastLimit, slowLimit) =>
mesaPeriod = 0.0
mesaPeriodMult = 0.075 * nz(mesaPeriod ) + 0.54
...
alpha = math.max(fastLimit / deltaPhase, slowLimit)
out = alpha
out
_computeAlpha: Calculates the adaptive alpha value based on the fastLimit and slowLimit. This value is crucial for determining the MAMA and FAMA lines.
Calculating MAMA and FAMA:
mama = 0.0
mama := alpha * src + (1 - alpha) * nz(mama )
fama = 0.0
fama := alpha2 * mama + (1 - alpha2) * nz(fama )
Normalization:
lowest = ta.lowest(mama_fama_diff, norm_period)
highest = ta.highest(mama_fama_diff, norm_period)
normalized = (mama_fama_diff - lowest) / (highest - lowest) - 0.5
ta.lowest and ta.highest: Find the lowest and highest values of mama_fama_diff over the normalization period.
The oscillator is normalized to a range, making it easier to compare over different periods.
And finally, the plotting:
plot(norm == true ? normalized : na, style=plot.style_columns, color=col_wn, title = "mama_fama_diff Oscillator Normalized")
plot(norm == false ? mama_fama_diff : na, style=plot.style_columns, color=col_wnS, title = "mama_fama_diff Oscillator")
Example of Normalized settings:
Example for setup:
Try to make sure the lower timeframe follows the higher timeframe if you take a trade based on this indicator!
[blackcat] L1 Zero-Lag EMA BandThe Zero-Lag EMA Band is a sophisticated technical analysis tool designed to provide traders with a comprehensive view of market trends. This innovative indicator merges the Zero-Lag EMA, a derivative of the traditional Exponential Moving Average, with Bollinger Bands to create a unique trend indicator that is less laggy and more responsive to market changes.
The Zero-Lag EMA Band is calculated by taking the standard deviation of the price data and adding or subtracting it from the Zero-Lag EMA to create an upper band and a lower band. This process results in a trend band that can help traders identify potential support and resistance levels, providing them with a more accurate assessment of the market's behavior.
The Zero-Lag EMA Band is particularly useful for traders who need to react quickly to market changes. It offers a more timely assessment of potential trend reversals, allowing traders to capitalize on market opportunities and mitigate risk.
The indicator's design is based on the principle of Zero-Lag, which aims to reduce the lag associated with traditional EMAs. This feature makes the Zero-Lag EMA Band a powerful tool for traders who want to stay ahead of the market and make more informed decisions.
In summary, the Zero-Lag EMA Band is a comprehensive and responsive tool for traders looking to identify and capitalize on market trends. It is a valuable addition to any trader's toolkit, offering a more accurate and timely assessment of potential trend reversals and providing a more comprehensive view of the market's behavior.
Certainly! Let's go through the Pine Script code line by line to understand its functionality:
//@version=5
This line specifies the version of Pine Script being used. In this case, it's version 5.
indicator(' L1 Zero-Lag EMA Band', shorttitle='L1 ZLEMA Band', overlay=true)
This line defines the indicator with a title and a short title. The `overlay=true` parameter means that the indicator will be plotted on top of the price data.
length = input.int(21, minval=1, title='Length')
This line creates an input field for the user to specify the length of the EMA. The default value is 21, and the minimum value is 1.
mult = input(1, title='Multiplier')
This line creates an input field for the user to specify the multiplier for the standard deviation, which is used to calculate the bands around the EMA. The default value is 1.
src = input.source(close, title="Source")
This line creates an input field for the user to specify the data source for the EMA calculation. The default value is the closing price of the asset.
// Define the smoothing factor (alpha) for the EMA
alpha = 2 / (length + 1)
This line calculates the smoothing factor alpha for the EMA. It's a common formula for EMA calculation.
// Initialize a variable to store the previous EMA value
var float prevEMA = na
This line initializes a variable to store the previous EMA value. It's initialized as `na` (not a number), which means it's not yet initialized.
// Calculate the zero-lag EMA
emaValue = na(prevEMA) ? ta.sma(src, length) : (src - prevEMA) * alpha + prevEMA
This line calculates the zero-lag EMA. If `prevEMA` is not a number (which means it's the first calculation), it uses the simple moving average (SMA) as the initial EMA. Otherwise, it uses the standard EMA formula.
// Update the previous EMA value
prevEMA := emaValue
This line updates the `prevEMA` variable with the newly calculated EMA value. The `:=` operator is used to update the variable in Pine Script.
// Calculate the upper and lower bands
dev = mult * ta.stdev(src, length)
upperBand = emaValue + dev
lowerBand = emaValue - dev
These lines calculate the upper and lower bands around the EMA. The bands are calculated by adding and subtracting the product of the multiplier and the standard deviation of the source data over the specified length.
// Plot the bands
p0 = plot(emaValue, color=color.new(color.yellow, 0))
p1 = plot(upperBand, color=color.new(color.yellow, 0))
p2 = plot(lowerBand, color=color.new(color.yellow, 0))
fill(p1, p2, color=color.new(color.fuchsia, 80))
These lines plot the EMA value, upper band, and lower band on the chart. The `fill` function is used to color the area between the upper and lower bands. The `color.new` function is used to create a new color with a specified alpha value (transparency).
In summary, this script creates an indicator that displays the zero-lag EMA and its bands on a trading chart. The user can specify the length of the EMA and the multiplier for the standard deviation. The bands are used to identify potential support and resistance levels for the asset's price.
In the context of the provided Pine Script code, `prevEMA` is a variable used to store the previous value of the Exponential Moving Average (EMA). The EMA is a type of moving average that places a greater weight on the most recent data points. Unlike a simple moving average (SMA), which is an equal-weighted average, the EMA gives more weight to the most recent data points, which can help to smooth out short-term price fluctuations and highlight the long-term trend.
The `prevEMA` variable is used to calculate the current EMA value. When the script runs for the first time, `prevEMA` will be `na` (not a number), indicating that there is no previous EMA value to use in the calculation. In such cases, the script falls back to using the simple moving average (SMA) as the initial EMA value.
Here's a breakdown of the role of `prevEMA`:
1. **Initialization**: On the first bar, `prevEMA` is `na`, so the script uses the SMA of the close price over the specified period as the initial EMA value.
2. **Calculation**: On subsequent bars, `prevEMA` holds the value of the EMA from the previous bar. This value is used in the EMA calculation to give more weight to the most recent data points.
3. **Update**: After calculating the current EMA value, `prevEMA` is updated with the new EMA value so it can be used in the next bar's calculation.
The purpose of `prevEMA` is to maintain the state of the EMA across different bars, ensuring that the EMA calculation is not reset to the SMA on each new bar. This is crucial for the EMA to function properly and to avoid the "lag" that can sometimes be associated with moving averages, especially when the length of the moving average is short.
In the provided script, `prevEMA` is used to simulate a zero-lag EMA, but as mentioned earlier, there is no such thing as a zero-lag EMA in the traditional sense. The EMA already has a very minimal lag due to its recursive nature, and any attempt to reduce the lag further would likely not be accurate or reliable for trading purposes.
Please note that the script provided is a conceptual example and may not be suitable for actual trading without further testing and validation.
RSI and ATR Trend Reversal SL/TPQuick History:
I was frustrated with a standard fixed percent TP/SL as they often were not receptive to quick market rallies/reversals. I developed this TP/SL and eventually made it into a full fledge strategy and found it did well enough to publish. This strategy can be used as a standalone or tacked onto another strategy as a TP/SL. It does function as both with a single line. This strategy has been tested with TSLA , AAPL, NVDA, on the 15 minutes timeframe.
HOW IT WORKS:
Inputs:
Length: Simple enough, it determines the length of the RSI and ATR used.
Multiplier: This multiplies the RSI and ATR calculation, more on this later.
Delay to prevent Idealization: TradingView will use the open of the bar the strategy triggers on when calculating the backtest. This can produce unrealistic results depending on the source. If your source is open, set to 0, if anything else, set to 1.
Minimum Difference: This is essentially a traditional SL/TP, it is borderline unnecessary, but if the other parameters are wacky this can be used to ensure the SL/TP. It multiplies the source by the percent, so if it is set to 10, the SL/TP is initialized at src +- 10%.
Source input: Self Explanatory, be sure to update the Delay if you use open.
CALCULATION:
Parameters Initialization:
The strategy uses Heikinashi values for calculations, this is not toggleable in parameters, but can be easily changed by changing hclose to equal src.
FUNCTION INITIALIZATION:
highest_custom and lowest_custom do the same thing as ta.highest and ta.lowest, however the built in ta library does not allow for var int input, so I had to create my own functions to be used here. I actually developed these years ago and have used them in almost every strategy since. Feel especially free to use these in your own scripts.
The rsilev is where the magic happens.
SL/TP min/max are initially calculated to be used later.
Then we begin by establishing variables.
BullGuy is used to determine the length since the last crossup or crossdown, until one happens, it returns na, breaking the function. BearGuy is used in all the calculations, and is the same as BullGuy, unless BullGuy is na, where BearGuy counts up from 1 on each bar from 0.
We create our rsi and have to modify the second one to suit the function. In the case of the upper band, we mirror the lower one. So if the RSI is 80, we want it to be 20 on the upper band.
the upper band and lower band are calculated the exact same way, but mirrored. For the purpose of writing, I'm going to talk about the lower band. Assume everything is mirrored for the upper one. It finds the highest source since the last crossup or crossdown. It then multiplies from 1 / the RSI, this means that a rapid RSI increase will increase the band dramatically, so it is able to capture quick rally/reversals. We add this to the atr to source ratio, as the general volatility is a massive factor to be included. We then multiply this number by our chosen amount, and subtract it from the highest source, creating the band.
We do this same process but mirrored with both bands and compared it to the source. If the source is above the lower band, it suggests an uptrend, so the lower band is outputted, and vice versa for the upper one.
PLOTTING:
We also determine the line color in the same manner as we do the trend direction.
STRATEGY:
We then use the source again, and if it crosses up or down relative to the selected band, we enter a long or short respectively.
This may not be the most superb independent strategy, but it can be very useful as a TP/SL for your chosen entry conditions, especially in volatile markets or tickers.
Thank you for taking the time to read, and please enjoy.
Heikin Ashi RSI + OTT [Erebor]Relative Strength Index (RSI)
The Relative Strength Index (RSI) is a popular momentum oscillator used in technical analysis to measure the speed and change of price movements. Developed by J. Welles Wilder, the RSI is calculated using the average gains and losses over a specified period, typically 14 days. Here's how it works:
Description and Calculation:
1. Average Gain and Average Loss Calculation:
- Calculate the average gain and average loss over the chosen period (e.g., 14 days).
- The average gain is the sum of gains divided by the period, and the average loss is the sum of losses divided by the period.
2. Relative Strength (RS) Calculation:
- The relative strength is the ratio of average gain to average loss.
The RSI oscillates between 0 and 100. Traditionally, an RSI above 70 indicates overbought conditions, suggesting a potential sell signal, while an RSI below 30 suggests oversold conditions, indicating a potential buy signal.
Pros of RSI:
- Identifying Overbought and Oversold Conditions: RSI helps traders identify potential reversal points in the market due to overbought or oversold conditions.
- Confirmation Tool: RSI can be used in conjunction with other technical indicators or chart patterns to confirm signals, enhancing the reliability of trading decisions.
- Versatility: RSI can be applied to various timeframes, from intraday to long-term charts, making it adaptable to different trading styles.
Cons of RSI:
- Whipsaws: In ranging markets, RSI can generate false signals, leading to whipsaws (rapid price movements followed by a reversal).
- Not Always Accurate: RSI may give false signals, especially in strongly trending markets where overbought or oversold conditions persist for extended periods.
- Subjectivity: Interpretation of RSI levels (e.g., 70 for overbought, 30 for oversold) is somewhat subjective and can vary depending on market conditions and individual preferences.
Checking RSIs in Different Periods:
Traders often use multiple timeframes to analyze RSI for a more comprehensive view:
- Fast RSI (e.g., 8-period): Provides more sensitive signals, suitable for short-term trading and quick decision-making.
- Slow RSI (e.g., 32-period): Offers a smoother representation of price movements, useful for identifying longer-term trends and reducing noise.
By comparing RSI readings across different periods, traders can gain insights into the momentum and strength of price movements over various timeframes, helping them make more informed trading decisions. Additionally, divergence between fast and slow RSI readings may signal potential trend reversals or continuation patterns.
Heikin Ashi Candles
Let's consider a modification to the traditional “Heikin Ashi Candles” where we introduce a new parameter: the period of calculation. The traditional HA candles are derived from the open 01, high 00 low 00, and close 00 prices of the underlying asset.
Now, let's introduce a new parameter, period, which will determine how many periods are considered in the calculation of the HA candles. This period parameter will affect the smoothing and responsiveness of the resulting candles.
In this modification, instead of considering just the current period, we're averaging or aggregating the prices over a specified number of periods . This will result in candles that reflect a longer-term trend or sentiment, depending on the chosen period value.
For example, if period is set to 1, it would essentially be the same as traditional Heikin Ashi candles. However, if period is set to a higher value, say 5, each candle will represent the average price movement over the last 5 periods, providing a smoother representation of the trend but potentially with delayed signals compared to lower period values.
Traders can adjust the period parameter based on their trading style, the timeframe they're analyzing, and the level of smoothing or responsiveness they prefer in their candlestick patterns.
Optimized Trend Tracker
The "Optimized Trend Tracker" is a proprietary trading indicator developed by TradingView user ANIL ÖZEKŞİ. It is designed to identify and track trends in financial markets efficiently. The indicator attempts to smooth out price fluctuations and provide clear signals for trend direction.
The Optimized Trend Tracker uses a combination of moving averages and adaptive filters to detect trends. It aims to reduce lag and noise typically associated with traditional moving averages, thereby providing more timely and accurate signals.
Some of the key features and applications of the OTT include:
• Trend Identification: The indicator helps traders identify the direction of the prevailing trend in a market. It distinguishes between uptrends, downtrends, and sideways consolidations.
• Entry and Exit Signals: The OTT generates buy and sell signals based on crossovers and direction changes of the trend. Traders can use these signals to time their entries and exits in the market.
• Trend Strength: It also provides insights into the strength of the trend by analyzing the slope and momentum of price movements. This information can help traders assess the conviction behind the trend and adjust their trading strategies accordingly.
• Filter Noise: By employing adaptive filters, the indicator aims to filter out market noise and false signals, thereby enhancing the reliability of trend identification.
• Customization: Traders can customize the parameters of the OTT to suit their specific trading preferences and market conditions. This flexibility allows for adaptation to different timeframes and asset classes.
Overall, the OTT can be a valuable tool for traders seeking to capitalize on trending market conditions while minimizing false signals and noise. However, like any trading indicator, it is essential to combine its signals with other forms of analysis and risk management strategies for optimal results. Additionally, traders should thoroughly back-test the indicator and practice using it in a demo environment before applying it to live trading.
The following types of moving average have been included: "SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA", "HMA", "KAMA", "LSMA", "TRAMA", "VAR", "DEMA", "ZLEMA", "TSF", "WWMA". Thanks to the authors.
Thank you for your indicator “Optimized Trend Tracker”. © kivancozbilgic
Thank you for your programming language, indicators and strategies. © TradingView
Kind regards.
© Erebor_GIT
Heikin Ashi TSI and OTT [Erebor]TSI (True Strength Index)
The TSI (True Strength Index) is a momentum-based trading indicator used to identify trend direction, overbought/oversold conditions, and potential trend reversals in financial markets. It was developed by William Blau and first introduced in 1991.
Here's how the TSI indicator is calculated:
• Double Smoothed Momentum (DM): This is calculated by applying double smoothing to the price momentum. First, the single smoothed momentum is calculated by subtracting the smoothed closing price from the current closing price. Then, this single smoothed momentum is smoothed again using an additional smoothing period.
• Absolute Smoothed Momentum (ASM): This is calculated by applying smoothing to the absolute value of the price momentum. Similar to DM, ASM applies a smoothing period to the absolute value of the difference between the current closing price and the smoothed closing price.
• TSI Calculation: The TSI is calculated as the ratio of DM to ASM, multiplied by 100 to express it as a percentage. Mathematically, TSI = (DM / ASM) * 100.
The TSI indicator oscillates around a centerline (typically at zero), with positive values indicating bullish momentum and negative values indicating bearish momentum. Traders often look for crossovers of the TSI above or below the centerline to identify shifts in momentum and potential trend reversals. Additionally, divergences between price and the TSI can signal weakening trends and potential reversal points.
Pros of the TSI indicator:
• Smoothed Momentum: The TSI uses double smoothing techniques, which helps to reduce noise and generate smoother signals compared to other momentum indicators.
• Versatility: The TSI can be applied to various financial instruments and timeframes, making it suitable for both short-term and long-term trading strategies.
• Trend Identification: The TSI is effective in identifying the direction and strength of market trends, helping traders to align their positions with the prevailing market sentiment.
Cons of the TSI indicator:
• Lagging Indicator: Like many momentum indicators, the TSI is a lagging indicator, meaning it may not provide timely signals for entering or exiting trades during rapidly changing market conditions.
• False Signals: Despite its smoothing techniques, the TSI can still produce false signals, especially during periods of low volatility or ranging markets.
• Subjectivity: Interpretation of the TSI signals may vary among traders, leading to subjective analysis and potential inconsistencies in trading decisions.
Overall, the TSI indicator can be a valuable tool for traders when used in conjunction with other technical analysis tools and risk management strategies. It can help traders identify potential trading opportunities and confirm trends, but it's essential to consider its limitations and incorporate additional analysis for more robust trading decisions.
Heikin Ashi Candles
Let's consider a modification to the traditional “Heikin Ashi Candles” where we introduce a new parameter: the period of calculation. The traditional HA candles are derived from the open , high low , and close prices of the underlying asset.
Now, let's introduce a new parameter, period, which will determine how many periods are considered in the calculation of the HA candles. This period parameter will affect the smoothing and responsiveness of the resulting candles.
In this modification, instead of considering just the current period, we're averaging or aggregating the prices over a specified number of periods . This will result in candles that reflect a longer-term trend or sentiment, depending on the chosen period value.
For example, if period is set to 1, it would essentially be the same as traditional Heikin Ashi candles. However, if period is set to a higher value, say 5, each candle will represent the average price movement over the last 5 periods, providing a smoother representation of the trend but potentially with delayed signals compared to lower period values.
Traders can adjust the period parameter based on their trading style, the timeframe they're analyzing, and the level of smoothing or responsiveness they prefer in their candlestick patterns.
Optimized Trend Tracker
The "Optimized Trend Tracker" is a proprietary trading indicator developed by TradingView user ANIL ÖZEKŞİ. It is designed to identify and track trends in financial markets efficiently. The indicator attempts to smooth out price fluctuations and provide clear signals for trend direction.
The Optimized Trend Tracker uses a combination of moving averages and adaptive filters to detect trends. It aims to reduce lag and noise typically associated with traditional moving averages, thereby providing more timely and accurate signals.
Some of the key features and applications of the OTT include:
• Trend Identification: The indicator helps traders identify the direction of the prevailing trend in a market. It distinguishes between uptrends, downtrends, and sideways consolidations.
• Entry and Exit Signals: The OTT generates buy and sell signals based on crossovers and direction changes of the trend. Traders can use these signals to time their entries and exits in the market.
• Trend Strength: It also provides insights into the strength of the trend by analyzing the slope and momentum of price movements. This information can help traders assess the conviction behind the trend and adjust their trading strategies accordingly.
• Filter Noise: By employing adaptive filters, the indicator aims to filter out market noise and false signals, thereby enhancing the reliability of trend identification.
• Customization: Traders can customize the parameters of the OTT to suit their specific trading preferences and market conditions. This flexibility allows for adaptation to different timeframes and asset classes.
Overall, the OTT can be a valuable tool for traders seeking to capitalize on trending market conditions while minimizing false signals and noise. However, like any trading indicator, it is essential to combine its signals with other forms of analysis and risk management strategies for optimal results. Additionally, traders should thoroughly back-test the indicator and practice using it in a demo environment before applying it to live trading.
The following types of moving average have been included: "SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA", "HMA", "KAMA", "LSMA", "TRAMA", "VAR", "DEMA", "ZLEMA", "TSF", "WWMA". Thanks to the authors.
Thank you for your indicator “Optimized Trend Tracker”. © kivancozbilgic
Thank you for your programming language, indicators and strategies. © TradingView
Kind regards.
© Erebor_GIT
Heikin Ashi and Optimized Trend Tracker and PVSRA [Erebor]Heikin Ashi Candles
Let's consider a modification to the traditional “Heikin Ashi Candles” where we introduce a new parameter: the period of calculation. The traditional HA candles are derived from the open , high low , and close prices of the underlying asset.
Now, let's introduce a new parameter, period, which will determine how many periods are considered in the calculation of the HA candles. This period parameter will affect the smoothing and responsiveness of the resulting candles.
In this modification, instead of considering just the current period, we're averaging or aggregating the prices over a specified number of periods . This will result in candles that reflect a longer-term trend or sentiment, depending on the chosen period value.
For example, if period is set to 1, it would essentially be the same as traditional Heikin Ashi candles. However, if period is set to a higher value, say 5, each candle will represent the average price movement over the last 5 periods, providing a smoother representation of the trend but potentially with delayed signals compared to lower period values.
Traders can adjust the period parameter based on their trading style, the timeframe they're analyzing, and the level of smoothing or responsiveness they prefer in their candlestick patterns.
Optimized Trend Tracker
The "Optimized Trend Tracker" is a proprietary trading indicator developed by TradingView user ANIL ÖZEKŞİ. It is designed to identify and track trends in financial markets efficiently. The indicator attempts to smooth out price fluctuations and provide clear signals for trend direction.
The Optimized Trend Tracker uses a combination of moving averages and adaptive filters to detect trends. It aims to reduce lag and noise typically associated with traditional moving averages, thereby providing more timely and accurate signals.
Some of the key features and applications of the OTT include:
• Trend Identification: The indicator helps traders identify the direction of the prevailing trend in a market. It distinguishes between uptrends, downtrends, and sideways consolidations.
• Entry and Exit Signals: The OTT generates buy and sell signals based on crossovers and direction changes of the trend. Traders can use these signals to time their entries and exits in the market.
• Trend Strength: It also provides insights into the strength of the trend by analyzing the slope and momentum of price movements. This information can help traders assess the conviction behind the trend and adjust their trading strategies accordingly.
• Filter Noise: By employing adaptive filters, the indicator aims to filter out market noise and false signals, thereby enhancing the reliability of trend identification.
• Customization: Traders can customize the parameters of the OTT to suit their specific trading preferences and market conditions. This flexibility allows for adaptation to different timeframes and asset classes.
Overall, the OTT can be a valuable tool for traders seeking to capitalize on trending market conditions while minimizing false signals and noise. However, like any trading indicator, it is essential to combine its signals with other forms of analysis and risk management strategies for optimal results. Additionally, traders should thoroughly back-test the indicator and practice using it in a demo environment before applying it to live trading.
PVSRA (Price, Volume, S&R Analysis)
“PVSRA” (Price, Volume, S&R Analysis) is a trading methodology and indicator that combines the analysis of price action, volume, and support/resistance levels to identify potential trading opportunities in financial markets. It is based on the idea that price movements are influenced by the interplay between supply and demand, and analyzing these factors together can provide valuable insights into market dynamics.
Here's a breakdown of the components of PVSRA:
• Price Action Analysis: PVSRA focuses on analyzing price movements and patterns on price charts, such as candlestick patterns, trendlines, chart patterns (like head and shoulders, triangles, etc.), and other price-based indicators. Traders using PVSRA pay close attention to how price behaves at key support and resistance levels and look for patterns that indicate potential shifts in market sentiment.
• Volume Analysis: Volume is an essential component of PVSRA. Traders monitor changes in trading volume to gauge the strength or weakness of price movements. An increase in volume during a price move suggests strong participation and conviction from market participants, reinforcing the validity of the price action. Conversely, low volume during price moves may indicate lack of conviction and potential reversals.
• Support and Resistance (S&R) Analysis: PVSRA incorporates the identification and analysis of support and resistance levels on price charts. Support levels represent areas where buying interest is expected to be strong enough to prevent further price declines, while resistance levels represent areas where selling interest may prevent further price advances. These levels are often identified using historical price data, trendlines, moving averages, pivot points, and other technical analysis tools.
The PVSRA methodology combines these three elements to generate trading signals and make trading decisions. Traders using PVSRA typically look for confluence between price action, volume, and support/resistance levels to confirm trade entries and exits. For example, a bullish reversal signal may be considered stronger if it occurs at a significant support level with increasing volume.
It's important to note that PVSRA is more of a trading approach or methodology rather than a specific indicator with predefined rules. Traders may customize their analysis based on their preferences and trading style, incorporating additional technical indicators or filters as needed. As with any trading strategy, risk management and proper trade execution are essential components of successful trading with PVSRA.
The following types of moving average have been included: "SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA", "HMA", "KAMA", "LSMA", "TRAMA", "VAR", "DEMA", "ZLEMA", "TSF", "WWMA". Thanks to the authors.
Thank you for your indicator “Optimized Trend Tracker”. © kivancozbilgic
Thank you for your indicator “PVSRA Volume Suite”. © creengrack
Thank you for your programming language, indicators and strategies. © TradingView
Kind regards.
© Erebor_GIT
Semaphore PlotThe Semaphore Plot V2, crafted by OmegaTools for the TradingView platform, is a sophisticated technical analysis tool designed to offer traders nuanced insights into market dynamics. This closed-source script embodies a novel approach by synthesizing multiple technical analysis methodologies into a coherent analytical framework. This detailed description aims to demystify the operational essence of the Semaphore Plot V2 and elucidate its application in trading scenarios without overstepping into claims of infallibility or price prediction accuracy.
Analytical Foundations and Integration:
At its core, the Semaphore Plot V2 is founded on the integration of several analytical dimensions, each contributing to a comprehensive market overview:
1. Dynamic Trend Analysis: Unlike conventional trend indicators that might rely solely on moving averages, the Semaphore Plot V2 examines the market's direction through a more complex lens. It assesses momentum, utilizing derivatives of price movements to understand the velocity and acceleration of trends. This analysis is deepened by examining the rate of change (ROC), providing a multi-tiered view of how swiftly market conditions are evolving.
2. Volatility Insights: Recognizing volatility as a pivotal component of market behavior, the script incorporates volatility metrics to analyze market conditions. By evaluating historical price ranges and applying statistical models, it aims to gauge the potential for future price fluctuations, thus offering insights into market stability or turbulence without predicting specific movements.
3. Linear Regression and Predictive Analysis: The script utilizes linear regression to analyze price data points over a specified period, offering a statistical basis to understand the trajectory of market trends. This regression analysis is complemented by market momentum indicators, forming a predictive model that suggests potential areas where market activity might concentrate. It's important to note that these "predictions" are not certainties but rather statistically derived zones of interest based on historical data.
4. Market Sentiment and Risk Evaluation: Incorporating an evaluation of market sentiment, the script analyzes trends in trading volume and price action to deduce the prevailing market mood. Risk assessment tools, such as the analysis of statistical deviations and Value at Risk (VaR), are also applied to offer a perspective on the risk associated with current market conditions.
Operational Mechanism:
- By processing the integrated analysis, the script generates semaphore signals which are plotted on the trading chart. These signals are not direct buy or sell signals but are designed to highlight areas where, based on the script’s complex analysis, market activity might see significant developments.
- Additionally, the Semaphore Plot V2 features an information table that provides a retrospective analysis of the signals' alignment with market movements, offering traders a tool to assess the script's historical context.
Application and Utility:
- Traders can leverage the Semaphore Plot V2 by applying it to their TradingView charts and adjusting input settings such as lookback periods and sensitivity according to their preferences.
- The semaphore signals serve as markers for areas of potential interest. Traders are encouraged to interpret these signals within the context of their overall market analysis, incorporating other fundamental and technical analysis tools as necessary.
- The informational table serves as a resource for evaluating the historical context of the signals, providing an additional layer of insight for informed decision-making.
The Essence of Originality:
The Semaphore Plot V2 distinguishes itself through the innovative melding of traditional technical analysis components into a unique analytical concoction. This originality lies not in the creation of new technical indicators but in the novel integration and application of existing methodologies to offer a holistic view of market conditions.
Responsible Usage Disclaimer:
The financial markets are characterized by uncertainty, and the Semaphore Plot V2 is intended to serve as an analytical tool within a trader's arsenal, not a standalone solution for trading decisions. It is critical for users to understand that the script does not guarantee trading success nor does it claim to predict exact price movements. Traders should employ the Semaphore Plot V2 alongside comprehensive market analysis and sound risk management practices, acknowledging that past performance is not indicative of future results and that trading involves the risk of loss.
Cumulative Volume Delta (CVD)█ OVERVIEW
Cumulative Volume Delta (CVD) is a volume-based trading indicator that provides a visual representation of market buying and selling pressure by calculating the difference in traded volumes between the two sides. It uses intrabar information to obtain more precise volume delta information than methods using only the chart's timeframe.
Volume delta is the net difference between Buy Volume and Sell Volume. Positive volume delta indicates that buy volume is more than sell volume, and opposite. So Cumulative Volume Delta (CVD) is a running total/cumulation of volume delta values, where positive VD gets added to the sum and negative VD gets subtracted from the sum.
I found simple and fast solution how to calculate CVD, so made plain and concise code, here is CVD function :
cvd(_c, _o, _v) =>
var tcvd = 0.0, delta = 0.0
posV = 0.0, negV = 0.0
totUV = 0.0, totDV = 0.0
switch
_c > _o => posV += _v
_c < _o => negV -= _v
_c > nz(_c ) => posV += _v
_c < nz(_c ) => negV -= _v
nz(posV ) > 0 => posV += _v
nz(negV ) < 0 => negV -= _v
totUV += posV
totDV += negV
delta := totUV + totDV
cvd = tcvd + delta
tcvd += delta
cvd
where _c, _o, _v are close, open and volume of intrabar much lower timeframe.
Indicator uses intrabar information to obtain more precise volume delta information than methods using only the chart's timeframe.
Intrabar precision calculation depends on the chart's timeframe:
CVD is good to use together with open interest, volume and price change.
For example if CVD is rising and price makes good move up in short period and volume is rising and open interest makes good move up in short period and before was flat market it is show big chance to pump.
ZigZag LibraryThis is yet another ZigZag library.
🔵 Key Features
1. Lightning-Fast Performance : Optimized code ensures minimal lag and swift chart updates.
2. Real-Time Swing Detection : No more waiting for swings to finalize! This library continuously identifies the latest swing formation.
3. Amplitude-Aware : Discover significant swings earlier, even if they haven't reached the standard bar length.
4. Customizable Visualization : Draw ZigZag on-demand using polylines for a tailored analysis experience.
Stay tuned for more features as this library is being continuously enhanced. For the latest updates, please refer to the release information.
🔵 API
// Import this library. Remember to check the latest version of this library and replace the version number below.
import algotraderdev/zigzag/1 as zz
// Initialize the ZigZag instance.
var zz.ZigZag zig = zz.ZigZag.new().init(
zz.Settings.new(
swingLen = 5,
lineColor = color.blue,
lineStyle = line.style_solid,
lineWidth = 1))
// Analyze the ZigZag using the latest bar's data.
zig.tick()
// Draw the ZigZag.
if barstate.islast
zig.draw()
Bollinger OTT SpreadBollinger OTT Spread (BOOTS) is a development combining Bollinger Bands with Optimized Trend Tracker (OTT) Indicator by Anıl Özekşi.
Bollinger Bands have originally 3 lines: Simple Moving Average (Middle Line), Upper Band and Lower Band.
BOOTS concentrates on the upper and lower Bollinger band lines.
First, it calculates the OTT using the UPPER and LOWER Bollinger Bands in a period of time (default lengths are 2) instead of closing prices.
After that, Upper and lower bands have more constant values.
There are 2 lines in BOOTS:
-The top (cyan) line is originally an OTT of the Upper Bollinger Band. (BOOTShigh)
-The bottom line (purple) is also an OTT line but conversely uses Lower Bollinger Band in the same period. (BOOTSlow)
Default values:
Bollinger Bands Moving AveragePeriod: 2 Bars
OTT Length: 2 Bars
OTT Optimizing coefficient (percent): %10
Bollinger Bands Standart Deviation Multiplier: 2 (not adjustable)
These values are designed for daily time frame, so they have to be optimized in other timeframes by the user. (Ex: Higher values can be considered in lower time frames)
Originally, Bollinger Bands used a Simple Moving Average in their calculation, but this time, Anıl Özekşi prefers VIDYA (Variable Dynamic Moving Average = VAR) instead of a Simple Moving Average.
Bollinger Bands cannot create significant BUY & SELL signals considering their original logic, but the primary purpose of BOOTS is to have substantial trading signals:
BUY when the price crosses above the BOOTSLower line (purple line)
STOP when the price crosses back below the BOOTSLower line (purple line)
SELL when the price crosses below the BOOTSUpper line (cyan line)
STOP when the price crosses back above the BOOTSUpper line (cyan line)
The price zone between the two lines is the flat zone; traders don't consider taking new positions in that area between the two lines.
Developer Anıl Özekşi advises that traders may have more accurate signals when using a short-period moving average instead of closing prices. So, I added a moving average with the same default length of 2 , which was used in Bollinger Bands calculation. You can check the "SHOW MOVING AVERAGE?" box on the settings tab of the indicator.
Multiple OTTMultiple OTT (MOTT) is a development on the Optimized Trend Tracker (OTT) indicator of Anıl Özekşi that is shared in his algorithmic trading courses by himself.
There are 5 lines in MOTT:
-The top (cyan) line is originally an OTT line, which uses the Highest price values in a default length of 80 bars in its calculation.
-The bottom line (purple) is also an OTT line but conversely uses the Lowest prices in the same period.
-The dotted third line in the middle (green) is the exact average of the top and bottom lines.
-The dotted Cyan line: (Top+Middle)/2 and
dotted Purple line: (Bottom+Middle)/2 are also the averages of their two neighbors.
Default values:
Length of the Highest and Lowest Price period (High & Low Period): 80
OTT optimizing percent: 1.4
OTT Length: 2 (Also Moving Average Length when displayed)
Default Moving Average Type of OTT Calculation: VIDYA(VAR) VARIABLE INDEX DYNAMIC MOVING AVERAGE
These values are designed for daily time frame, so they have to be optimized in other timeframes by the user. (Ex: Higher values can be considered in lower time frames)
BUY when the price crosses above the MOTT lines.
STOP when the price crosses back below the same MOTT line.
SELL when the price crosses below the MOTT lines.
STOP when the price crosses back above the same MOTT line.
As you can see, every line can be considered a trade signal like Fibonacci Levels. If optimized meaningfully, lines can also show users significant support and resistance levels. Traders can use those levels in partial buys and sells.
Developer Anıl Özekşi advises that traders may have more accurate signals when using a short-period moving average instead of closing prices. So, I added the VIDYA moving average with the same default length ( 2 ) used in OTT calculation. You can check the "SHOW MOVING AVERAGE?" box on the settings tab of the indicator.
Progressive Trend TrackerProgressive Trend Tracker (PTT) is a development combining Bollinger Bands with Highest Highs and Lowest Lows by K.Hasan Alpay & Anıl Özekşi.
Bollinger Bands have originally 3 lines: Simple Moving Average (Middle Line), Upper Band and Lower Band.
PTT concentrates on the upper and lower Bollinger band lines.
First, it calculates the bands using the Highest & Lowest prices in a period of time (Faster period and period) instead of closing prices.
Then, PTT takes the lowest values of the calculated upper band and, conversely, the highest values of the calculated lower band in a Slower period.
Default values:
Faster Period: 5
Period: 5
Bollinger Band Moving Average Period: 2
Slower Period: 10
These values are designed for daily time frame, so they have to be optimized in other timeframes by the user. (Ex: Higher values can be considered in lower time frames)
One more significant difference considering original Bollinger Bands is that PTT uses VIDYA (Variable Dynamic Moving Average = VAR) in the calculation instead of a Simple Moving Average.
Bollinger Bands cannot create significant BUY & SELL signals considering their original logic, but the primary purpose of PTT is to have substantial trading signals:
BUY when the price crosses above the PTT Lower line (cyan line)
STOP when the price crosses back below the PTT Lower line (cyan line)
SELL when the price crosses below the PTT Upper line (cyan line)
STOP when the price crosses back above the PTT Upper line (cyan line)
Developer Anıl Özekşi advises that traders may have more accurate signals when using a short-period moving average instead of closing prices, so I added the VIDYA moving average with the same default length ( 2 ), which is used in Bollinger Bands calculation. You can check the "SHOW MOVING AVERAGE?" box on the settings tab of the indicator.
Highest-Lowest Trend𝙃𝙄𝙂𝙃𝙀𝙎𝙏-𝙇𝙊𝙒𝙀𝙎𝙏 𝙏𝙍𝙀𝙉𝘿 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍
Overview:
The "Highest-Lowest Trend" indicator helps traders identify trends based on the highest and lowest values within a specified period. It provides visual cues to understand potential trend changes, making it a valuable tool for technical analysis.
Settings:
Length and Offset: Adjust the length and offset parameters to customize the sensitivity of the indicator.
Source: Determines whether to use the high and low prices or the closing price and others for calculations.
Visual Settings:
Bar Color: Enables or disables the coloring of bars based on the trend direction.
Up Color: Specifies the color for upward trends.
Down Color: Specifies the color for downward trends.
Indicator Calculation:
The indicator calculates the highest and lowest values within the defined length and offset.
The current trend is determined based on whether the closing price is above or below these values.
When the source crossed above highest indicator changes trend to upside and start to use lowest value and vice versa.
/// 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉 ///
var series float hlt = 0.0
series float upper = ta.highest(Use_High_and_Low ? high : src, length)
series float lower = ta.lowest( Use_High_and_Low ? high : src, length)
hlt := src > upper ?
lower : src < lower ?
upper : nz(hlt)
Usage:
Trend Identification: Watch for price to be above Trend Indicator crosses for up trend and below for down trend.
Length and Offset: Adjust the length and offset parameters to customize the sensitivity of the indicator.
Color, color bars: Change color of trends and bars for your taste
Note:
Trading involves inherent risks, and it is essential to exercise caution and employ multiple tools and indicators for comprehensive analysis. While the "Highest-Lowest Trend" indicator provides valuable insights into potential trend changes, relying solely on one tool for trading decisions is not recommended. Market conditions can be dynamic, and using a combination of indicators can enhance your overall analysis, providing a more robust foundation for decision-making. Always consider the broader market context, risk management strategies, and other relevant factors before executing trades.
Blockunity Drawdown Visualizer (BDV)Monitor the drawdown (value of the drop between the highest and lowest points) of assets and act accordingly to reduce your risk.
Introducing BDV, the incredibly intuitive metric that visualizes asset drawdowns in the most visually appealing manner. With its color gradient display, BDV allows you to instantly grasp the state of retracement from the asset’s highest price level. But that’s not all – you have the option to display the oscillator’s colorization directly on your chart, enhancing your analysis even further.
The Idea
The goal is to provide the community with the best and most complete tool for visualizing the Drawdown of any asset.
How to Use
Very simple to use, the indicator takes the form of an oscillator, with colors ranging from red to green depending on the Drawdown level. A table summarizes several key data points.
Elements
On the oscillator, you'll find a line with a color gradient showing the asset's Drawdown. The flatter line represents the Max Drawdown (the lowest value reached).
In addition, the table summarizes several data:
The asset's All Time High (ATH).
Current Drawdown.
The Max Drawdown that has been reached.
Settings
First of all, you can activate a "Bar Color" in the settings (You must also uncheck "Borders" and "Wick" in your Chart Settings):
You can display Fibonacci levels on the oscillator. You'll see that levels can be relevant to drawdown. The color of the levels is also configurable.
In the calculation parameters, you can first choose between taking the High of the candles or the Close. By default this is Close, but if you change the parameter to High, the indication next to ATH in the table will change, and you'll see that the values in the table will be affected.
The second calculation parameter (Start Date) lets you modify the effective start date of the ATH, which will affect the drawdown level. Here's an example:
How it Works
First, we calculate the ATH:
var bdv_top = bdv_source
bdv_top := na(bdv_top ) ? bdv_source : math.max(bdv_source, bdv_top )
Then the drawdown is calculated as follows:
bdv = ((bdv_source / bdv_top) * 100) - 100
Then the max drawdown :
bdv_max = bdv
bdv_max := na(bdv_max ) ? bdv : math.min(bdv, bdv_max )
[MAD] Acceleration based dampened SMA projectionsThis indicator utilizes concepts of arrays inside arrays to calculate and display projections of multiple Smoothed Moving Average (SMA) lines via polylines.
This is partly an experiment as an educational post, on how to work with multidimensional arrays by using User-Defined Types
------------------
Input Controls for User Interaction:
The indicator provides several input controls, allowing users to adjust parameters like the SMA window, acceleration window, and dampening factors.
This flexibility lets users customize the behavior and appearance of the indicator to fit their analysis needs.
sma length:
Defines the length of the simple moving average (SMA).
acceleration window:
Sets the window size for calculating the acceleration of the SMA.
Input Series:
Selects the input source for calculating the SMA (typically the closing price).
Offset:
Determines the offset for the input source, affecting the positioning of the SMA. Here it´s possible to add external indicators like bollinger bands,.. in that case as double sma this sma should be very short.
(Thanks Fikira for that idea)
Startfactor dampening:
Initial dampening factor for the polynomial curve projections, influencing their starting curvature.
Growfactor dampening:
Growth rate of the dampening factor, affecting how the curvature of the projections changes over time.
Prediction length:
Sets the length of the projected polylines, extending beyond the current bar.
cleanup history:
Boolean input to control whether to clear the previous polyline projections before drawing new ones.
Key technologies used in this indicator include:
User-Defined Types (UDT) :
This indicator uses UDT to create a custom type named type_polypaths.
This type is designed to store information for each polyline, including an array of points (array), a color for the polyline, and a dampening factor.
UDTs in Pine Script enable the creation of complex data structures, which are essential for organizing and manipulating data efficiently.
type type_polypaths
array polyline_points = na
color polyline_color = na
float dampening_factor= na
Arrays and Nested Arrays:
The script heavily utilizes arrays.
For example, it uses a color array (colorpreset) to store different colors for the polyline.
Moreover, an array of type_polypaths (polypaths) is used, which is an array consisting of user-defined types. Each element of this array contains another array (polyline_points), demonstrating nested array usage.
This structure is essential for handling multiple polylines, each with its set of points and attributes.
var type_polypaths polypaths = array.new()
Polyline Creation and Manipulation:
The core visual aspect of the indicator is the creation of polylines.
Polyline points are calculated based on a dampened polynomial curve, which is influenced by the SMA's slope and acceleration.
Filling initial dampening data
array_size = 9
middle_index = math.floor(array_size / 2)
for i = 0 to array_size - 1
damp_factor = f_calculate_damp_factor(i, middle_index, Startfactor, Growfactor)
polyline_color = colorpreset.get(i)
polypaths.push(type_polypaths.new(array.new(0, na), polyline_color, damp_factor))
The script dynamically generates these polyline points and stores them in the polyline_points array of each type_polypaths instance based on those prefilled dampening factors
if barstate.islast or cleanup == false
for damp_factor_index = 0 to polypaths.size() - 1
GET_RW = polypaths.get(damp_factor_index)
GET_RW.polyline_points.clear()
for i = 0 to predictionlength
y = f_dampened_poly_curve(bar_index + i , src_input , sma_slope , sma_acceleration , GET_RW.dampening_factor)
p = chart.point.from_index(bar_index + i - src_off, y)
GET_RW.polyline_points.push(p)
polypaths.set(damp_factor_index, GET_RW)
Polyline Drawout
The polyline is then drawn on the chart using the polyline.new() function, which uses these points and additional attributes like color and width.
for pl_s = 0 to polypaths.size() - 1
GET_RO = polypaths.get(pl_s)
polyline.new(points = GET_RO.polyline_points, line_width = 1, line_color = GET_RO.polyline_color, xloc = xloc.bar_index)
If the cleanup input is enabled, existing polylines are deleted before new ones are drawn, maintaining clarity and accuracy in the visualization.
if cleanup
for pl_delete in polyline.all
pl_delete.delete()
------------------
The mathematics
in the (ABDP) indicator primarily focuses on projecting the behavior of a Smoothed Moving Average (SMA) based on its current trend and acceleration.
SMA Calculation:
The indicator computes a simple moving average (SMA) over a specified window (sma_window). This SMA serves as the baseline for further calculations.
Slope and Acceleration Analysis:
It calculates the slope of the SMA by subtracting the current SMA value from its previous value. Additionally, it computes the SMA's acceleration by evaluating the sum of differences between consecutive SMA values over an acceleration window (acceleration_window). This acceleration represents the rate of change of the SMA's slope.
sma_slope = src_input - src_input
sma_acceleration = sma_acceleration_sum_calc(src_input, acceleration_window) / acceleration_window
sma_acceleration_sum_calc(src, window) =>
sum = 0.0
for i = 0 to window - 1
if not na(src )
sum := sum + src - 2 * src + src
sum
Dampening Factors:
Custom dampening factors for each polyline, which are based on the user-defined starting and growth factors (Startfactor, Growfactor).
These factors adjust the curvature of the projected polylines, simulating various future scenarios of SMA movement.
f_calculate_damp_factor(index, middle, start_factor, growth_factor) =>
start_factor + (index - middle) * growth_factor
Polynomial Curve Projection:
Using the SMA value, its slope, acceleration, and dampening factors, the script calculates points for polynomial curves. These curves represent potential future paths of the SMA, factoring in its current direction and rate of change.
f_dampened_poly_curve(index, initial_value, initial_slope, acceleration, damp_factor) =>
delta = index - bar_index
initial_value + initial_slope * delta + 0.5 * damp_factor * acceleration * delta * delta
damp_factor = f_calculate_damp_factor(i, middle_index, Startfactor, Growfactor)
Have fun trading :-)
Simple Neural Network Transformed RSI [QuantraSystems]Simple Neural Network Transformed RSI
Introduction
The Simple Neural Network Transformed RSI (ɴɴᴛ ʀsɪ) stands out as a formidable tool for traders who specialize in lower timeframe trading.
It is an innovative enhancement of the traditional RSI readings with simple neural network smoothing techniques.
This unique blend results in fairly accurate signals, tailored for swift market movements. The ɴɴᴛ ʀsɪ is particularly resistant to the usual market noise found in lower timeframes, ensuring a clearer view of short-term trends.
Furthermore, its diverse range of visualization options adds versatility, making it a valuable tool for traders seeking to capitalize on short-duration market dynamics.
Legend
In the Image you can see the BTCUSD 1D Chart with the ɴɴᴛ ʀsɪ in Trend Following Mode to display the current trend. This is visualized with the barcoloring.
Its Overbought and Oversold zones start at 50% and end at 100% of the selected Standard Deviation (default σ = 2), which can indicate extremely rare situations which can lead to either a softening momentum in the trend or even a mean reversion situation.
Here you can also see the original Indicator line and the Heikin Ashi transformed Indicator bars - more on that now.
Notes
Quantra Standard Value Contents:
To draw out all the information from the indicator calculation we have added a Heikin-Ashi (HA) Candle Visualization.
This HA transformation smoothens out the indicator values and gives a more informative look into Momentum and Trend of the Indicator itself.
This allows early entries and exits by observing the HA transformed Indicator values.
To diversify, different visualization options are available, either a classic line, HA transformed or Hybrid, which contains both of the previous.
To make Quantra's Indicators as useful and versatile as possible we have created options
to change the barcoloring and thus the derived signal from the indicator based on different modes.
Option to choose different Modes:
Trend Following (Indicator above mid line counts as uptrend, below is downtrend)
Extremities (Everything going beyond the Deviation Bands in a Mean Reversion manner is highlighted)
Candles (Color of HA candles as barcolor)
Reversion (HA ONLY) (Reversion Signals via the triangles if HA candles change state outside of the Deviation Bands)
- Reversion Signals are indicated by the triangles in the Heikin-Ashi or Hybrid visualization when the HA Candles revert
from downwards to upwards or the other way around OUTSIDE of the SD Bands.
Depending on the Indicator they signal OB/OS areas and can either work as high probability entries and exits for Mean Reversion trades or
indicate Momentum slow downs and potential ranges.
Please use another indicator to confirm this.
Case Study
To effectively utilize the NNT-RSI, traders should know their style and familiarize themselves with the available options.
As stated above, you have multiple modes available that you can combine as you need and see fit.
In the given example mostly only the mode was used in an isolated fashion.
Trend Following:
Purely relied on State Change - Midline crossover
Could be combined with Momentum or Reversion analysis for better entries/exits.
Extremities:
Ideal entry/exit is in the accordingly colored OS/OB Area, the Reversion signaled the latest possible entry/exit.
HA Candles:
Specifically applicable for strong trends. Powerful and fast tool.
Can whip if used as sole condition.
Reversions:
Shows the single entry and exit bars which have a positive expected value outcome.
Can also be used as confirmation or as last signal.
Please note that we always advise to find more confluence by additional indicators.
Traders are encouraged to test and determine the most suitable settings for their specific trading strategies and timeframes.
In the showcased trades the default settings were used.
Methodology
The Simple Neural Network Transformed RSI uses a simple neural network logic to process RSI values, smoothing them for more accurate trend analysis.
This is achieved through a linear combination of RSI values over a specified input length, weighted evenly to produce a neural network output.
// Simple neural network logic (linear combination with weighted aggregation)
var float inputs = array.new_float(nnLength, na)
for i = 0 to nnLength - 1
array.set(inputs, i, rsi1 )
nnOutput = 0.0
for i = 0 to nnLength - 1
nnOutput := nnOutput + array.get(inputs, i) * (1 / nnLength)
nnOutput
This output is then compared against a standard or dynamic mean line to generate trend following signals.
Mean = ta.sma(nnOutput, sdLook)
cross = useMean? 50 : Mean
The indicator also incorporates Heikin Ashi candlestick calculations to provide additional insights into market dynamics, such as trend strength and potential reversals.
// Calculate Heikin Ashi representation
ha = ha(
na(nnOutput ) ? nnOutput : nnOutput ,
math.max(nnOutput, nnOutput ),
math.min(nnOutput, nnOutput ),
nnOutput)
Standard deviation bands are used to create dynamic overbought and oversold zones, further enhancing the tool's analytical capabilities.
// Calculate Dynamic OB/OS Zones
stdv_bands(_src, _length, _mult) =>
float basis = ta.sma(_src, _length)
float dev = _mult * ta.stdev(_src, _length)
= stdv_bands(nnOutput, sdLook,sdMult/2)
= stdv_bands(nnOutput, sdLook, sdMult)
The Standard Deviation bands take defined parameters from the user, in this case sigma of ideally between 2 to 3,
to help the indicator detect extremely improbable conditions and thus take an inversely probable signal from it to forward to the user.
The parameter settings and also the visualizations allow for ample customizations by the trader.
For questions or recommendations, please feel free to seek contact in the comments.
Price-Action Candles (Lower)What is a swing high or swing low?
Swing highs and lows are price extremes. For example say we set our swing length to 5. A candle that is a swing high with a swing length of 5 will have 5 bars to the left that are lower and 5 bars to the right that are lower. A candle that is a swing low with a swing length of 5 will have 5 bars to the left that are higher and 5 bars to the right that are higher.
How is the trend coloring calculated?
The trend coloring is calculated the exact same way as our trend candles study... by storing and comparing historical swing lows and swing highs.
The pinescript code goes as follows:
The pinescript code goes as follows:
var int trend = na
trend := ((hh and high >= psh) or close > csh) ? 1 : ((ll and low <= psl) or close < csl) ? -1 : lh or hl ? 0 : trend
What does that gibberish mean?
-Trend can be GREEN IF
- We have a higher high (current swing high is greater than the previous swing high) and the high is greater than the previous swing high
- OR The current close is greater than the current swing high
-Trend can be RED IF
- We have a lower low (current swing low is less than the previous swing low) and the low is less than the previous swing low
- OR The current close is less than the current swing low
-Trend can be YELLOW IF
- We have a new swing high and the new swing high is less than the previous swing high
- OR We have a new swing low and the new swing low is greater than the previous swing low
If none of the conditions above are true then we continue with whatever color the previous bar was.
What is repainting?
Repainting is "script behavior causing historical vs realtime calculations or plots to behave differently." That definition comes directly from Tradingview. If you want to read the full explanation you can visit it here www.tradingview.com . The price-action candles use swing highs and swing lows which need bars to the left (past) and bars to the right ("future") in order to confirm the swing level. Because of the need to wait for confirmation for swing levels the plot style can be repainting. The Price-Action Candles (Lower) indicator, or this indicator, has no repainting anywhere. We opt to not shift back the candle coloring which causes the repainting, but it is relevant to discuss since this indicator's sibling (Price-Action Candles) can have repainting labels.
Repaint
Here the labels are shifted back the price-action length. Repainting is not present in the Price-Candles (Lower) study, but can be found in this indicator's sibling (Price-Action Candles).
Non-Repaint
Here the labels are not shifted back or "repainted". Repainting is not present in the Price-Candles (Lower) study, but can be found in this indicator's sibling (Price-Action Candles).
Multi-timeframe Analysis
The users can view multi-timeframe historical price action trend via this lower study. Each timeframe is plotted as its own on the lower pane and you can determine what timeframe it is by the label next to the plot.
More examples
Pair the Price-Action Candles (Lower) indicator with our main price indicator that colors candles based on trend and can show price action labels.
Price-Action CandlesWhat is a swing high or swing low?
Swing highs and lows are price extremes. For example say we set our swing length to 5. A candle that is a swing high with a swing length of 5 will have 5 bars to the left that are lower and 5 bars to the right that are lower. A candle that is a swing low with a swing length of 5 will have 5 bars to the left that are higher and 5 bars to the right that are higher.
How are the trend candles calculated?
The trend candles are calculated by storing and comparing historical swing lows and swing highs.
The pinescript code goes as follows:
The pinescript code goes as follows:
var int trend = na
trend := ((hh and high >= psh) or close > csh) ? 1 : ((ll and low <= psl) or close < csl) ? -1 : lh or hl ? 0 : trend
What does that gibberish mean?
-Candle can be GREEN IF
- We have a higher high (current swing high is greater than the previous swing high) and the high is greater than the previous swing high
- OR The current close is greater than the current swing high
-Candle can be RED IF
- We have a lower low (current swing low is less than the previous swing low) and the low is less than the previous swing low
- OR The current close is less than the current swing low
-Candle can be YELLOW IF
- We have a new swing high and the new swing high is less than the previous swing high
- OR We have a new swing low and the new swing low is greater than the previous swing low
If none of the conditions above are true then we continue with whatever color the previous bar was.
What is repainting?
Repainting is "script behavior causing historical vs realtime calculations or plots to behave differently." That definition comes directly from Tradingview. If you want to read the full explanation you can visit it here www.tradingview.com . The price-action candles use swing highs and swing lows which need bars to the left (past) and bars to the right ("future") in order to confirm the swing level. Because of the need to wait for confirmation to for swing levels the plot style can be repainting. With the price-action candles indicator the only repainting part of the indicator is the labels. The price-action candles themselves WILL NOT REPAINT. The labels however can be set to repaint or not depending on the user preference. If the user opts to use repainting then the label location is shifted back by the length of the price-action. So if the "Price-Action Length" input is set to 10, and the user wants repainting, the swing high/low label will be shifted back 10 bars. If the user opts for no repainting, the label will not be shifted and instead show on the exact bar the swing level was confirmed.
Examples Below.
Repaint
Here the labels are shifted back the price-action length.
Non-Repaint
Here the labels are not shifted back because the input setting is set to not repaint.
Multi-timeframe Analysis
The users can view the trend from multiple different timeframes at once with a table displayed at the bottom of their charts. The timeframe can be lower or higher than the chart timeframe.
More examples
Be on the lookout for the Price Action Candles (Lower) indicator where you can view the multi-timeframe labels on a lower price grid in order to see the history over time!
Backtest Strategy Optimizer Adapter - Supertrend ExampleSample Code
This is a sample code for my Backtest Strategy Optimizer Adapter library.
You can find the library at:
Backtest Strategy Optimizer Tester
With this indicator, you will be able to run one or multiple backtests with different variables (combinations). For example, you can run dozens of backtests of Supertrend at once with an increment factor of 0.1, or whatever you prefer. This way, you can easily grab the most profitable settings and use them in your strategy. The chart above shows different color plots, each indicating a profit backtest equal to tradingview backtesting system. This code uses my backtest library, available in my profile.
Below the code you should edit yourself
You can use ChatGPT or write a python script to autogenerate code for you.
// #################################################################
// # ENTRIES AND EXITS
// #################################################################
// You can use the link and code in the description to create
// your code for the desired number of entries / exits.
// #################################################################
// AUTO GENERATED CODE
// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
= ti.supertrend(10, 0.1)
= ti.supertrend(10, 0.2)
= ti.supertrend(10, 0.3)
= ti.supertrend(10, 0.4)
// 005 etc...
pnl_001 = backtest.profit(date_start, date_end, entry_001, exit_001)
pnl_002 = backtest.profit(date_start, date_end, entry_002, exit_002)
pnl_003 = backtest.profit(date_start, date_end, entry_003, exit_003)
pnl_004 = backtest.profit(date_start, date_end, entry_004, exit_004)
plot(pnl_001, title='0.1', color=backtest.color(001))
plot(pnl_002, title='0.2', color=backtest.color(002))
plot(pnl_003, title='0.3', color=backtest.color(003))
plot(pnl_004, title='0.4', color=backtest.color(004))
// Make sure you set the correct array size.
// The amount of tests + 1 (e.g. 4 tests you set it to 5)
var results_list = array.new_string(5)
if (ta.change(pnl_001))
array.set(results_list, 0, str.tostring(pnl_001) + '|0.1')
if (ta.change(pnl_002))
array.set(results_list, 1, str.tostring(pnl_002) + '|0.2')
if (ta.change(pnl_003))
array.set(results_list, 2, str.tostring(pnl_003) + '|0.3')
if (ta.change(pnl_004))
array.set(results_list, 3, str.tostring(pnl_004) + '|0.4')
// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
// AUTO GENERATED CODE
// #################################################################