Advanced Strategy: Buy and Sell//@version=5
indicator("Advanced Strategy: Buy and Sell", overlay=true)
// User Inputs
ema_fast_length = input.int(12, title="EMA Fast Period")
ema_slow_length = input.int(26, title="EMA Slow Period")
rsi_period = input.int(14, title="RSI Period")
macd_fast = input.int(12, title="MACD Fast Period")
macd_slow = input.int(26, title="MACD Slow Period")
macd_signal = input.int(9, title="MACD Signal Period")
bb_length = input.int(20, title="Bollinger Bands Period")
bb_mult = input.float(2.0, title="Bollinger Bands Std Dev")
adx_period = input.int(14, title="ADX Period")
adx_threshold = input.int(20, title="Minimum ADX for Trend Validation")
// Indicator Calculations
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
rsi = ta.rsi(close, rsi_period)
= ta.macd(close, macd_fast, macd_slow, macd_signal)
= ta.bb(close, bb_length, bb_mult)
// ADX Calculation
true_range = ta.rma(ta.tr, adx_period)
plus_dm = ta.rma(ta.change(high) > ta.change(low) ? math.max(ta.change(high), 0) : 0, adx_period)
minus_dm = ta.rma(ta.change(low) > ta.change(high) ? math.max(ta.change(low), 0) : 0, adx_period)
plus_di = (plus_dm / true_range) * 100
minus_di = (minus_dm / true_range) * 100
dx = math.abs(plus_di - minus_di) / (plus_di + minus_di) * 100
adx = ta.rma(dx, adx_period)
// Buy Rules
buy_signal = ta.crossover(ema_fast, ema_slow) and rsi < 50 and macd_line > signal_line and close < bb_lower and adx > adx_threshold
// Sell Rules
sell_signal = ta.crossunder(ema_fast, ema_slow) and rsi > 50 and macd_line < signal_line and close > bb_upper and adx > adx_threshold
// Plot Indicators on the Chart
plot(ema_fast, color=color.green, title="EMA Fast")
plot(ema_slow, color=color.red, title="EMA Slow")
plot(bb_upper, color=color.orange, title="Bollinger Upper Band")
plot(bb_lower, color=color.orange, title="Bollinger Lower Band")
// Buy and Sell Signals
plotshape(buy_signal, style=shape.labelup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Alerts
alertcondition(buy_signal, title="Buy Alert", message="Buy Signal Detected!")
alertcondition(sell_signal, title="Sell Alert", message="Sell Signal Detected!")
Komut dosyalarını "adx" için ara
HMM Regime IndicatorHMM Regime Indicator
Overview:
The HMM Regime Indicator is designed to help traders identify market regimes by analyzing trend strength, momentum, and price deviation. It uses a combination of the Average Directional Index (ADX), Relative Strength Index (RSI), and Commodity Channel Index (CCI) to classify market conditions into three distinct regimes: Bullish, Bearish, and Sideways.
Key Features:
ADX (Average Directional Index): Measures the strength of a trend. A high ADX value indicates a strong trend, while a low value suggests a weak or non-existent trend.
RSI (Relative Strength Index): Identifies overbought or oversold conditions. An RSI above 70 typically indicates overbought conditions, while an RSI below 30 suggests oversold conditions.
CCI (Commodity Channel Index): Evaluates the price deviation from its average. High CCI values indicate that prices are well above their average, while low values suggest prices are below their average.
Regime Detection:
Bullish Regime: Identified when the ADX indicates a strong trend, and both RSI and CCI suggest overbought conditions. This regime is marked with a green background on the chart.
Bearish Regime: Detected when the ADX shows a strong trend, and both RSI and CCI indicate oversold conditions. This regime is highlighted with a red background.
Sideways Regime: Occurs when neither bullish nor bearish conditions are met, suggesting a lack of strong directional movement. This regime is shown with a blue background.
Usage:
This indicator is useful for traders looking to understand the current market environment and adjust their strategies accordingly. By identifying the prevailing market regime, traders can make more informed decisions about entering or exiting trades.
Customization:
Users can adjust the input parameters for ADX, RSI, and CCI to better fit their trading style and the specific asset being analyzed. The default settings are optimized for general use but can be tailored to suit individual preferences.
Dema DMI | viResearchDema DMI | viResearch
Conceptual Foundation and Innovation
The "Dema DMI" indicator integrates the Double Exponential Moving Average (DEMA) with the Directional Movement Index (DMI), creating a more responsive and precise trend-following system. The DEMA is used to smooth price data while minimizing lag, making it highly effective for trend detection. The DMI, on the other hand, measures the strength and direction of a trend by analyzing positive and negative directional movements. By combining these two elements, the "Dema DMI" offers traders a powerful tool for identifying trend changes and evaluating the strength of ongoing trends. This combination helps filter out noise in price data while maintaining sensitivity to market movements, providing better trend signals and decision-making opportunities.
Technical Composition and Calculation
The "Dema DMI" script uses two main components: the Double Exponential Moving Average (DEMA) and the Directional Movement Index (DMI). The DEMA is applied to both the high and low prices, creating smoothed versions of these prices based on a user-defined length. The DMI is then calculated by comparing changes in the smoothed high and low prices to measure directional movement. Positive directional movement (DM+) and negative directional movement (DM−) are calculated by evaluating whether the price is trending upward or downward, and the Average Directional Index (ADX) is computed to measure the strength of the trend. The ADX is smoothed to provide a more stable signal of trend strength.
Features and User Inputs
The "Dema DMI" script provides several customizable inputs, enabling traders to tailor the indicator to their strategies. The DEMA Length controls the period over which the DEMA is calculated for both high and low prices. The DMI Length sets the window for calculating directional movement, while the ADX Smoothing Length determines how smooth the ADX line appears, making it easier to assess whether a trend is strengthening or weakening. The script also includes customizable bar colors and alert conditions, providing traders with clear visual cues and notifications when a trend change occurs.
Practical Applications
The "Dema DMI" indicator is designed for traders looking to assess trend strength and direction more effectively. The DEMA smooths price movements, while the DMI highlights shifts in directional movement, providing early signals of potential trend reversals. The ADX helps gauge whether a trend is gaining momentum, allowing traders to improve the timing of trade entries and exits. Additionally, the customizable inputs make the indicator adaptable to different market conditions, ensuring its usefulness in both trending and ranging environments.
Advantages and Strategic Value
The "Dema DMI" script offers significant value by merging the smoothing effects of DEMA with the directional analysis of the DMI. This combination reduces the lag commonly associated with trend-following indicators, providing more timely and accurate trend signals. The ADX further enhances the indicator’s utility by measuring the strength of the trend, helping traders filter out weak signals and stay aligned with stronger trends. This makes the "Dema DMI" an ideal tool for traders seeking to improve their trend-following strategies and optimize their market positioning.
Alerts and Visual Cues
The script includes alert conditions that notify traders when a significant trend change occurs. The "Dema DMI Long" alert is triggered when the indicator detects an upward trend, while the "Dema DMI Short" alert signals a potential downward trend. Visual cues, such as changes in the bar color and the difference between positive and negative directional movement, help traders quickly identify trend shifts and act accordingly.
Summary and Usage Tips
The "Dema DMI | viResearch" indicator combines the smoothing benefits of the DEMA with the directional analysis of the DMI, providing traders with a reliable tool for detecting trend changes and confirming trend strength. By incorporating this script into your trading strategy, you can improve your ability to detect early trend reversals, confirm trend direction, and reduce noise in price data. The "Dema DMI" is a flexible and adaptable solution for traders looking to enhance their technical analysis in various market conditions.
Note: Backtests are based on past results and are not indicative of future performance.
DEMA Adaptive DMI [BackQuant]DEMA Adaptive DMI
PLEASE Read the following, knowing what an indicator does at its core before adding it into a system is pivotal. The core concepts can allow you to include it in a logical and sound manner.
Conceptual Foundation and Innovation
The DEMA Adaptive DMI blends the Double Exponential Moving Average (DEMA) with the Directional Movement Index (DMI) to offer a unique approach to trend-following. By applying DEMA to the high and low prices, this indicator refines the traditional DMI calculation, enhancing its responsiveness to price changes. This results in a more adaptive and timely measure of market trends and momentum, providing traders with a more refined tool for capturing directional movements in the market.
Technical Composition and Calculation
At its core, the DEMA Adaptive DMI calculates the DEMA for both the high and low prices over a user-defined period. This dual application of DEMA serves to smooth out price fluctuations while retaining sensitivity to market movements. The DMI is then derived from the changes in these DEMA values, producing a set of plus and minus directional indicators that reflect the prevailing trend. Additionally, an Average Directional Index (ADX) is computed to measure the strength of the trend, with the entire process being dynamically adjusted based on the DEMA calculations.
DEMA Application:
The DEMA is applied to both high and low prices to reduce lag and provide a smoother representation of price action.
Directional Movement Calculation: The DMI is calculated using the smoothed price changes, resulting in plus and minus indicators that accurately reflect market trends.
ADX Calculation:
The ADX is computed to quantify the strength of the trend, offering traders insight into whether the market is trending strongly or is in a phase of consolidation.
Features and User Inputs The DEMA Adaptive DMI offers a range of customizable options to suit different trading styles and market conditions:
DEMA Calculation Period: Users can set the period for the DEMA calculation, allowing for adjustments based on the desired sensitivity.
DMI Length: The length of the DMI calculation can be adjusted, providing flexibility in how trends are measured.
ADX Smoothing Period: The smoothing period for the ADX can be customized to fine-tune the trend strength measurement.
Divergence Detection: Optional divergence detection features allow traders to spot potential reversals based on the DMI and price action.
Visualization options include static high and low levels to mark extreme DMI thresholds, the ability to color bars according to trend direction, and background hues to highlight overbought and oversold conditions.
Practical Applications
The DEMA Adaptive DMI is particularly effective in markets where trend strength and direction are crucial for successful trading. Traders can leverage this indicator to:
Identify Trend Reversals:
Detect potential trend reversals by monitoring the DMI and ADX in conjunction with divergence signals.
Trend Confirmation:
Use the DEMA-based DMI to confirm the strength and direction of a trend, aiding in the timing of entries and exits.
Strategic Positioning:
The indicator's responsiveness allows traders to position themselves effectively in fast-moving markets, reducing the risk of late entries or exits.
Advantages and Strategic Value
By integrating the DEMA with the DMI, this indicator provides a more adaptive and timely measure of market trends. The reduced lag from the DEMA ensures that traders receive signals that are closely aligned with current market conditions, while the dynamic DMI calculation offers a more accurate representation of trend direction and strength. This makes the DEMA Adaptive DMI a valuable tool for traders looking to enhance their trend-following strategies with a focus on precision and adaptability.
Summary and Usage Tips
The DEMA Adaptive DMI is a sophisticated trend-following indicator that combines the benefits of DEMA and DMI into a single, powerful tool. Traders are encouraged to incorporate this indicator into their trading systems for a more nuanced and responsive approach to trend detection and confirmation. Whether used for identifying trend reversals, confirming trend strength, or strategically positioning in the market, the DEMA Adaptive DMI offers a versatile and reliable solution for trend-following strategies.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future.
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
Directional Movement Index DEThis script uses the existing built-in DMI indicator but adds two lines indicating strength of the ADX trend. The original author J. Welles Wilder, indicated a ADX trending strongly above 25 (yellow by default), and ADX trending weaker at a threshold of 20 or below (dashed yellow by default).
The default colours have been changed so that ADX is yellow, +DI is green, and -DI is red.
Calculation
Calculating the DMI can actually be broken down into two parts. First, calculating the +DI and -DI, and second, calculating the ADX. To calculate the +DI and -DI you need to find the +DM and -DM (Directional Movement). +DM and -DM are calculated using the High, Low and Close for each period. You can then calculate the following:
Current High - Previous High = UpMove
Previous Low - Current Low = DownMove
If UpMove > DownMove and UpMove > 0, then +DM = UpMove, else +DM = 0
If DownMove > Upmove and Downmove > 0, then -DM = DownMove, else -DM = 0
Once you have the current +DM and -DM calculated, the +DM and -DM lines can be calculated and plotted based on the number of user defined periods.
+DI = 100 times Exponential Moving Average of (+DM / Average True Range)
-DI = 100 times Exponential Moving Average of (-DM / Average True Range)
Now that -+DX and -DX have been calculated, the last step is calculating the ADX.
ADX = 100 times the Exponential Moving Average of the Absolute Value of (+DI - -DI) / (+DI + -DI)
The basics
DMI has a value between 0 and 100 and is used to measure the strength of the current trend. +DI and -DI are then used to measure direction. When combined, the indicator can provide some valuable insight. A general interpretation would be that during a strong trend (ADX above 25 but dependent on the analyst's interpretation), when the +DI is above the -DI, then a Bullish Market is defined. When -DI is above +DI, then a Bearish Market is at hand.
One thing to be considered is that what DMI values determine, strength or a potential signal, is up to the trader's interpretation. Acceptable values may change depending on the financial instrument being examined, therefore some historical analysis of the instrument in question would be prudent. A technical analyst can make better decisions based on what has occurred in historical examples.
All credit goes to the original script .
SUPERTREND MIXED ICHI-DMI-DONCHIAN-VOL-GAP-HLBox@RLSUPERTREND MIXED ICHI-DMI-VOL-GAP-HLBox@RL
by RegisL76 (lebourg.regis@free.fr)
This script is based on several trend indicators.
* ICHIMOKU (KINKO HYO)
* DMI (Directional Movement Index)
* SUPERTREND ICHIMOKU + SUPERTREND DMI
* DONCHIAN CANAL Optimized with Colored Bars
* HMA Hull
* Fair Value GAP
* VOLUME/ MA Volume
* PRICE / MA Price
* HHLL BOXES
All these indications are visible simultaneously on a single graph. A data table summarizes all the important information to make a good trade decision.
ICHIMOKU Indicator:
The ICHIMOKU indicator is visualized in the traditional way.
ICHIMOKU standard setting values are respected but modifiable. (Traditional defaults = .
An oriented visual symbol, near the last value, indicates the progression (Ascending, Descending or neutral) of the TENKAN-SEN and the KIJUN-SEN as well as the period used.
The CLOUD (KUMO) and the CHIKOU-SPAN are present and are essential for the complete analysis of the ICHIMOKU.
At the top of the graph are visually represented the crossings of the TENKAN and the KIJUN.
Vertical lines, accompanied by labels, make it possible to quickly visualize the particularities of the ICHIMOKU.
A line displays the current bar.
A line visualizes the end of the CLOUD (KUMO) which is shifted 25 bars into the future.
A line visualizes the end of the chikou-span, which is shifted 25 bars in the past.
DIRECTIONAL MOVEMENT INDEX (DMI) : Treated conventionally : DI+, DI-, ADX and associated with a SUPERTREND DMI.
A visual symbol at the bottom of the graph indicates DI+ and DI- crossings
A line of oriented and colored symbols (DMI Line) at the top of the chart indicates the direction and strength of the trend.
SUPERTREND ICHIMOKU + SUPERTREND DMI :
Trend following by SUPERTREND calculation.
DONCHIAN CHANNEL: Treated conventionally. (And optimized by colored bars when overshooting either up or down.
The lines, high and low of the last values of the channel are represented to quickly visualize the level of the RANGE.
SUPERTREND HMA (HULL) Treated conventionally.
The HMA line visually indicates, according to color and direction, the market trend.
A visual symbol at the bottom of the chart indicates opportunities to sell and buy.
VOLUME:
Calculation of the MOBILE AVERAGE of the volume with comparison of the volume compared to the moving average of the volume.
The indications are colored and commented according to the comparison.
PRICE: Calculation of the MOBILE AVERAGE of the price with comparison of the price compared to the moving average of the price.
The indications are colored and commented according to the comparison.
HHLL BOXES:
Visualizes in the form of a box, for a given period, the max high and min low values of the price.
The configuration allows taking into account the high and low wicks of the price or the opening and closing values.
FAIR VALUE GAP :
This indicator displays 'GAP' levels over the current time period and an optional higher time period.
The script takes into account the high/low values of the current bar and compares with the 2 previous bars.
The "gap" is generated from the lack of overlap between these bars. Bearish or bullish gaps are determined by whether the gap is above or below HmaPrice, as they tend to fill, and can be used as targets.
NOTE: FAIR VALUE GAP has no values displayed in the table and/or label.
Important information (DATA) relating to each indicator is displayed in real time in a table and/or a label.
Each information is commented and colored according to direction, value, comparison etc.
Each piece of information indicates the values of the current bar and the previous value (in "FULL" mode).
The other possible modes for viewing the table and/or the label allow a more synthetic view of the information ("CONDENSED" and "MINIMAL" modes).
In order not to overload the vision of the chart too much, the visualization box of the RANGE DONCHIAN, the vertical lines of the shifted marks of the ICHIMOKU, as well as the boxes of the HHLL Boxes indicator are only visualized intermittently (managed by an adjustable time delay ).
The "HISTORICAL INFO READING" configuration parameter set to zero (by default) makes it possible to read all the information of the current bar in progress (Bar #0). All other values allow to read the information of a historical bar. The value 1 reads the information of the bar preceding the current bar (-1). The value 10 makes it possible to read the information of the tenth bar behind (-10) compared to the current bar, etc.
At the bottom of the DATAS table and label, lights, red, green or white indicate quickly summarize the trend from the various indicators.
Each light represents the number of indicators with the same trend at a given time.
Green for a bullish trend, red for a bearish trend and white for a neutral trend.
The conditions for determining a trend are for each indicator:
SUPERTREND ICHIMOHU + DMI: the 2 Super trends together are either bullish or bearish.
Otherwise the signal is neutral.
DMI: 2 main conditions:
BULLISH if DI+ >= DI- and ADX >25.
BEARISH if DI+ < DI- and ADX >25.
NEUTRAL if the 2 conditions are not met.
ICHIMOKU: 3 main conditions:
BULLISH if PRICE above the cloud and TENKAN > KIJUN and GREEN CLOUD AHEAD.
BEARISH if PRICE below the cloud and TENKAN < KIJUN and RED CLOUD AHEAD.
The other additional conditions (Data) complete the analysis and are present for informational purposes of the trend and depend on the context.
DONCHIAN CHANNEL: 1 main condition:
BULLISH: the price has crossed above the HIGH DC line.
BEARISH: the price has gone below the LOW DC line.
NEUTRAL if the price is between the HIGH DC and LOW DC lines
The 2 other complementary conditions (Datas) complete the analysis:
HIGH DC and LOW DC are increasing, falling or stable.
SUPERTREND HMA HULL: The script determines several trend levels:
STRONG BUY, BUY, STRONG SELL, SELL AND NEUTRAL.
VOLUME: 3 trend levels:
VOLUME > MOVING AVERAGE,
VOLUME < MOVING AVERAGE,
VOLUME = MOVING AVERAGE.
PRICE: 3 trend levels:
PRICE > MOVING AVERAGE,
PRICE < MOVING AVERAGE,
PRICE = MOVING AVERAGE.
If you are using this indicator/strategy and you are satisfied with the results, you can possibly make a donation (a coffee, a pizza or more...) via paypal to: lebourg.regis@free.fr.
Thanks in advance !!!
Have good winning Trades.
**************************************************************************************************************************
SUPERTREND MIXED ICHI-DMI-VOL-GAP-HLBox@RL
by RegisL76 (lebourg.regis@free.fr)
Ce script est basé sur plusieurs indicateurs de tendance.
* ICHIMOKU (KINKO HYO)
* DMI (Directional Movement Index)
* SUPERTREND ICHIMOKU + SUPERTREND DMI
* DONCHIAN CANAL Optimized with Colored Bars
* HMA Hull
* Fair Value GAP
* VOLUME/ MA Volume
* PRIX / MA Prix
* HHLL BOXES
Toutes ces indications sont visibles simultanément sur un seul et même graphique.
Un tableau de données récapitule toutes les informations importantes pour prendre une bonne décision de Trade.
I- Indicateur ICHIMOKU :
L’indicateur ICHIMOKU est visualisé de manière traditionnelle
Les valeurs de réglage standard ICHIMOKU sont respectées mais modifiables. (Valeurs traditionnelles par défaut =
Un symbole visuel orienté, à proximité de la dernière valeur, indique la progression (Montant, Descendant ou neutre) de la TENKAN-SEN et de la KIJUN-SEN ainsi que la période utilisée.
Le NUAGE (KUMO) et la CHIKOU-SPAN sont bien présents et sont primordiaux pour l'analyse complète de l'ICHIMOKU.
En haut du graphique sont représentés visuellement les croisements de la TENKAN et de la KIJUN.
Des lignes verticales, accompagnées d'étiquettes, permettent de visualiser rapidement les particularités de l'ICHIMOKU.
Une ligne visualise la barre en cours.
Une ligne visualise l'extrémité du NUAGE (KUMO) qui est décalé de 25 barres dans le futur.
Une ligne visualise l'extrémité de la chikou-span, qui est décalée de 25 barres dans le passé.
II-DIRECTIONAL MOVEMENT INDEX (DMI)
Traité de manière conventionnelle : DI+, DI-, ADX et associé à un SUPERTREND DMI
Un symbole visuel en bas du graphique indique les croisements DI+ et DI-
Une ligne de symboles orientés et colorés (DMI Line) en haut du graphique, indique la direction et la puissance de la tendance.
III SUPERTREND ICHIMOKU + SUPERTREND DMI
Suivi de tendance par calcul SUPERTREND
IV- DONCHIAN CANAL :
Traité de manière conventionnelle.
(Et optimisé par des barres colorées en cas de dépassement soit vers le haut, soit vers le bas.
Les lignes, haute et basse des dernières valeurs du canal sont représentées pour visualiser rapidement la fourchette du RANGE.
V- SUPERTREND HMA (HULL)
Traité de manière conventionnelle.
La ligne HMA indique visuellement, selon la couleur et l'orientation, la tendance du marché.
Un symbole visuel en bas du graphique indique les opportunités de vente et d'achat.
*VI VOLUME :
Calcul de la MOYENNE MOBILE du volume avec comparaison du volume par rapport à la moyenne mobile du volume.
Les indications sont colorées et commentées en fonction de la comparaison.
*VII PRIX :
Calcul de la MOYENNE MOBILE du prix avec comparaison du prix par rapport à la moyenne mobile du prix.
Les indications sont colorées et commentées en fonction de la comparaison.
*VIII HHLL BOXES :
Visualise sous forme de boite, pour une période donnée, les valeurs max hautes et min basses du prix.
La configuration permet de prendre en compte les mèches hautes et basses du prix ou bien les valeurs d'ouverture et de fermeture.
IX - FAIR VALUE GAP
Cet indicateur affiche les niveaux de 'GAP' sur la période temporelle actuelle ET une période temporelle facultative supérieure.
Le script prend en compte les valeurs haut/bas de la barre actuelle et compare avec les 2 barres précédentes.
Le "gap" est généré à partir du manque de recouvrement entre ces barres.
Les écarts baissiers ou haussiers sont déterminés selon que l'écart est supérieurs ou inférieur à HmaPrice, car ils ont tendance à être comblés, et peuvent être utilisés comme cibles.
NOTA : FAIR VALUE GAP n'a pas de valeurs affichées dans la table et/ou l'étiquette.
Les informations importantes (DATAS) relatives à chaque indicateur sont visualisées en temps réel dans une table et/ou une étiquette.
Chaque information est commentée et colorée en fonction de la direction, de la valeur, de la comparaison etc.
Chaque information indique la valeurs de la barre en cours et la valeur précédente ( en mode "COMPLET").
Les autres modes possibles pour visualiser la table et/ou l'étiquette, permettent une vue plus synthétique des informations (modes "CONDENSÉ" et "MINIMAL").
Afin de ne pas trop surcharger la vision du graphique, la boite de visualisation du RANGE DONCHIAN, les lignes verticales des marques décalées de l'ICHIMOKU, ainsi que les boites de l'indicateur HHLL Boxes ne sont visualisées que de manière intermittente (géré par une temporisation réglable ).
Le paramètre de configuration "HISTORICAL INFO READING" réglé sur zéro (par défaut) permet de lire toutes les informations de la barre actuelle en cours (Barre #0).
Toutes autres valeurs permet de lire les informations d'une barre historique. La valeur 1 permet de lire les informations de la barre précédant la barre en cours (-1).
La valeur 10 permet de lire les information de la dixième barre en arrière (-10) par rapport à la barre en cours, etc.
Dans le bas de la table et de l'étiquette de DATAS, des voyants, rouge, vert ou blanc indique de manière rapide la synthèse de la tendance issue des différents indicateurs.
Chaque voyant représente le nombre d'indicateur ayant la même tendance à un instant donné. Vert pour une tendance Bullish, rouge pour une tendance Bearish et blanc pour une tendance neutre.
Les conditions pour déterminer une tendance sont pour chaque indicateur :
SUPERTREND ICHIMOHU + DMI : les 2 Super trends sont ensemble soit bullish soit Bearish. Sinon le signal est neutre.
DMI : 2 conditions principales :
BULLISH si DI+ >= DI- et ADX >25.
BEARISH si DI+ < DI- et ADX >25.
NEUTRE si les 2 conditions ne sont pas remplies.
ICHIMOKU : 3 conditions principales :
BULLISH si PRIX au dessus du nuage et TENKAN > KIJUN et NUAGE VERT DEVANT.
BEARISH si PRIX en dessous du nuage et TENKAN < KIJUN et NUAGE ROUGE DEVANT.
Les autres conditions complémentaires (Datas) complètent l'analyse et sont présents à titre informatif de la tendance et dépendent du contexte.
CANAL DONCHIAN : 1 condition principale :
BULLISH : le prix est passé au dessus de la ligne HIGH DC.
BEARISH : le prix est passé au dessous de la ligne LOW DC.
NEUTRE si le prix se situe entre les lignes HIGH DC et LOW DC
Les 2 autres conditions complémentaires (Datas) complètent l'analyse : HIGH DC et LOW DC sont croissants, descendants ou stables.
SUPERTREND HMA HULL :
Le script détermine plusieurs niveaux de tendance :
STRONG BUY, BUY, STRONG SELL, SELL ET NEUTRE.
VOLUME : 3 niveaux de tendance :
VOLUME > MOYENNE MOBILE, VOLUME < MOYENNE MOBILE, VOLUME = MOYENNE MOBILE.
PRIX : 3 niveaux de tendance :
PRIX > MOYENNE MOBILE, PRIX < MOYENNE MOBILE, PRIX = MOYENNE MOBILE.
Si vous utilisez cet indicateur/ stratégie et que vous êtes satisfait des résultats,
vous pouvez éventuellement me faire un don (un café, une pizza ou plus ...) via paypal à : lebourg.regis@free.fr.
Merci d'avance !!!
Ayez de bons Trades gagnants.
StapleIndicatorsLibrary "StapleIndicators"
This Library provides some common indicators commonly referenced from other studies in Pine Script
squeeze(bbSrc, bbPeriod, bbDev, kcSrc, kcPeriod, kcATR, signalPeriod) Volatility Squeeze
Parameters:
bbSrc : (Optional) Bollinger Bands Source. By default close
bbPeriod : (Optional) Bollinger Bands Period. By default 20
bbDev : (Optional) Bollinger Bands Standard Deviation. By default 2.0
kcSrc : (Optional) Keltner Channel Source. By default close
kcPeriod : (Optional) Keltner Channel Period. By default 20
kcATR : (Optional) Keltner Channel ATR Multiplier. By default 1.5
signalPeriod : (Optional) Keltner Channel ATR Multiplier. By default 1.5
Returns:
adx(diPeriod, adxPeriod, signalPeriod, adxTier1, adxTier2, adxTier3) ADX: Average Directional Index
Parameters:
diPeriod : (Optional) Directional Indicator Period. By default 14
adxPeriod : (Optional) ADX Smoothing. By default 14
signalPeriod : (Optional) Signal Period. By default 13
adxTier1 : (Optional) ADX Tier #1 Level. By default 20
adxTier2 : (Optional) ADX Tier #2 Level. By default 15
adxTier3 : (Optional) ADX Tier #3 Level. By default 10
Returns:
smaPreset(srcMa) Delivers a set of frequently used Simple Moving Averages
Parameters:
srcMa : (Optional) MA Source. By default 'close'
Returns:
emaPreset(srcMa) Delivers a set of frequently used Exponential Moving Averages
Parameters:
srcMa : (Optional) MA Source. By default 'close'
Returns:
maSelect(ma, srcMa) Filters and outputs the selected MA
Parameters:
ma : (Optional) MA text. By default 'Ema-21'
srcMa : (Optional) MA Source. By default 'close'
Returns: maSelected
periodAdapt(modeAdaptative, src, maxLen, minLen) Adaptative Period
Parameters:
modeAdaptative : (Optional) Adaptative Mode. By default 'Average'
src : (Optional) Source. By default 'close'
maxLen : (Optional) Max Period. By default '60'
minLen : (Optional) Min Period. By default '4'
Returns: periodAdaptative
azlema(modeAdaptative, srcMa) Azlema: Adaptative Zero-Lag Ema
Parameters:
modeAdaptative : (Optional) Adaptative Mode. By default 'Average'
srcMa : (Optional) MA Source. By default 'close'
Returns: azlema
ssma(lsmaVar, srcMa, periodMa) SSMA: Smooth Simple MA
Parameters:
lsmaVar : Linear Regression Curve.
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '13'
Returns: ssma
jvf(srcMa, periodMa) Jurik Volatility Factor
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
Returns:
jBands(srcMa, periodMa) Jurik Bands
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
Returns:
jma(srcMa, periodMa, phase) Jurik MA (JMA)
Parameters:
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '7'
phase : (Optional) Phase. By default '50'
Returns: jma
maCustom(ma, srcMa, periodMa, lrOffset, almaOffset, almaSigma, jmaPhase, azlemaMode) Creates a custom Moving Average
Parameters:
ma : (Optional) MA text. By default 'Ema'
srcMa : (Optional) MA Source. By default 'close'
periodMa : (Optional) MA Period. By default '13'
lrOffset : (Optional) Linear Regression Offset. By default '0'
almaOffset : (Optional) Alma Offset. By default '0.85'
almaSigma : (Optional) Alma Sigma. By default '6'
jmaPhase : (Optional) JMA Phase. By default '50'
azlemaMode : (Optional) Azlema Adaptative Mode. By default 'Average'
Returns: maTF
RSI + SMII + Bollinger Bands StrategyRSI + SMII + Bollinger Bands Strategy User Guide
This indicator combines RSI, SMII, and Bollinger Bands to provide strong buy, sell, and hold signals. The steps below explain how to use it effectively.
1. Activating the Indicator
Add the Indicator to the Chart:
Click "Add to Chart" in the code editor to activate the indicator.
The indicator will display candle colors and Bollinger Bands on the chart.
Adjusting Parameters:
You can modify the following parameters to suit your needs:
RSI Length (default: 22)
SMII Short and Long Lengths (default: 5 and 10)
Bollinger Bands Length (default: 20) and Standard Deviation (default: 2)
ADX Threshold (default: 25)
2. Understanding the Indicator
Candle Colors:
Green Candles: Buy signal. When the indicator detects a buy opportunity based on RSI, SMII, and Bollinger conditions, candles turn green.
Red Candles: Sell signal. Candles turn red when a sell opportunity arises.
Orange Candles: Hold mode. When uncertainty is detected (e.g., RSI is between 40-60), candles turn orange.
Bollinger Bands:
Upper Band: Represents overbought levels. When the price exceeds this level, sell signals may occur.
Lower Band: Represents oversold levels. When the price touches this level, buy signals may occur.
Middle Band: Acts as a support or resistance point depending on the price direction.
Signals:
Buy Signal (Green Arrow):
RSI is below 30.
SMII is above the zero line.
Price is below the Bollinger lower band.
ADX > 25 (strong trend).
Sell Signal (Red Arrow):
RSI is above 70.
SMII is below the zero line.
Price is above the Bollinger upper band.
ADX > 25 (strong trend).
Hold Signal:
RSI is between 40-60.
SMII is near the zero line (<0.1 deviation).
3. Usage Strategies
Buy Strategy:
Observe green candles and a buy signal.
Confirm that the price is near or below the Bollinger lower band for stronger signals.
Ensure ADX > 25, indicating a strong trend.
Sell Strategy:
Observe red candles and a sell signal.
Confirm that the price is near or above the Bollinger upper band for stronger signals.
Ensure ADX > 25.
Hold Strategy:
When orange candles appear, avoid entering the market.
Verify that the price is near the Bollinger middle band or RSI is between 40-60.
Wait until uncertainty resolves before acting.
4. Setting Alerts
The indicator has built-in alert functionality:
Click the "Alert" icon in the top right.
Select "Buy Signal Alert" or "Sell Signal Alert."
Receive notifications when signals are triggered.
5. Risk Management
Stop-Loss Level: Set stop-loss just below the Bollinger lower band after a buy or above the Bollinger upper band after a sell.
Take-Profit Level:
After a buy, hold until the price reaches the Bollinger middle or upper band.
After a sell, hold until the price reaches the Bollinger middle or lower band.
6. Additional Notes and Tips
Signals are more reliable on longer timeframes (e.g., 4-hour or daily charts).
Test the indicator on historical data (backtesting) to evaluate its performance.
Always validate signals with other analysis methods before making trades.
This guide will help you use the indicator effectively. If you have questions or need further customization, feel free to reach out!
BTCUSDT Daily - Enhanced Bitcoin Bull Market Support [CYRANO]The Enhanced Bitcoin Bull Market Support Strategy is designed to identify and trade Bitcoin's bullish trends on the daily timeframe. It uses long-term moving averages, momentum indicators, and volatility measures to enter trades during strong upward trends while dynamically managing risk and optimizing profit-taking.
Key Features
Bull Market Detection:
The strategy focuses on trading only in bullish market conditions, defined as:
The price is above the 200-day Simple Moving Average (SMA).
The price is above the 21-week Exponential Moving Average (EMA).
Momentum Filters:
RSI Filter: Ensures trades are only taken when momentum is positive (RSI > 50).
ADX Filter: Confirms the trend is strong by requiring the ADX value to exceed a specified threshold (e.g., 25).
Dynamic Risk Management:
Uses the Average True Range (ATR) to calculate a dynamic stop-loss level based on market volatility.
Stop-loss is set below the current price by a user-defined multiple of the ATR.
Profit Optimization:
Incorporates a percentage-based take profit mechanism to exit trades once the price reaches a specific profit level.
Trade Execution:
Long Only: The strategy only enters and exits long positions.
Trades are entered when all conditions align and exited when the price falls below either the 200-day SMA or the 21-week EMA.
Customizable Timeframe:
Includes a Date Range Filter to allow testing and execution over specific periods (e.g., from 2018-01-01 to 2069-12-31).
Visual Aids:
Plots the 200-day SMA and 21-week EMA on the chart.
Highlights the chart background with green during bull markets (price above both SMA and EMA) and red during bear markets.
Entry Conditions
The price must be above both the 200-day SMA and the 21-week EMA.
The RSI (Relative Strength Index) must be greater than 50 (optional, user-configurable).
The ADX (Average Directional Index) must exceed a user-defined threshold, indicating a strong trend (optional, user-configurable).
Exit Conditions
The price falls below either the 200-day SMA or the 21-week EMA.
The trade is automatically closed if the dynamic stop-loss or take-profit levels are triggered.
User Inputs
Moving Averages:
Length of the SMA (default: 200 days).
Length of the EMA (default: 147 days, approximating 21 weeks).
Volatility (ATR):
ATR length (default: 14 days).
Stop-loss multiplier (default: 2x ATR).
Momentum Indicators:
Enable or disable RSI and ADX filters.
Configure RSI length (default: 14) and ADX threshold (default: 25).
Take Profit:
Set a percentage-based take-profit target (default: 10%).
Date Range:
Define a start and end date for backtesting and live execution.
Strengths
Long-Term Focus: Designed for traders and investors aiming to capture macro trends.
Risk Management: Incorporates dynamic stop-loss and take-profit to optimize returns and reduce losses.
Customizable: Flexible parameters to adapt to changing market conditions.
Use Case
This strategy is best suited for swing traders and long-term investors who want to capitalize on Bitcoin's sustained bullish trends while managing risk effectively. It works best on the daily timeframe, ensuring reliable signals and minimizing noise from intraday price fluctuations.
DeepSignalFilterHelpersLibrary "DeepSignalFilterHelpers"
filter_intraday_intensity(useIiiFilter)
Parameters:
useIiiFilter (bool)
filter_vwma(src, length, useVwmaFilter)
Parameters:
src (float)
length (int)
useVwmaFilter (bool)
filter_nvi(useNviFilter)
Parameters:
useNviFilter (bool)
filter_emv(length, emvThreshold, useEmvFilter, useMovingAvg)
EMV filter for filtering signals based on Ease of Movement
Parameters:
length (int) : The length of the EMV calculation
emvThreshold (float) : The EMV threshold
useEmvFilter (bool) : Whether to apply the EMV filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_adi(length, threshold, useAdiFilter, useMovingAvg)
ADI filter for filtering signals based on Accumulation/Distribution Index
Parameters:
length (int) : The length of the ADI moving average calculation
threshold (float) : The ADI threshold
useAdiFilter (bool) : Whether to apply the ADI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_mfi(length, mfiThreshold, useMfiFilter, useMovingAvg)
MFI filter for filtering signals based on Money Flow Index
Parameters:
length (int) : The length of the MFI calculation
mfiThreshold (float) : The MFI threshold
useMfiFilter (bool) : Whether to apply the MFI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
detect_obv_states(obvThresholdStrong, obvThresholdModerate, lookbackPeriod, obvMode)
detect_obv_states: Identify OBV states with three levels (Strong, Moderate, Weak) over a configurable period
Parameters:
obvThresholdStrong (float) : Threshold for strong OBV movements
obvThresholdModerate (float) : Threshold for moderate OBV movements
lookbackPeriod (int) : Number of periods to analyze OBV trends
obvMode (string) : OBV mode to filter ("Strong", "Moderate", "Weak")
Returns: OBV state ("Strong Up", "Moderate Up", "Weak Up", "Positive Divergence", "Negative Divergence", "Consolidation", "Weak Down", "Moderate Down", "Strong Down")
filter_obv(src, length, obvMode, threshold, useObvFilter, useMovingAvg)
filter_obv: Filter signals based on OBV states
Parameters:
src (float) : The source series (default: close)
length (int) : The length of the OBV moving average calculation
obvMode (string) : OBV mode to filter ("Strong", "Moderate", "Weak")
threshold (float) : Optional threshold for additional filtering
useObvFilter (bool) : Whether to apply the OBV filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_cmf(length, cmfThreshold, useCmfFilter, useMovingAvg)
CMF filter for filtering signals based on Chaikin Money Flow
Parameters:
length (int) : The length of the CMF calculation
cmfThreshold (float) : The CMF threshold
useCmfFilter (bool) : Whether to apply the CMF filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_vwap(useVwapFilter)
VWAP filter for filtering signals based on Volume-Weighted Average Price
Parameters:
useVwapFilter (bool) : Whether to apply the VWAP filter
Returns: Filtered result indicating whether the signal should be used
filter_pvt(length, pvtThreshold, usePvtFilter, useMovingAvg)
PVT filter for filtering signals based on Price Volume Trend
Parameters:
length (int) : The length of the PVT moving average calculation
pvtThreshold (float) : The PVT threshold
usePvtFilter (bool) : Whether to apply the PVT filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_vo(shortLength, longLength, voThreshold, useVoFilter, useMovingAvg)
VO filter for filtering signals based on Volume Oscillator
Parameters:
shortLength (int) : The length of the short-term volume moving average
longLength (int) : The length of the long-term volume moving average
voThreshold (float) : The Volume Oscillator threshold
useVoFilter (bool) : Whether to apply the VO filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_cho(shortLength, longLength, choThreshold, useChoFilter, useMovingAvg)
CHO filter for filtering signals based on Chaikin Oscillator
Parameters:
shortLength (int) : The length of the short-term ADI moving average
longLength (int) : The length of the long-term ADI moving average
choThreshold (float) : The Chaikin Oscillator threshold
useChoFilter (bool) : Whether to apply the CHO filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_fi(length, fiThreshold, useFiFilter, useMovingAvg)
FI filter for filtering signals based on Force Index
Parameters:
length (int) : The length of the FI calculation
fiThreshold (float) : The Force Index threshold
useFiFilter (bool) : Whether to apply the FI filter
useMovingAvg (bool) : Whether to use moving average as threshold
Returns: Filtered result indicating whether the signal should be used
filter_garman_klass_volatility(length, useGkFilter)
Parameters:
length (int)
useGkFilter (bool)
filter_frama(src, length, useFramaFilter)
Parameters:
src (float)
length (int)
useFramaFilter (bool)
filter_bollinger_bands(src, length, stdDev, useBollingerFilter)
Parameters:
src (float)
length (int)
stdDev (float)
useBollingerFilter (bool)
filter_keltner_channel(src, length, atrMult, useKeltnerFilter)
Parameters:
src (float)
length (simple int)
atrMult (float)
useKeltnerFilter (bool)
regime_filter(src, threshold, useRegimeFilter)
Regime filter for filtering signals based on trend strength
Parameters:
src (float) : The source series
threshold (float) : The threshold for the filter
useRegimeFilter (bool) : Whether to apply the regime filter
Returns: Filtered result indicating whether the signal should be used
regime_filter_v2(src, threshold, useRegimeFilter)
Regime filter for filtering signals based on trend strength
Parameters:
src (float) : The source series
threshold (float) : The threshold for the filter
useRegimeFilter (bool) : Whether to apply the regime filter
Returns: Filtered result indicating whether the signal should be used
filter_adx(src, length, adxThreshold, useAdxFilter)
ADX filter for filtering signals based on ADX strength
Parameters:
src (float) : The source series
length (simple int) : The length of the ADX calculation
adxThreshold (int) : The ADX threshold
useAdxFilter (bool) : Whether to apply the ADX filter
Returns: Filtered result indicating whether the signal should be used
filter_volatility(minLength, maxLength, useVolatilityFilter)
Volatility filter for filtering signals based on volatility
Parameters:
minLength (simple int) : The minimum length for ATR calculation
maxLength (simple int) : The maximum length for ATR calculation
useVolatilityFilter (bool) : Whether to apply the volatility filter
Returns: Filtered result indicating whether the signal should be used
filter_ulcer(src, length, ulcerThreshold, useUlcerFilter)
Ulcer Index filter for filtering signals based on Ulcer Index
Parameters:
src (float) : The source series
length (int) : The length of the Ulcer Index calculation
ulcerThreshold (float) : The Ulcer Index threshold (default: average Ulcer Index)
useUlcerFilter (bool) : Whether to apply the Ulcer Index filter
Returns: Filtered result indicating whether the signal should be used
filter_stddev(src, length, stdDevThreshold, useStdDevFilter)
Standard Deviation filter for filtering signals based on Standard Deviation
Parameters:
src (float) : The source series
length (int) : The length of the Standard Deviation calculation
stdDevThreshold (float) : The Standard Deviation threshold (default: average Standard Deviation)
useStdDevFilter (bool) : Whether to apply the Standard Deviation filter
Returns: Filtered result indicating whether the signal should be used
filter_macdv(src, shortLength, longLength, signalSmoothing, macdVThreshold, useMacdVFilter)
MACD-V filter for filtering signals based on MACD-V
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
macdVThreshold (float) : The MACD-V threshold (default: average MACD-V)
useMacdVFilter (bool) : Whether to apply the MACD-V filter
Returns: Filtered result indicating whether the signal should be used
filter_atr(length, atrThreshold, useAtrFilter)
ATR filter for filtering signals based on Average True Range (ATR)
Parameters:
length (simple int) : The length of the ATR calculation
atrThreshold (float) : The ATR threshold (default: average ATR)
useAtrFilter (bool) : Whether to apply the ATR filter
Returns: Filtered result indicating whether the signal should be used
filter_candle_body_and_atr(length, bodyThreshold, atrThreshold, useFilter)
Candle Body and ATR filter for filtering signals
Parameters:
length (simple int) : The length of the ATR calculation
bodyThreshold (float) : The threshold for candle body size (relative to ATR)
atrThreshold (float) : The ATR threshold (default: average ATR)
useFilter (bool) : Whether to apply the candle body and ATR filter
Returns: Filtered result indicating whether the signal should be used
filter_atrp(length, atrpThreshold, useAtrpFilter)
ATRP filter for filtering signals based on ATR Percentage (ATRP)
Parameters:
length (simple int) : The length of the ATR calculation
atrpThreshold (float) : The ATRP threshold (default: average ATRP)
useAtrpFilter (bool) : Whether to apply the ATRP filter
Returns: Filtered result indicating whether the signal should be used
filter_jma(src, length, phase, useJmaFilter)
Parameters:
src (float)
length (simple int)
phase (float)
useJmaFilter (bool)
filter_cidi(src, rsiLength, shortMaLength, longMaLength, useCidiFilter)
Parameters:
src (float)
rsiLength (simple int)
shortMaLength (int)
longMaLength (int)
useCidiFilter (bool)
filter_rsi(src, length, rsiThreshold, useRsiFilter)
Parameters:
src (float)
length (simple int)
rsiThreshold (float)
useRsiFilter (bool)
filter_ichimoku_oscillator(length, threshold, useFilter)
Ichimoku Oscillator filter for filtering signals based on Ichimoku Oscillator
Parameters:
length (int) : The length of the Ichimoku Oscillator calculation
threshold (float) : The threshold for the filter (default: average Ichimoku Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_cmb_composite_index(src, shortLength, longLength, threshold, useFilter)
CMB Composite Index filter for filtering signals based on CMB Composite Index
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for CMB calculation
longLength (simple int) : The long length for CMB calculation
threshold (float) : The threshold for the filter (default: average CMB Composite Index)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_connors_rsi(src, rsiLength, rocLength, streakLength, threshold, useFilter)
Connors RSI filter for filtering signals based on Connors RSI
Parameters:
src (float) : The source series
rsiLength (simple int) : The length for RSI calculation
rocLength (int) : The length for ROC calculation
streakLength (simple int) : The length for streak calculation
threshold (float) : The threshold for the filter (default: average Connors RSI)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_coppock_curve(src, roc1Length, roc2Length, wmaLength, threshold, useFilter)
Coppock Curve filter for filtering signals based on Coppock Curve
Parameters:
src (float) : The source series
roc1Length (int) : The length for the first ROC calculation
roc2Length (int) : The length for the second ROC calculation
wmaLength (int) : The length for the WMA calculation
threshold (float) : The threshold for the filter (default: average Coppock Curve)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_pmo(src, pmoLength, smoothingLength, threshold, useFilter)
DecisionPoint Price Momentum Oscillator filter for filtering signals based on PMO
Parameters:
src (float) : The source series
pmoLength (simple int) : The length for PMO calculation
smoothingLength (simple int) : The smoothing length for PMO
threshold (float) : The threshold for the filter (default: average PMO Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_macd(src, shortLength, longLength, signalSmoothing, threshold, useFilter)
MACD filter for filtering signals based on MACD
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
threshold (float) : The threshold for the filter (default: average MACD)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_macd_histogram(src, shortLength, longLength, signalSmoothing, threshold, useFilter)
MACD-Histogram filter for filtering signals based on MACD-Histogram
Parameters:
src (float) : The source series
shortLength (simple int) : The short length for MACD calculation
longLength (simple int) : The long length for MACD calculation
signalSmoothing (simple int) : The signal smoothing length for MACD
threshold (float) : The threshold for the filter (default: average MACD-Histogram)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_kst(src, r1, r2, r3, r4, sm1, sm2, sm3, sm4, signalLength, threshold, useFilter)
Pring's Know Sure Thing filter for filtering signals based on KST
Parameters:
src (float) : The source series
r1 (int) : The first ROC length
r2 (int) : The second ROC length
r3 (int) : The third ROC length
r4 (int) : The fourth ROC length
sm1 (int) : The first smoothing length
sm2 (int) : The second smoothing length
sm3 (int) : The third smoothing length
sm4 (int) : The fourth smoothing length
signalLength (int) : The signal line smoothing length
threshold (float) : The threshold for the filter (default: average KST Oscillator)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_special_k(src, r1, r2, r3, r4, sm1, sm2, sm3, sm4, threshold, useFilter)
Pring's Special K filter for filtering signals based on Special K
Parameters:
src (float) : The source series
r1 (int) : The first ROC length
r2 (int) : The second ROC length
r3 (int) : The third ROC length
r4 (int) : The fourth ROC length
sm1 (int) : The first smoothing length
sm2 (int) : The second smoothing length
sm3 (int) : The third smoothing length
sm4 (int) : The fourth smoothing length
threshold (float) : The threshold for the filter (default: average Special K)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_roc_momentum(src, rocLength, momentumLength, threshold, useFilter)
ROC and Momentum filter for filtering signals based on ROC and Momentum
Parameters:
src (float) : The source series
rocLength (int) : The length for ROC calculation
momentumLength (int) : The length for Momentum calculation
threshold (float) : The threshold for the filter (default: average ROC and Momentum)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_rrg_relative_strength(src, length, threshold, useFilter)
RRG Relative Strength filter for filtering signals based on RRG Relative Strength
Parameters:
src (float) : The source series
length (int) : The length for RRG Relative Strength calculation
threshold (float) : The threshold for the filter (default: average RRG Relative Strength)
useFilter (bool) : Whether to apply the filter
Returns: Filtered result indicating whether the signal should be used
filter_alligator(useFilter)
Parameters:
useFilter (bool)
filter_wyckoff(useFilter)
Parameters:
useFilter (bool)
filter_squeeze_momentum(bbLength, bbStdDev, kcLength, kcMult, useFilter)
Parameters:
bbLength (int)
bbStdDev (float)
kcLength (simple int)
kcMult (float)
useFilter (bool)
filter_atr_compression(length, atrThreshold, useFilter)
Parameters:
length (simple int)
atrThreshold (float)
useFilter (bool)
filter_low_volume(length, useFilter)
Parameters:
length (int)
useFilter (bool)
filter_nvi_accumulation(useFilter)
Parameters:
useFilter (bool)
filter_ma_slope(src, length, slopeThreshold, useFilter)
Parameters:
src (float)
length (int)
slopeThreshold (float)
useFilter (bool)
filter_adx_low(len, lensig, adxThreshold, useFilter)
Parameters:
len (simple int)
lensig (simple int)
adxThreshold (int)
useFilter (bool)
filter_choppiness_index(length, chopThreshold, useFilter)
Parameters:
length (int)
chopThreshold (float)
useFilter (bool)
filter_range_detection(length, useFilter)
Parameters:
length (int)
useFilter (bool)
Momentum Cloud.V33🌟 Introducing MomentumCloud.V33 🌟
MomentumCloud.V33 is a cutting-edge indicator designed to help traders capture market momentum with clarity and precision. This versatile tool combines moving averages, directional movement indexes (DMI), and volume analysis to provide real-time insights into trend direction and strength. Whether you’re a scalper, day trader, or swing trader, MomentumCloud.V33 adapts to your trading style and timeframe, making it an essential addition to your trading toolkit. 📈💡
🔧 Customizable Parameters:
• Moving Averages: Adjust the periods of the fast (MA1) and slow (MA2) moving averages to fine-tune your trend analysis.
• DMI & ADX: Customize the DMI length and ADX smoothing to focus on strong, actionable trends.
• Volume Multiplier: Modify the cloud thickness based on trading volume, emphasizing trends with significant market participation.
📊 Trend Detection:
• Color-Coded Clouds:
• Green Cloud: Indicates a strong uptrend, suggesting buying opportunities.
• Red Cloud: Indicates a strong downtrend, signaling potential short trades.
• Gray Cloud: Reflects a range-bound market, helping you avoid low-momentum periods.
• Dynamic Volume Integration: The cloud thickness adjusts dynamically with trading volume, highlighting strong trends supported by high market activity.
📈 Strength & Momentum Analysis:
• Strength Filtering: The ADX component ensures that only strong trends are highlighted, filtering out market noise and reducing false signals.
• Visual Momentum Gauge: The cloud color and thickness provide a quick visual representation of market momentum, enabling faster decision-making.
🔔 Alerts:
• Custom Alerts: Set up alerts for when the trend shifts or reaches critical levels, keeping you informed without needing to constantly monitor the chart.
🎨 Visual Enhancements:
• Gradient Cloud & Shadows: The indicator features a gradient-filled cloud with shadowed moving averages, enhancing both aesthetics and clarity on your charts.
• Adaptive Visual Cues: MomentumCloud.V33’s color transitions and dynamic thickness provide an intuitive feel for the market’s rhythm.
🚀 Quick Guide to Using MomentumCloud.V33
1. Add the Indicator: Start by adding MomentumCloud.V33 to your chart. Customize the settings such as MA periods, DMI length, and volume multiplier to match your trading style.
2. Analyze the Market: Observe the color-coded cloud and its thickness to gauge market momentum and trend direction. The thicker the cloud, the stronger the trend.
3. Set Alerts: Activate alerts for trend changes or key levels to capture trading opportunities without needing to watch the screen continuously.
⚙️ How It Works:
MomentumCloud.V33 calculates market momentum by combining moving averages, DMI, and volume. The cloud color changes based on the trend direction, while its thickness reflects the strength of the trend as influenced by trading volume. This integrated approach ensures you can quickly identify robust market movements, making it easier to enter and exit trades at optimal points.
Settings Overview:
• Moving Averages: Define the lengths for the fast and slow moving averages.
• DMI & ADX: Adjust the DMI length and ADX smoothing to focus on significant trends.
• Volume Multiplier: Customize the multiplier to control cloud thickness, highlighting volume-driven trends.
📚 How to Use MomentumCloud.V33:
• Trend Identification: The direction and color of the cloud indicate the prevailing trend, while the cloud’s thickness suggests the trend’s strength.
• Trade Execution: Use the green cloud to look for long entries and the red cloud for short positions. The gray cloud advises caution, as it represents a range-bound market.
• Alerts: Leverage the custom alerts to stay on top of market movements and avoid missing critical trading opportunities.
Unleash the power of trend and momentum analysis with MomentumCloud.V33! Happy trading! 📈🚀✨
Session MasterSession Master Indicator
Overview
The "Session Master" indicator is a unique tool designed to enhance trading decisions by providing visual cues and relevant information during the critical last 15 minutes of a trading session. It also integrates advanced trend analysis using the Average Directional Index (ADX) and Directional Movement Index (DI) to offer insights into market trends and potential entry/exit points.
Originality and Functionality
This script combines session timing, visual alerts, and trend analysis in a cohesive manner to give traders a comprehensive view of market behavior as the trading day concludes. Here’s a breakdown of its key features:
Last 15 Minutes Highlight : The script identifies the last 15 minutes of the trading session and highlights this period with a semi-transparent blue background, helping traders focus on end-of-day price movements.
Previous Session High and Low : The script dynamically plots the high and low of the previous trading session. These levels are crucial for identifying support and resistance and are highlighted with dashed lines and labeled for easy identification during the last 15 minutes of the current session.
Directional Movement and Trend Analysis : Using a combination of ADX and DI, the script calculates and plots trend strength and direction. A 21-period Exponential Moving Average (EMA) is plotted with color coding (green for bullish and red for bearish) based on the DI difference, offering clear visual cues about the market trend.
Technical Explanation
Last 15 Minutes Highlight:
The script checks the current time and compares it to the session’s last 15 minutes.
If within this period, the background color is changed to a semi-transparent blue to alert the trader.
Previous Session High and Low:
The script retrieves the high and low of the previous daily session.
During the last 15 minutes of the session, these levels are plotted as dashed lines and labeled appropriately.
ADX and DI Calculation:
The script calculates the True Range, Directional Movement (both positive and negative), and smoothes these values over a specified length (28 periods by default).
It then computes the Directional Indicators (DI+ and DI-) and the ADX to gauge trend strength.
The 21-period EMA is plotted with dynamic color changes based on the DI difference to indicate trend direction.
How to Use
Highlight Key Moments: Use the blue background highlight to concentrate on market movements in the critical last 15 minutes of the trading session.
Identify Key Levels: Pay attention to the plotted high and low of the previous session as they often act as significant support and resistance levels.
Assess Trend Strength: Use the ADX and DI values to understand the strength and direction of the market trend, aiding in making informed trading decisions.
EMA for Entry/Exit: Use the color-coded 21-period EMA for potential entry and exit signals based on the trend direction indicated by the DI.
Conclusion
The "Session Master" indicator is a powerful tool designed to help traders make informed decisions during the crucial end-of-session period. By combining session timing, previous session levels, and advanced trend analysis, it provides a comprehensive overview that is both informative and actionable. This script is particularly useful for intraday traders looking to optimize their strategies around session close times.
Adaptive Price Channel StrategyThis strategy is an adaptive price channel strategy based on the Average True Range (ATR) indicator and the Average Directional Index (ADX). It aims to identify sideways markets and trends in the price movements and make trades accordingly.
The strategy uses a length parameter for the ATR and ADX indicators, which determines the length of the calculation for these indicators. The strategy also uses an ATR multiplier, which is multiplied by the ATR to determine the upper and lower bounds of the price channel.
The first step of the strategy is to calculate the highest high (HH) and lowest low (LL) over the specified length. The ATR is also calculated over the same length. Then the strategy calculates the positive directional indicator (+DI) and negative directional indicator (-DI) based on the up and down moves in the price, and uses these to calculate the ADX.
If the ADX is less than 25, the market is considered to be in a sideways phase. In this case, if the price closes above the upper bound of the price channel (HH - ATR multiplier * ATR), the strategy enters a long position, and if the price closes below the lower bound of the price channel (LL + ATR multiplier * ATR), the strategy enters a short position.
If the ADX is greater than or equal to 25 and the +DI is greater than the -DI, the market is considered to be in a bullish phase. In this case, if the price closes above the upper bound of the price channel, the strategy enters a long position. If the ADX is greater than or equal to 25 and the +DI is less than the -DI, the market is considered to be in a bearish phase. In this case, if the price closes below the lower bound of the price channel, the strategy enters a short position.
The strategy exits a position after a certain number of bars have passed since the entry, as specified by the exit_length input.
In summary, this strategy attempts to trade in accordance with the prevailing market conditions by identifying sideways markets and trends and making trades based on price movements within a dynamically-adjusted price channel.
This strategy takes a read on the market and either takes a channel strategy or trades volatility based on current trend. Works well on 2, 3 ,4, 12 hour for BTC. It’s my first attempt and creating a strategy. I am very interested in constructive criticism. I will look into better risk management, maybe a trailing stop loss. Other suggestions welcome. This is my first attempt at a strategy.
Here are the settings I used.
Inputs
Length 20
Exit 10
ATR 3.2
Dates I picked when I got into Crypto
Properties
Capital 1000
Order size 2 Contracts
Pyramiding 1
Commission .05
Squeeze Momentum Indicator + 2.0This is a squeeze momentum oscillator with ADX-RSI, Elliot waves oscillator, HMA background and more.
I recommend configure ADX-RSI with the following settings:
-ADX Length = 14
-ADX smooth = 14
-RSI Length = 14
-Threshold = 15
-Upline = 70
-Downline = 30
Thanks to OskarGallard for develop this indicator.
I am Sc4lp1ng, the developer of EMA MTF cloud and TSI-ADX Histogram.
AdxCalcHourlyLibrary "AdxCalcHourly"
getBars()
getBars: Returns the number of bars to use in the historical lookback period
Returns: simple int
directionDown()
directionDown: Calculates the direction down for bar_index
Returns: series float
directionUp()
directionUp: Calculates the direction up for bar_index
Returns: series float
trueRangeMovingAverage()
trueRangeMovingAverage: Calculates the true range moving average over the historical lookback period
Returns: series float
positiveDirectionalMovement()
positiveDirectionalMovement: Calculates the positive direction movement for bar_index
Returns: series float
negativeDirectionalMovement()
negativeDirectionalMovement: Calculates the begative direction movement for bar_index
Returns: series float
totalDirectionDown()
totalDirectionDown: Calculates the total direction down for the historical lookback period
Returns: series float
totalDirectionUp()
totalDirectionUp: Calculates the total direction up for the historical lookback period
Returns: series float
totalDirection()
totalDirection: Calculates the total direction movement for the historical lookback period
Returns: series float
averageDirectionalIndex()
averageDirectionalIndex: Calculates the average directional index (ADX) based on the trend for the historical lookback period
Returns: series float
getAdxHistoricalAverage()
getAdxHistoricalAverage: Calculates the average directional index (ADX) for the historical lookback period
Returns: series float
getAdxHistoricalHigh()
getAdxHistoricalHigh: Calculates the historical high of the directional index (ADX) for the historical lookback period
Returns: series float
getAdxHistoricalLow()
getAdxHistoricalLow: Calculates the historical low of the directional index (ADX) for the historical lookback period
Returns: series float
getAdxOpinion()
getAdxOpinion: Calculatesa recomendation for the directional index (ADX) based on the historical lookback period
Returns: series float
Adaptive Average Vortex Index [lastguru]As a longtime fan of ADX, looking at Vortex Indicator I often wondered, where is the third line. I have rarely seen that anybody is calculating it. So, here it is: Average Vortex Index - an ADX calculated from Vortex Indicator. I interpret it similarly to the ADX indicator: higher values show stronger trend. If you discover other interpretation or have suggestions, comments are welcome.
Both VI+ and VI- lines are also drawn. As I use adaptive length calculation in my other scripts (based on the libraries I've developed and published), I have also included the possibility to have an adaptive length here, so if you hate the idea of calculating ADX from VI, you can disable that line and just look at the adaptive Vortex Indicator.
Note that as with all my oscillators, all the lines here are renormalized to -1..1 range unlike the original Vortex Indicator computation. To do that for VI+ and VI- lines, I subtract 1 from their values. It does not change the shape or the amplitude of the lines.
Adaptation algorithms are roughly subdivided in two categories: classic Length Adaptations and Cycle Estimators (they are also implemented in separate libraries), all are selected in Adaptation dropdown. Length Adaptation used in the Adaptive Moving Averages and the Adaptive Oscillators try to follow price movements and accelerate/decelerate accordingly (usually quite rapidly with a huge range). Cycle Estimators, on the other hand, try to measure the cycle period of the current market, which does not reflect price movement or the rate of change (the rate of change may also differ depending on the cycle phase, but the cycle period itself usually changes slowly).
VIDYA - based on VIDYA algorithm. The period oscillates from the Lower Bound up (slow)
VIDYA-RS - based on Vitali Apirine's modification of VIDYA algorithm (he calls it Relative Strength Moving Average). The period oscillates from the Upper Bound down (fast)
Kaufman Efficiency Scaling - based on Efficiency Ratio calculation originally used in KAMA
Fractal Adaptation - based on FRAMA by John F. Ehlers
MESA MAMA Cycle - based on MESA Adaptive Moving Average by John F. Ehlers
Pearson Autocorrelation* - based on Pearson Autocorrelation Periodogram by John F. Ehlers
DFT Cycle* - based on Discrete Fourier Transform Spectrum estimator by John F. Ehlers
Phase Accumulation* - based on Dominant Cycle from Phase Accumulation by John F. Ehlers
Length Adaptation usually take two parameters: Bound From (lower bound) and To (upper bound). These are the limits for Adaptation values. Note that the Cycle Estimators marked with asterisks(*) are very computationally intensive, so the bounds should not be set much higher than 50, otherwise you may receive a timeout error (also, it does not seem to be a useful thing to do, but you may correct me if I'm wrong).
The Cycle Estimators marked with asterisks(*) also have 3 checkboxes: HP (Highpass Filter), SS (Super Smoother) and HW (Hann Window). These enable or disable their internal prefilters, which are recommended by their author - John F. Ehlers . I do not know, which combination works best, so you can experiment.
If no Adaptation is selected ( None option), you can set Length directly. If an Adaptation is selected, then Cycle multiplier can be set.
The oscillator also has the option to configure the internal smoothing function with Window setting. By default, RMA is used (like in ADX calculation). Fast Default option is using half the length for smoothing. Triangle , Hamming and Hann Window algorithms are some better smoothers suggested by John F. Ehlers.
After the oscillator a Moving Average can be applied. The following Moving Averages are included: SMA , RMA, EMA , HMA , VWMA , 2-pole Super Smoother, 3-pole Super Smoother, Filt11, Triangle Window, Hamming Window, Hann Window, Lowpass, DSSS.
Postfilter options are applied last:
Stochastic - Stochastic
Super Smooth Stochastic - Super Smooth Stochastic (part of MESA Stochastic ) by John F. Ehlers
Inverse Fisher Transform - Inverse Fisher Transform
Noise Elimination Technology - a simplified Kendall correlation algorithm "Noise Elimination Technology" by John F. Ehlers
Momentum - momentum (derivative)
Except for Inverse Fisher Transform , all Postfilter algorithms can have Length parameter. If it is not specified (set to 0), then the calculated Slow MA Length is used. If Filter/MA Length is less than 2 or Postfilter Length is less than 1, they are calculated as a multiplier of the calculated oscillator length.
More information on the algorithms is given in the code for the libraries used. I am also very grateful to other TradingView community members (they are also mentioned in the library code) without whom this script would not have been possible.
Mawreez' Trend OscillatorA positive reading indicates an uptrend, a negative reading indicates a downtrend. For an uptrend, increasing values indicate that the trend is sustaining or strengthening while decreasing values indicate that the trend is stagnating or weakening. Vice versa for a downtrend. When the indicator reads 0, the price is not trending.
This indicator is based on the existing DMI indicator, but familiarity with the DMI is not required. The author's goal was to make a less laggy, more intuitively interpretable indicator compared to the DMI.
A comparison to the DMI is given above. The reader may see for themselves that trends are recognized quicker. A technical rundown of adjustments made to the DMI is given below.
Instead of interpreting the ADX, a sensitivity setting is added and its default value is 25. The value of this sensitivity setting is subtracted from the ADX. Then, any ADX values which fell below 0 are set to 0. Now, just flip the value of the ADX when the -DI is greater than the +DI. The result is then plotted as a histogram.
In addition, this indicator has less lag between price action and trend recognition. This is achieved by removing the EMA applied to the ADX, and instead applying lag-free smoothing to +DI and -DI before computing the ADX and then once more applying lag-free smoothing to the result of the computation.
Combo Backtest 123 Reversal and ADXR This is combo strategies for get
a cumulative signal. Result signal will return 1 if two strategies
is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Secon strategy
The Average Directional Movement Index Rating (ADXR) measures the strength
of the Average Directional Movement Index (ADX). It's calculated by taking
the average of the current ADX and the ADX from one time period before
(time periods can vary, but the most typical period used is 14 days).
Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
and weakening trends. However, because it represents an average of ADX, values
don't fluctuate as dramatically and some analysts believe the indicator helps
better display trends in volatile markets.
WARNING:
- For purpose educate only
- This script to change bars colors.
Average Directional Movement Index Rating Backtest The Average Directional Movement Index Rating (ADXR) measures the strength
of the Average Directional Movement Index (ADX). It's calculated by taking
the average of the current ADX and the ADX from one time period before
(time periods can vary, but the most typical period used is 14 days).
Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
and weakening trends. However, because it represents an average of ADX, values
don't fluctuate as dramatically and some analysts believe the indicator helps
better display trends in volatile markets.
You can change long to short in the Input Settings
WARNING:
- For purpose educate only
- This script to change bars colors.
Average Directional Movement Index Rating Strategy The Average Directional Movement Index Rating (ADXR) measures the strength
of the Average Directional Movement Index (ADX). It's calculated by taking
the average of the current ADX and the ADX from one time period before
(time periods can vary, but the most typical period used is 14 days).
Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
and weakening trends. However, because it represents an average of ADX, values
don't fluctuate as dramatically and some analysts believe the indicator helps
better display trends in volatile markets.
WARNING:
- This script to change bars colors.
Average Directional Movement Index Rating The Average Directional Movement Index Rating (ADXR) measures the strength
of the Average Directional Movement Index (ADX). It's calculated by taking
the average of the current ADX and the ADX from one time period before
(time periods can vary, but the most typical period used is 14 days).
Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening
and weakening trends. However, because it represents an average of ADX, values
don't fluctuate as dramatically and some analysts believe the indicator helps
better display trends in volatile markets.
The JewelThe Jewel is a comprehensive momentum and trend-based indicator designed to give traders clear insights into potential market shifts. By integrating RSI, Stochastic, and optional ADX filters with an EMA-based trend filter, this script helps identify high-conviction entry and exit zones for multiple trading styles, from momentum-based breakouts to mean-reversion setups.
Features
Momentum Integration:
Leverages RSI and Stochastic crossovers for real-time momentum checks, reducing noise and highlighting potential turning points.
Optional ADX Filter:
Analyzes market strength; only triggers signals when volatility and directional movement suggest strong follow-through.
EMA Trend Filter:
Identifies broad market bias (bullish vs. bearish), helping traders focus on higher-probability setups by aligning with the prevailing trend.
Caution Alerts:
Flags potentially overbought or oversold conditions when both RSI and Stochastic reach extreme zones, cautioning traders to manage risk or tighten stops.
Customizable Parameters:
Fine-tune RSI, Stochastic, ADX, and EMA settings to accommodate various assets, timeframes, and trading preferences.
How to Use
Momentum Breakouts: Watch for RSI cross above a set threshold and Stochastic cross up, confirmed by ADX strength and alignment with the EMA filter for potential breakout entries.
Mean Reversion: Look for caution signals (RSI & Stoch extremes) as early warnings for trend slowdown or reversal opportunities.
Trend Continuation: In trending markets, rely on the EMA filter to stay aligned with the primary direction. Use momentum crosses (RSI/Stochastic) to time add-on entries or exits.
Important Notes
Non-Investment Advice
The Jewel is a technical analysis tool and does not constitute financial advice. Always use proper risk management and consider multiple confirmations when making trading decisions.
No Warranty
This indicator is provided as-is, without warranty or guarantees of performance. Traders should backtest and verify its effectiveness on their specific instruments and timeframes.
Collaborate & Share
Feedback and suggestions are welcome! Engaging with fellow traders can help refine and adapt The Jewel for diverse market conditions, strengthening the TradingView community as a whole.
Happy Trading!
If you find this script valuable, please share your feedback, ideas, or enhancements. Collaboration fosters a more insightful trading experience for everyone.
TrigWave Suite [InvestorUnknown]The TrigWave Suite combines Sine-weighted, Cosine-weighted, and Hyperbolic Tangent moving averages (HTMA) with a Directional Movement System (DMS) and a Relative Strength System (RSS).
Hyperbolic Tangent Moving Average (HTMA)
The HTMA smooths the price by applying a hyperbolic tangent transformation to the difference between the price and a simple moving average. It also adjusts this value by multiplying it by a standard deviation to create a more stable signal.
// Function to calculate Hyperbolic Tangent
tanh(x) =>
e_x = math.exp(x)
e_neg_x = math.exp(-x)
(e_x - e_neg_x) / (e_x + e_neg_x)
// Function to calculate Hyperbolic Tangent Moving Average
htma(src, len, mul) =>
tanh_src = tanh((src - ta.sma(src, len)) * mul) * ta.stdev(src, len) + ta.sma(src, len)
htma = ta.sma(tanh_src, len)
Sine-Weighted Moving Average (SWMA)
The SWMA applies sine-based weights to historical prices. This gives more weight to the central data points, making it responsive yet less prone to noise.
// Function to calculate the Sine-Weighted Moving Average
f_Sine_Weighted_MA(series float src, simple int length) =>
var float sine_weights = array.new_float(0)
array.clear(sine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.sin((math.pi * (i + 1)) / length)
array.push(sine_weights, weight)
// Normalize the weights
sum_weights = array.sum(sine_weights)
for i = 0 to length - 1
norm_weight = array.get(sine_weights, i) / sum_weights
array.set(sine_weights, i, norm_weight)
// Calculate Sine-Weighted Moving Average
swma = 0.0
if bar_index >= length
for i = 0 to length - 1
swma := swma + array.get(sine_weights, i) * src
swma
Cosine-Weighted Moving Average (CWMA)
The CWMA uses cosine-based weights for data points, which produces a more stable trend-following behavior, especially in low-volatility markets.
f_Cosine_Weighted_MA(series float src, simple int length) =>
var float cosine_weights = array.new_float(0)
array.clear(cosine_weights) // Clear the array before recalculating weights
for i = 0 to length - 1
weight = math.cos((math.pi * (i + 1)) / length) + 1 // Shift by adding 1
array.push(cosine_weights, weight)
// Normalize the weights
sum_weights = array.sum(cosine_weights)
for i = 0 to length - 1
norm_weight = array.get(cosine_weights, i) / sum_weights
array.set(cosine_weights, i, norm_weight)
// Calculate Cosine-Weighted Moving Average
cwma = 0.0
if bar_index >= length
for i = 0 to length - 1
cwma := cwma + array.get(cosine_weights, i) * src
cwma
Directional Movement System (DMS)
DMS is used to identify trend direction and strength based on directional movement. It uses ADX to gauge trend strength and combines +DI and -DI for directional bias.
// Function to calculate Directional Movement System
f_DMS(simple int dmi_len, simple int adx_len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, dmi_len)
plus = fixnan(100 * ta.rma(plusDM, dmi_len) / trur)
minus = fixnan(100 * ta.rma(minusDM, dmi_len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adx_len)
dms_up = plus > minus and adx > minus
dms_down = plus < minus and adx > plus
dms_neutral = not (dms_up or dms_down)
signal = dms_up ? 1 : dms_down ? -1 : 0
Relative Strength System (RSS)
RSS employs RSI and an adjustable moving average type (SMA, EMA, or HMA) to evaluate whether the market is in a bullish or bearish state.
// Function to calculate Relative Strength System
f_RSS(rsi_src, rsi_len, ma_type, ma_len) =>
rsi = ta.rsi(rsi_src, rsi_len)
ma = switch ma_type
"SMA" => ta.sma(rsi, ma_len)
"EMA" => ta.ema(rsi, ma_len)
"HMA" => ta.hma(rsi, ma_len)
signal = (rsi > ma and rsi > 50) ? 1 : (rsi < ma and rsi < 50) ? -1 : 0
ATR Adjustments
To minimize false signals, the HTMA, SWMA, and CWMA signals are adjusted with an Average True Range (ATR) filter:
// Calculate ATR adjusted components for HTMA, CWMA and SWMA
float atr = ta.atr(atr_len)
float htma_up = htma + (atr * atr_mult)
float htma_dn = htma - (atr * atr_mult)
float swma_up = swma + (atr * atr_mult)
float swma_dn = swma - (atr * atr_mult)
float cwma_up = cwma + (atr * atr_mult)
float cwma_dn = cwma - (atr * atr_mult)
This adjustment allows for better adaptation to varying market volatility, making the signal more reliable.
Signals and Trend Calculation
The indicator generates a Trend Signal by aggregating the output from each component. Each component provides a directional signal that is combined to form a unified trend reading. The trend value is then converted into a long (1), short (-1), or neutral (0) state.
Backtesting Mode and Performance Metrics
The Backtesting Mode includes a performance metrics table that compares the Buy and Hold strategy with the TrigWave Suite strategy. Key statistics like Sharpe Ratio, Sortino Ratio, and Omega Ratio are displayed to help users assess performance. Note that due to labels and plotchar use, automatic scaling may not function ideally in backtest mode.
Alerts and Visualization
Trend Direction Alerts: Set up alerts for long and short signals
Color Bars and Gradient Option: Bars are colored based on the trend direction, with an optional gradient for smoother visual feedback.
Important Notes
Customization: Default settings are experimental and not intended for trading/investing purposes. Users are encouraged to adjust and calibrate the settings to optimize results according to their trading style.
Backtest Results Disclaimer: Please note that backtest results are not indicative of future performance, and no strategy guarantees success.