(Early Test) Weekly Seasonality with Dynamic Kelly Criterion# Enhancing Trading Strategies with the Weekly Seasonality Dynamic Kelly Criterion Indicator
Amidst this pursuit to chase price, a common pitfall emerges: an overemphasis on price movements without adequate attention to risk management, probabilistic analysis, and strategic position sizing. To address these challenges, I developed the **Weekly Seasonality with Dynamic Kelly Criterion Indicator**. It is designed to refocus traders on essential aspects of trading, such as risk management and probabilistic returns, thereby catering to both short-term swing traders and long-term investors aiming for tax-efficient positions.
## The Motivation Behind the Indicator
### Overemphasis on Price: A Common Trading Pitfall
Many traders concentrate heavily on price charts and technical indicators, often neglecting the underlying principles of risk management and probabilistic analysis. This overemphasis on price can lead to:
- **Overtrading:** Making frequent trades based solely on price movements without considering the associated risks.
- **Poor Risk Management:** Failing to set appropriate stop-loss levels or position sizes, increasing the potential for significant losses.
- **Emotional Trading:** Letting emotions drive trading decisions rather than objective analysis, which can result in impulsive and irrational trades.
### The Need for Balanced Focus
To achieve sustained trading success, it is crucial to balance price analysis with robust risk management and probabilistic strategies. Key areas of focus include:
1. **Risk Management:** Implementing strategies to protect capital, such as setting stop-loss orders and determining appropriate position sizes based on risk tolerance.
2. **Probabilistic Analysis:** Assessing the likelihood of various market outcomes to make informed trading decisions.
3. **Swing Trading Percent Returns:** Capitalizing on short- to medium-term price movements by buying assets below their average return and selling them above.
## Introducing the Weekly Seasonality with Dynamic Kelly Criterion Indicator
The **Weekly Seasonality with Dynamic Kelly Criterion Indicator** is designed to integrate these essential elements into a comprehensive tool that aids traders in making informed, risk-aware decisions. Below, we explore the key components and functionalities of this indicator.
### Key Components of the Indicator
1. **Average Return (%)**
- **Definition:** The mean percentage return for each week across multiple years.
- **Purpose:** Serves as a benchmark to identify weeks with above or below-average performance, guiding buy and sell decisions.
2. **Positive Percentage (%)**
- **Definition:** The proportion of weeks that yielded positive returns.
- **Purpose:** Indicates the consistency of positive returns, helping traders gauge the reliability of certain weeks for trading.
3. **Volatility (%)**
- **Definition:** The standard deviation of weekly returns.
- **Purpose:** Measures the variability of returns, providing insights into the risk associated with trading during specific weeks.
4. **Kelly Ratio**
- **Definition:** A mathematical formula used to determine the optimal size of a series of bets to maximize the logarithmic growth of capital.
- **Purpose:** Balances potential returns against risks, guiding traders on the appropriate position size to take.
5. **Adjusted Kelly Fraction**
- **Definition:** The Kelly Ratio adjusted based on user-defined risk tolerance and external factors like Federal Reserve (Fed) stance.
- **Purpose:** Personalizes the Kelly Criterion to align with individual risk preferences and market conditions, enhancing risk management.
6. **Position Size ($)**
- **Definition:** The calculated amount to invest based on the Adjusted Kelly Fraction.
- **Purpose:** Ensures that position sizes are aligned with risk management strategies, preventing overexposure to any single trade.
7. **Max Drawdown (%)**
- **Definition:** The maximum observed loss from a peak to a trough of a portfolio, before a new peak is attained.
- **Purpose:** Assesses the worst-case scenario for losses, crucial for understanding potential capital erosion.
### Functionality and Benefits
- **Weekly Data Aggregation:** Aggregates weekly returns across multiple years to provide a robust statistical foundation for decision-making.
- **Quarterly Filtering:** Allows users to filter weeks based on quarters, enabling seasonality analysis and tailored strategies aligned with specific timeframes.
- **Dynamic Risk Adjustment:** Incorporates the Dynamic Kelly Criterion to adjust position sizes in real-time based on changing risk profiles and market conditions.
- **User-Friendly Visualization:** Presents all essential metrics in an organized Summary Table, facilitating quick and informed decision-making.
## The Origin of the Kelly Criterion and Addressing Its Limitations
### Understanding the Kelly Criterion
The Kelly Criterion, developed by John L. Kelly Jr. in 1956, is a formula used to determine the optimal size of a series of bets to maximize the long-term growth of capital. The formula considers both the probability of winning and the payout ratio, balancing potential returns against the risk of loss.
**Kelly Formula:**
\
Where:
- \( b \) = the net odds received on the wager ("b to 1")
- \( p \) = probability of winning
- \( q \) = probability of losing ( \( q = 1 - p \) )
### The Risk of Ruin
While the Kelly Criterion is effective in optimizing growth, it carries inherent risks:
- **Overbetting:** If the input probabilities or payout ratios are misestimated, the Kelly Criterion can suggest overly aggressive position sizes, leading to significant losses.
- **Assumption of Constant Probabilities:** The criterion assumes that probabilities remain constant, which is rarely the case in dynamic markets.
- **Ignoring External Factors:** Traditional Kelly implementations do not account for external factors such as Federal Reserve rates, margin requirements, or market volatility, which can impact risk and returns.
### Addressing Traditional Limitations
Recognizing these limitations, the **Weekly Seasonality with Dynamic Kelly Criterion Indicator** introduces enhancements to the traditional Kelly approach:
- **Incorporation of Fed Stance:** Adjusts the Kelly Fraction based on the current stance of the Federal Reserve (neutral, dovish, or hawkish), reflecting broader economic conditions that influence market behavior.
- **Margin and Leverage Considerations:** Accounts for margin rates and leverage, ensuring that position sizes remain within manageable risk parameters.
- **Dynamic Adjustments:** Continuously updates position sizes based on real-time risk assessments and probabilistic analyses, mitigating the risk of ruin associated with static Kelly implementations.
## How the Indicator Aids Traders
### For Short-Term Swing Traders
Short-term swing traders thrive on capitalizing over weekly price movements. The indicator aids them by:
- **Identifying Favorable Weeks:** Highlights weeks with above-average returns and favorable volatility, guiding entry and exit points.
- **Optimal Position Sizing:** Utilizes the Adjusted Kelly Fraction to determine the optimal amount to invest, balancing potential returns with risk exposure.
- **Probabilistic Insights:** Provides metrics like Positive Percentage (%) and Kelly Ratio to assess the likelihood of favorable outcomes, enhancing decision-making.
### For Long-Term Tax-Free Investors
This is effectively a drop-in replacement for DCA which uses fixed position size that doesn't change based on market conditions, as a result, it's like catching multiple falling knifes by the blade and smiling with blood on your hand... I don't know about you, but I'd rather juggle by the hilt and look like an actual professional...
Long-term investors, especially those seeking tax-free positions (e.g., through retirement accounts), benefit from:
- **Consistent Risk Management:** Ensures that position sizes are aligned with long-term capital preservation strategies.
- **Seasonality Analysis:** Allows for strategic positioning based on historical performance trends across different weeks and quarters.
- **Dynamic Adjustments:** Adapts to changing market conditions, maintaining optimal risk profiles over extended investment horizons.
### Developers
Please double check the logic and functionality because I think there are a few issue and I need to crowd source solutions and be responsible about the code I publish. If you have corrections, please DM me or leave a respectful comment.
I want to publish this by the end of the year and include other things like highlighting triple witching weeks, adding columns for volume % stats, VaR and CVaR, alpha, beta (to see the seasonal alpha and beta based off a benchmark ticker and risk free rate ticker and other little goodies.
Komut dosyalarını "VAR+计量模型+黄金期货" için ara
M & W Checklistindicator to Validate & Grade M & W Patterns.
Indicator Inputs
Table Color Palette
• Position Valid : Positions the Valid Trade table on the chart.
• Position Grade : Positions the Grade table on the chart, hover over the Column 1 Row 1 for a description of the bands.
• Size: Text size for all tables.
• Text Color : Sets text color.
• Border Color : Sets the table border color for all tables.
• Background Color : Sets table backgroud color for all tables.
Valid Trade Table
Checkboxes to indicate if the trade is valid. Fail is displayed if unchecked, Pass if checked.
Grade Table
• S/R Level 1: distance between neckline and 1st resistance area in % of the total distance between neckline and take profit. This is not for road blocks but pivot points etc before the initial run up/down in price. I have this set to 30% , this means that if there is a pivot point between the neckline and 30% of the TP level I weight it negatively.
• S/R Level 2: distance between neckline and 1st resistance area in % of the total distance between neckline and take profit. This is not for road blocks but pivot points etc before the initial run up/down in price. I have this set to 50% , this means that if there is a pivot point between the neckline and 50% of the TP level 2 weight it negatively but less so than level 1.
• S/R Level 3: distance between neckline and 1st resistance area in % of the total distance between neckline and take profit. This is not for road blocks but pivot points etc before the initial run up/down in price. I have this set to 70% , this means that if there is a pivot point between the neckline and 70% of the TP level 3 weight it negatively but less so than level 1 & level 2.
• Checkboxes are self explanatory, they are binary options, all are weighted negatively if checked and are weighted positively if unchecked. Divergence values for weighting are neutral if unckecked & weighted positively if checked.
• The select options are neutral weighting if set to neutral , if set to For its weighted positive and set to Against weighted negatively.
Technical Specification of the Scoring and Band System
Overview
The scoring system is designed to evaluate a set of technical trade conditions, assigning weights to various criteria that influence the quality of the trade. The system calculates a total score based on both positive and negative conditions. Based on the final score, the system assigns a grade or band (A, B, or C) for positive scores, and a "Negative" label for negative scores.
Scoring System
The system calculates the score by evaluating a set of 12 conditions (gradeCondition1 to gradeCondition12). These conditions are manually input by the user via checkboxes or dropdowns in a technical indicator (written in Pine Script for TradingView). The score weights vary according to the relative importance of each condition.
Condition Breakdown and Weighting:
1. Divergences (GradeCondition1 & GradeCondition2):
◦ 1H Divergence: +5 points if condition is true.
◦ 4H Divergence: +10 points if condition is true (stronger weight than 1H).
2. Support/Resistance at Neckline (GradeCondition3):
◦ Negative if present: -15 points if true (carries significant negative weight).
3. RB near Entry (GradeCondition4):
◦ Very Negative: -20 points if true (this is a critical negative condition).
4. RB can Manage (GradeCondition5):
◦ Slightly Negative: -5 points if true.
5. Institutional Value Zones (GradeCondition6 to GradeCondition8):
◦ For the trade: +5 points.
◦ Against the trade: -5 points.
◦ Neutral: 0 points.
6. S/R between Neckline & Targets (GradeCondition9 to GradeCondition11):
◦ Level 1: -10 points if true, +7 points if false.
◦ Level 2: -7 points if true, +7 points if false.
◦ Level 3: -5 points if true, +7 points if false.
◦ Use fib tool or Gann Box to measure any S/R levels setup according to your preferences.
7. News Timing (GradeCondition12):
◦ News within 3 hours: -20 points if true (strong negative factor).
◦ No upcoming news: +10 points if false.
Scoring Calculation Formula:
totalScore = score1 + score2 + score3 + score4 + score5 + score6 + score7 + score8 + score9 + score10 + score11 + score12
Where:
• score1 to score12 represent the points derived from the conditions described above.
Coloring and Visual Feedback:
• Positive Scores: Displayed in green.
• Negative Scores: Displayed in red.
Band System
The Band System classifies the total score into different grades, depending on the final value of totalScore. This classification provides an intuitive ranking for trades, helping users quickly assess trade quality.
Band Classification:
• Band A: If the totalScore is 41 or more.
◦ Represents a highly favorable trade setup.
• Band B: If the totalScore is between 21 and 40.
◦ Represents a favorable trade setup with good potential.
• Band C: If the totalScore is between 1 and 20.
◦ Represents a trade setup that is acceptable but may have risks.
• Negative: If the totalScore is 0 or less.
◦ Represents a poor trade setup with significant risks or unfavorable conditions.
Band Calculation Logic (in Pine Script):
var string grade = ""
if (totalScore >= 41)
grade := "Band A"
else if (totalScore >= 21)
grade := "Band B"
else if (totalScore >= 1)
grade := "Band C"
else
grade := "Negative"
Technical Key Points:
• Highly Negative Conditions:
◦ The system penalizes certain conditions more heavily, especially those that suggest significant risks (e.g., News in less than 3 hours, RB near Entry).
• Positive Trade Conditions:
◦ Divergences, Institutional Value Zones in favor of the trade, and lack of significant nearby resistance all contribute positively to the score.
• Flexible System:
◦ The system can be adapted or fine-tuned by adjusting the weights of individual conditions according to trading preferences.
Use Case Example:
• If a trade has 1H and 4H Divergence, RB near Entry (negative), and no upcoming news:
◦ 1H Divergence: +5 points.
◦ 4H Divergence: +10 points.
◦ RB near Entry: -20 points.
◦ No news: +10 points.
◦ Total Score: 5 + 10 - 20 + 10 = 5 → Band C.
This modular and flexible scoring system allows traders to systematically evaluate trades and quickly gauge the trade's potential based on technical indicators
Summary:
Maximum Score: 61
Minimum Score: -97
These are the bounds of the score range based on the current logic of the script.
Median Kijun-Sen [InvestorUnknown]The Median Kijun-Sen is a versatile technical indicator designed for both trend-following strategies and long-term market valuation. It incorporates various display modes and includes a backtest mode to simulate its performance on historical price action.
Key Features:
1. Trend-Following and Long-Term Valuation:
The indicator is ideal for trend-following strategies, helping traders identify entry and exit points based on the relationship between price and the Kijun-Sen calculated from median price (customizable price source).
With longer-term settings, it can also serve as a valuation tool (in oscillator display mode), assisting in identifying potential overbought or oversold conditions over extended timeframes.
2. Display Modes:
The indicator can be displayed in three main modes, each serving a different purpose:
Overlay Mode : Plots the Median Kijun-Sen directly over the price chart, useful for visualizing trends relative to price action.
Oscillator Mode : Displays the oscillator that compares the current price to the Median Kijun-Sen, providing a clearer signal of trend strength and direction
Backtest Mode : Simulates the performance of the indicator with different settings on historical data, offering traders a way to evaluate its reliability and effectiveness without needing TradingView's built-in strategy tool
3. Backtest Functionality:
The inbuilt backtest mode enables users to evaluate the indicator's performance across historical data by simulating long and short trades. Users can customize the start and end dates for the backtest, as well as specify whether to allow long & short, long only, or short only signals.
This backtest functionality mimics TradingView's strategy feature, allowing users to test the effectiveness of their chosen settings before applying them to live markets.
equity(series int sig, series float r, startDate, string signals, bool endDate_bool) =>
if time >= startDate and endDate_bool
float a = 0
if signals == "Long & Short"
if sig > 0
a := r
else
a := -r
else if signals == "Long Only"
if sig > 0
a := r
else if signals == "Short Only"
if sig < 0
a := -r
else
runtime.error("No Signal Type found")
var float e = na
if na(e )
e := 1
else
e := e * (1 + a)
float r = 0.0
bool endDate_bool = use_endDate ? (time <= endDate ? true : false) : true
float eq = 1.0
if disp_mode == "Backtest Mode"
r := (close - close ) / close
eq := equity(sig, r, startDate, signals, endDate_bool)
4. Hint Table for Pane Suggestions:
An inbuilt hint table guides users on how to best visualize the indicator in different display modes:
For Overlay Mode, it is recommended to use the same pane as the price action.
For Oscillator and Backtest Modes, it is advised to plot them in a separate pane for better clarity.
This table also provides step-by-step instructions on how to move the indicator to a different pane and adjust scaling, making it user-friendly.
Potential Weakness
One of the key drawbacks is the indicator’s tendency to produce false signals during price consolidations, where price action lacks clear direction and may trigger unnecessary trades. This is particularly noticeable in markets with low volatility.
Alerts
The indicator includes alert conditions for when it crosses above or below key levels, enabling traders to receive notifications of LONG or SHORT signals.
Summary
The Median Kijun-Sen is a highly adaptable tool that serves multiple purposes, from trend-following to long-term valuation. With its customizable settings, backtest functionality, and built-in hints, it provides traders with valuable insights into market trends while allowing them to optimize the indicator to their specific strategy.
This versatility, however, comes with the potential weakness of false signals during consolidation phases, so it's most effective in trending markets.
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.
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.