Short-Only Cycle IndicatorThis script is a follow-up to my previous 60-day Cycle, Long-Only Indicator.
The "Short-Only Cycle Indicator" is designed to help traders navigate optimal shorting opportunities by analyzing cyclical price behavior over a defined period. It focuses on recognizing distribution phases (ideal for shorting) and accumulation phases (where shorting should be avoided). It should be used with assets that the trader has an existing thesis for downward price movement.
Key Features:
1. Cycle Length: The indicator uses a 60-day cycle to identify high and low points in price, which are then used to determine the current market phase.
2. Distribution Phase: When the price is near the cycle high, the indicator signals a distribution phase, indicating potential shorting opportunities.
3. Accumulation Phase: When the price is near the cycle low, the indicator signals an accumulation phase, advising traders to avoid shorting.
4. Short Signal: A short signal is triggered when the price crosses below the cycle high, which is visually marked on the chart for easy identification.
This indicator is particularly useful for traders who prefer a short-only strategy, as it helps them time their entries and avoid shorting during unfavorable market conditions.
Cari dalam skrip untuk "市值60亿的股票"
3-Bar (Outside Bar) Scanner with Table Display# 3-Bar (Outside Bar) Scanner with Table Display
## Overview
The **3-Bar (Outside Bar) Scanner with Table Display** is a custom TradingView indicator designed for traders who utilize **The Strat** methodology. This indicator scans for **3-bar (Outside Bar)** patterns across multiple symbols and displays the results in a convenient table format directly on your chart.
## Purpose
- **Efficient Multi-Symbol Scanning**: Monitor up to four symbols simultaneously for 3-bar patterns without the need to switch between charts.
- **Real-Time Updates**: The table dynamically updates with new price data, providing immediate insights into potential trading opportunities.
- **Visual Clarity**: Displays whether a 3-bar is bullish ("3 Up") or bearish ("3 Down"), helping you quickly interpret market sentiment.
## How It Works
- **Data Retrieval**: The indicator uses `request.security()` to fetch high, low, open, and close prices for the specified symbols and timeframe.
- **3-Bar Detection**:
- **Outside Bar Criteria**: Checks if the current candle's high is higher than the previous candle's high and the current low is lower than the previous low.
- **Direction Determination**:
- **"3 Up"**: If the candle closes higher than it opens (bullish candle).
- **"3 Down"**: If the candle closes lower than it opens (bearish candle).
- **Table Display**:
- The table shows the **Symbol**, **Timeframe**, and **State** ("3 Up", "3 Down", or blank if no pattern detected).
- Customizable colors and positioning to fit your chart's aesthetics.
## Best Use Cases
- **Rapid Market Analysis**: Ideal for traders needing a quick overview of multiple assets for potential 3-bar setups.
- **Strategic Decision-Making**: Helps identify key reversal or continuation patterns in alignment with **The Strat** principles.
- **Scalable Monitoring**: By utilizing TradingView's multi-chart layouts, you can expand monitoring beyond four symbols.
## Instructions for Use
### Adding the Indicator to Your Chart
1. **Copy the Code**: Use the provided Pine Script code for the indicator.
2. **Create a New Indicator**:
- In TradingView, click on **Pine Editor** at the bottom of the platform.
- Paste the code into the editor.
3. **Save and Add to Chart**:
- Click **Save** and give your indicator a name.
- Click **Add to Chart** to apply it.
### Customizing the Inputs
- **Symbols**:
- **Symbol 1**: Leave blank to use the current chart's symbol or enter a specific symbol (e.g., `AAPL`).
- **Symbol 2 to Symbol 4**: Enter additional symbols or leave them blank.
- **Timeframe**: Select your desired timeframe (e.g., `D` for Daily, `60` for 60-minute).
- **Table Colors**:
- Customize header and data colors for better visibility against your chart background.
### Interpreting the Table
- **Symbol**: Displays the symbol without the exchange prefix for clarity.
- **Timeframe**: Shows the timeframe applied to the analysis.
- **State**:
- **"3 Up"**: A bullish outside bar where the candle closed higher than it opened.
- **"3 Down"**: A bearish outside bar where the candle closed lower than it opened.
- **Blank**: No 3-bar pattern detected on the latest candle.
### Monitoring More Than Four Symbols
- **Multi-Chart Layout**:
- Use TradingView's multi-chart feature to display multiple charts within a single workspace.
- Apply the indicator to each chart. For example:
- **Four-Chart Grid**: Monitor up to 16 symbols by setting up four charts, each with the indicator tracking four symbols.
- **Steps**:
1. Arrange your workspace into a multi-chart layout.
2. Add the indicator to each chart.
3. Input different symbols into the indicator on each chart.
## Example Usage
Suppose you want to monitor the following symbols on a Daily timeframe:
- **Symbol 1**: *(Leave blank to use the current chart's symbol, e.g., `SPY`)*
- **Symbol 2**: `AAPL`
- **Symbol 3**: `TSLA`
- **Symbol 4**: `AMZN`
After adding the indicator and entering these symbols:
- **SPY**: The table shows "3 Up" in the State column, indicating a bullish outside bar.
- **AAPL**: No 3-bar pattern detected; the State column is blank.
- **TSLA**: The table shows "3 Down," indicating a bearish outside bar.
- **AMZN**: The table shows "3 Up," indicating another bullish outside bar.
This setup allows you to quickly assess which symbols are exhibiting significant patterns that may warrant further analysis or action.
## Notes
- **Customization**: Feel free to adjust the table's position and colors to suit your preferences.
- **Limitations**:
- Be aware of TradingView's limitations on `request.security()` calls, which may vary based on your subscription plan.
- The indicator is designed to monitor up to four symbols per instance due to these limitations.
- **Scalability**:
- By using multi-chart layouts, you can effectively monitor more symbols without overloading a single chart.
- This approach allows you to scale up your monitoring capabilities to fit your trading strategy.
## Conclusion
The **3-Bar (Outside Bar) Scanner with Table Display** is a valuable tool for traders who utilize **The Strat** methodology. It streamlines the process of identifying key 3-bar patterns across multiple symbols and timeframes, enhancing your ability to make informed trading decisions quickly.
By integrating this indicator into your trading routine, you can:
- Stay alert to significant market movements.
- Reduce the time spent manually scanning charts.
- Increase efficiency in executing your trading strategy.
---
Feel free to share this indicator with the Strat community. Feedback and suggestions are welcome to further enhance its functionality. Happy trading!
Nifty Dashboard//@version=5
//Author @GODvMarkets
indicator("GOD NSE Nifty Dashboard", "Nifty Dashboard")
i_timeframe = input.timeframe("D", "Timeframe")
// if not timeframe.isdaily
// runtime.error("Please switch timeframe to Daily")
i_text_size = input.string(size.auto, "Text Size", )
//-----------------------Functions-----------------------------------------------------
f_oi_buildup(price_chg_, oi_chg_) =>
switch
price_chg_ > 0 and oi_chg_ > 0 =>
price_chg_ > 0 and oi_chg_ < 0 =>
price_chg_ < 0 and oi_chg_ > 0 =>
price_chg_ < 0 and oi_chg_ < 0 =>
=>
f_color(val_) => val_ > 0 ? color.green : val_ < 0 ? color.red : color.gray
f_bg_color(val_) => val_ > 0 ? color.new(color.green,80) : val_ < 0 ? color.new(color.red,80) : color.new(color.black,80)
f_bg_color_price(val_) =>
fg_color_ = f_color(val_)
abs_val_ = math.abs(val_)
transp_ = switch
abs_val_ > .03 => 40
abs_val_ > .02 => 50
abs_val_ > .01 => 60
=> 80
color.new(fg_color_, transp_)
f_bg_color_oi(val_) =>
fg_color_ = f_color(val_)
abs_val_ = math.abs(val_)
transp_ = switch
abs_val_ > .10 => 40
abs_val_ > .05 => 50
abs_val_ > .025 => 60
=> 80
color.new(fg_color_, transp_)
f_day_of_week(time_=time) =>
switch dayofweek(time_)
1 => "Sun"
2 => "Mon"
3 => "Tue"
4 => "Wed"
5 => "Thu"
6 => "Fri"
7 => "Sat"
//-------------------------------------------------------------------------------------
var table table_ = table.new(position.middle_center, 22, 20, border_width = 1)
var cols_ = 0
var text_color_ = color.white
var bg_color_ = color.rgb(1, 5, 19)
f_symbol(idx_, symbol_) =>
symbol_nse_ = "NSE" + ":" + symbol_
fut_cur_ = "NSE" + ":" + symbol_ + "1!"
fut_next_ = "NSE" + ":" + symbol_ + "2!"
= request.security(symbol_nse_, i_timeframe, [close, close-close , close/close -1, volume], ignore_invalid_symbol = true, lookahead = barmerge.lookahead_on)
= request.security(fut_cur_, i_timeframe, , ignore_invalid_symbol = true, lookahead = barmerge.lookahead_on)
= request.security(fut_next_, i_timeframe, , ignore_invalid_symbol = true, lookahead = barmerge.lookahead_on)
= request.security(fut_cur_ + "_OI", i_timeframe, [close, close-close ], ignore_invalid_symbol = true, lookahead = barmerge.lookahead_on)
= request.security(fut_next_ + "_OI", i_timeframe, [close, close-close ], ignore_invalid_symbol = true, lookahead = barmerge.lookahead_on)
stk_vol_ = stk_vol_nse_
fut_vol_ = fut_cur_vol_ + fut_next_vol_
fut_oi_ = fut_cur_oi_ + fut_next_oi_
fut_oi_chg_ = fut_cur_oi_chg_ + fut_next_oi_chg_
fut_oi_chg_pct_ = fut_oi_chg_ / fut_oi_
fut_stk_vol_x_ = fut_vol_ / stk_vol_
fut_vol_oi_action_ = fut_vol_ / math.abs(fut_oi_chg_)
= f_oi_buildup(chg_pct_, fut_oi_chg_pct_)
close_color_ = fut_cur_close_ > fut_vwap_ ? color.green : fut_cur_close_ < fut_vwap_ ? color.red : text_color_
if barstate.isfirst
row_ = 0, col_ = 0
table.cell(table_, col_, row_, "Symbol", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Close", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "VWAP", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Pts", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Stk Vol", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Fut Vol", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Fut/Stk Vol", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "OI Cur", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "OI Next", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "OI Cur Chg", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "OI Next Chg", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "COI ", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "COI Chg", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Vol/OI Chg", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "COI Chg%", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "Pr.Chg%", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
table.cell(table_, col_, row_, "OI Buildup", text_color = text_color_, bgcolor = bg_color_, text_size = i_text_size), col_ += 1
cell_color_ = color.white
cell_bg_color_ = color.rgb(1, 7, 24)
if barstate.islast
row_ = idx_, col_ = 0
table.cell(table_, col_, row_, str.format("{0}", symbol_), text_color = f_color(chg_pct_), bgcolor = f_bg_color_price(chg_pct_), text_size = i_text_size, text_halign = text.align_left), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#.00}", fut_cur_close_), text_color = close_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#.00}", fut_vwap_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,0.00}", chg_pts_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", stk_vol_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_vol_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,0.00}", fut_stk_vol_x_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_cur_oi_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_next_oi_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_cur_oi_chg_), text_color = f_color(fut_cur_oi_chg_), bgcolor = f_bg_color(fut_cur_oi_chg_), text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_next_oi_chg_), text_color = f_color(fut_next_oi_chg_), bgcolor = f_bg_color(fut_next_oi_chg_), text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_oi_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,#,###}", fut_oi_chg_), text_color = f_color(fut_oi_chg_), bgcolor = f_bg_color(fut_oi_chg_), text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,0.00}", fut_vol_oi_action_), text_color = cell_color_, bgcolor = cell_bg_color_, text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,0.00%}", fut_oi_chg_pct_), text_color = f_color(fut_oi_chg_pct_), bgcolor = f_bg_color_oi(fut_oi_chg_pct_), text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0,number,0.00%}", chg_pct_), text_color = f_color(chg_pct_), bgcolor = f_bg_color_price(chg_pct_), text_size = i_text_size, text_halign = text.align_right), col_ += 1
table.cell(table_, col_, row_, str.format("{0}", oi_buildup_), text_color = oi_buildup_color_, bgcolor = color.new(oi_buildup_color_,80), text_size = i_text_size, text_halign = text.align_left), col_ += 1
idx_ = 1
f_symbol(idx_, "BANKNIFTY"), idx_ += 1
f_symbol(idx_, "NIFTY"), idx_ += 1
f_symbol(idx_, "CNXFINANCE"), idx_ += 1
f_symbol(idx_, "RELIANCE"), idx_ += 1
f_symbol(idx_, "HDFC"), idx_ += 1
f_symbol(idx_, "ITC"), idx_ += 1
f_symbol(idx_, "HINDUNILVR"), idx_ += 1
f_symbol(idx_, "INFY"), idx_ += 1
KLNI RSI MTFDescription of the RSI Multi-Timeframe Indicator
The RSI Multi-Timeframe Indicator allows you to track and compare the Relative Strength Index (RSI) across three different timeframes on the same chart. This is particularly useful for traders who want to gauge the momentum of an asset over multiple time periods simultaneously, helping to make more informed trading decisions.
Key Features
Multi-Timeframe RSI:
You can select up to three timeframes to plot RSI on the same chart.
Available timeframe options include:
Current: Displays RSI for the current chart timeframe.
60 minutes (1 hour)
Daily
Weekly
Monthly
Custom RSI Settings:
Adjust the RSI length and source (e.g., close price) through user inputs, allowing you to tailor the indicator to your strategy.
Divergence Detection (Optional):
The indicator can optionally detect and display bullish and bearish divergences between price and RSI for the first selected timeframe.
Bullish divergence is shown when price makes a lower low, but RSI makes a higher low.
Bearish divergence is shown when price makes a higher high, but RSI makes a lower high.
Visual Aids:
Overbought and oversold RSI levels are highlighted with background colors for clarity.
Horizontal lines at 70 (overbought), 50 (neutral), and 30 (oversold) help quickly identify RSI conditions.
How to Use This Indicator
Inputs & Settings
Timeframe Settings:
First Timeframe: Choose the primary timeframe (e.g., 60 minutes, Daily, Weekly).
Second Timeframe: Select the second timeframe to plot on the chart.
Third Timeframe: Select the third timeframe for additional RSI analysis.
RSI Settings:
RSI Length: Set the period for RSI calculation (default: 14).
Source: Select the price data for RSI calculation (default: close price).
Show Divergence: Enable or disable the detection of divergence between price and RSI.
Plotting on Chart
The indicator will display three distinct RSI plots for the selected timeframes:
RSI TF1 (blue line) for the first timeframe.
RSI TF2 (green line) for the second timeframe.
RSI TF3 (red line) for the third timeframe.
Each RSI line corresponds to its chosen timeframe, allowing you to see how RSI behaves across different time periods.
Reading the RSI Values
Overbought: When RSI is above 70, the asset is considered overbought, potentially signaling a sell or short entry.
Oversold: When RSI is below 30, the asset is considered oversold, possibly indicating a buying opportunity.
Neutral: RSI around 50 is neutral and may suggest a lack of clear momentum.
Divergence Detection
If enabled, the indicator will highlight points of divergence:
Bullish Divergence: A green label will appear below the chart where price is making lower lows, but RSI is making higher lows, suggesting potential bullish momentum.
Bearish Divergence: A red label will appear when price is making higher highs, but RSI is making lower highs, indicating potential bearish pressure.
Practical Applications
Momentum Confirmation: Use this indicator to confirm the strength of a trend by comparing RSI across multiple timeframes. For example, if RSI is above 50 on all three timeframes, it may confirm strong upward momentum.
Overbought/Oversold Signals: When RSI is overbought on multiple timeframes, it could signal an impending reversal or correction. Conversely, oversold conditions across timeframes might indicate a buy opportunity.
Divergence Detection: Spot divergence between price and RSI to identify potential trend reversals early. Divergence can provide early signals of changing market momentum.
Summary
This indicator is a powerful tool for multi-timeframe RSI analysis, helping traders understand momentum shifts across different timeframes. It offers customizability, divergence detection, and visual aids to streamline your technical analysis and decision-making process.
ZORZOR (Zone of Outperformance Ratio) with Supporting Indicators
This custom indicator introduces an approach to measuring asset performance through the Zone of Outperformance Ratio (ZOR), complemented by two supporting indicators for comprehensive market analysis.
1. ZOR (Zone of Outperformance Ratio)
The ZOR is the cornerstone of this indicator, offering a unique perspective on an asset's performance across multiple time zones:
Measures the degree of an asset's outperformance against a benchmark (default: NSE:NIFTY) across different time zones
Utilizes a weighted multi-timeframe approach for a holistic performance view
Combines performance ratios from 63, 126, 189, and 252-day zones and results in a score between 0-99, with higher scores indicating stronger outperformance across zones
Key Features:
Fully configurable weights for each timeframe (63, 126, 189, 252 days)
Customizable benchmark symbol
Color-coded display: Blue for scores ≥60 (strong performance), Red for scores <60 (weaker performance)
2. Supporting Indicators
To enhance analysis and provide context to the ZOR score, two additional indicators are included:
a) Distance to 52-week High:
Calculates the percentage distance between current price and 52-week high
Color-coded for quick interpretation:
Yellow-green when price is above 52-week high
Dark green when price is below 52-week high
Helps identify potential overbought conditions or breakout scenarios
b) Distance to EMA:
Shows percentage distance from current price to a user-defined EMA (default: 21-day)
Helps gauge short-term momentum relative to the trend
Useful for identifying potential mean reversion opportunities
Originality and Usefulness
The ZOR indicator offers a fresh perspective on relative performance by:
Combining multiple timeframes into a single, easy-to-interpret score
Applying a non-linear transformation to emphasize recent performance
Providing a flexible framework for comparing assets against any chosen benchmark
The supporting indicators complement the ZOR by offering additional context:
Distance to 52-week High helps identify potential trend strength and breakout scenarios
Distance to EMA provides insights into short-term momentum and potential mean reversion
This combination allows traders to:
Quickly identify outperforming assets across multiple timeframes
Assess whether an asset is extended from its long-term highs or short-term average
Make more informed decisions by considering relative performance, trend strength, and momentum in a single view
How to Use
1. Add the indicator to your chart
2. Customize settings in the indicator properties:
- Set benchmark symbol
- Toggle visibility of supporting indicators
- Customize EMA length for Distance to EMA
- Adjust ZOR calculation weights(Optional)
3. Interpret the color-coded labels:
- ZOR: Blue (strong performance) or Red (weaker performance)
- Distance to High: Yellow-green (above 52-week high) or Dark green (below)
- Distance to EMA: Purple label showing percentage
4. Use in conjunction with other technical and fundamental analysis for comprehensive trading decisions
This indicator provides a unique, multi-faceted approach to performance analysis, combining relative strength measurement with trend and momentum indicators for a holistic market view.
Multi-Timeframe Linear Regression Channel (Pinescriptlabs)This script combines multiple timeframes for visualizing linear regression channels in a single chart, allowing us to obtain a holistic view of price behavior across different timeframes (5m, 15m, 30m, and 4h). It facilitates the identification of trends and support/resistance levels across various time horizons. This multi-timeframe approach is useful because it helps confirm signals and detect potential divergences.
Components and Their Interaction
Linear Regression: Calculates the regression line and standard deviations for different timeframes. These lines show the direction and strength of the trend.
Deviation Bands: The upper and lower bands act as dynamic support and resistance levels, based on the standard deviation or maximum deviation.
Colors and Labels: Different colors for each timeframe allow for quick and clear identification of the regression lines and their bands. The labels help identify the timeframe of each channel.
Justification for the Mashup
Combining linear regressions across different timeframes allows us to observe short, medium, and long-term trends in a single chart. This multi-timeframe approach provides a more comprehensive market perspective compared to using a single timeframe.
Default Properties
The default properties of the strategy are configured to provide a clear view of the regression channels across different timeframes. These properties include:
Channel Length: Default of 50 periods, adjustable between 1 and 5000.
Data Source: Closing price by default.
Deviations: Optional use of upper and lower deviations with adjustable multipliers.
Line Extension: Option to extend lines to the right for better visualization.
Underlying Concepts
Calculating linear regression involves determining the slope, mean, and intercept of a line that best fits the price data. Standard deviations are used to create bands around this line, providing a measure of volatility. Implementing this in different timeframes allows us to observe how the trend changes over time and helps identify more precise entry and exit points.
This script is particularly useful for traders looking for an integrated tool that allows them to observe price behavior across multiple timeframes without needing to switch between different charts.
1.- For example, in the main image of the script, we observe that we are in a 1-hour timeframe, where the 4-hour linear regression channel indicates an uptrend with a length of 60 periods. Meanwhile, the 15-minute and 30-minute channels identify a convergence in the same trend. However, in the 5-minute linear regression, we have a completely lateral channel. These channels, shown from different timeframes in a single chart, give us a clear idea of exactly where the price is heading in each timeframe. Each channel serves as support or resistance for a lower or higher timeframe, depending on which timeframe we are looking at. Next, we will go to each timeframe to observe how the regression channels are displayed
(5min):
(15min):
(30min):
(4h):
Español:
Este script combina múltiples marcos de tiempo para la visualización de canales de regresión lineal en un solo gráfico, nos permitirá obtener una visión holística del comportamiento del precio en diferentes marcos temporales (5m, 15m, 30m y 4h) permite la identificación de tendencias y niveles de soporte/resistencia en diferentes horizontes de tiempo. Este enfoque multi-temporal es útil porque permite confirmar señales y detectar posibles divergencias.
Componentes y su Interacción
Regresión Lineal: Calcula la línea de regresión y las desviaciones estándar para diferentes marcos temporales. Estas líneas muestran la dirección y la fuerza de la tendencia.
Bandas de Desviación: Las bandas superior e inferior actúan como niveles dinámicos de soporte y resistencia, basados en la desviación estándar o la desviación máxima.
Colores y Etiquetas: Diferentes colores para cada marco temporal permiten una identificación rápida y clara de las líneas de regresión y sus bandas. Las etiquetas ayudan a identificar el marco temporal de cada canal.
Justificación del Mashup
La combinación de regresiones lineales en diferentes marcos temporales nos permite observar la tendencia a corto, medio y largo plazo en un solo gráfico. Este enfoque multi-temporal proporciona una perspectiva más completa del mercado en comparación con el uso de un solo marco temporal.
Propiedades por Defecto
Las propiedades por defecto de la estrategia están configuradas para proporcionar una visión clara de los canales de regresión en diferentes marcos temporales. Estas propiedades incluyen:
Longitud del Canal: 50 períodos por defecto, ajustable entre 1 y 5000.
Fuente de Datos: Precio de cierre por defecto.
Desviaciones: Uso opcional de desviaciones superiores e inferiores con multiplicadores ajustables.
Extensión de Líneas: Opción para extender las líneas hacia la derecha para una mejor visualización.
Conceptos Subyacentes
El cálculo de la regresión lineal implica determinar la pendiente, la media y la intersección de una línea que mejor se ajusta a los datos de precios. Las desviaciones estándar se utilizan para crear bandas alrededor de esta línea, proporcionando una medida de la volatilidad. La implementación en diferentes marcos temporales permite observar cómo cambia la tendencia a lo largo del tiempo y ayuda a identificar puntos de entrada y salida más precisos.
Este script es particularmente útil para traders que buscan una herramienta integrada que les permita observar el comportamiento del precio en múltiples marcos temporales sin necesidad de cambiar entre diferentes gráficos.
Por ejemplo en la imagen principal del script observamos que estamos en un timeframe de 1h, donde el canal de regresión lineal de 4h, nos indica en un length de 60 periodos una tendencia alcista, mientras que los canales de 15min y 30 min nos identifican una convergencia en la misma tendencia, sin embargo en la regresión lineal de 5 minutos tenemos un canal totalmente lateral, estos canales mostrados de diferentes marcos de tiempo en un solo grafico nos da una clara idea de exactamente de a donde esta dirigiendo el precio en cada marco de tiempo a la par que cada canal nos sirve como soporte o resistencia de un marco de tiempo ya sea inferior o mayor dependiendo en que time frame nos coloquemos, a continuación iremos a cada marco de tiempo para que observemos como se muestran los canales de regresión:
(5min):
(15min):
(30min):
(4h):
MTF Regime Filter II [CHE]Regime Filter II - Comprehensive Guide
Introduction
The "Regime Filter II " indicator is a tool designed to help traders identify market trends by smoothing price data and applying a color scheme to visualize bullish and bearish conditions. This guide provides a detailed explanation of the script's functionality, benefits, and how to use it effectively in TradingView.
Key Benefits
1. Trend Identification: Smooths price data to highlight underlying trends, making it easier for traders to spot potential buying or selling opportunities.
2. Visual Clarity: Uses distinct color schemes to differentiate between bullish and bearish market conditions, enhancing visual analysis.
3. Customization: Offers various settings to adjust smoothing and averaging lengths, choose between different color schemes, and set visibility for different timeframes.
4. Neutral Candle Option: Provides an option to display neutral candles for clearer visual representation when market conditions are neither strongly bullish nor bearish.
5. Timeframe Adaptability: Includes functions to determine appropriate step sizes based on different timeframes, ensuring the indicator remains accurate across various trading periods.
Script Breakdown
1. Indicator Declaration
The script starts by declaring itself as a TradingView indicator using the latest version of Pine Script. This sets up the framework for the indicator's functionality.
2. User Inputs for Smoothing and Averaging Lengths
The script allows users to input specific lengths for smoothing and averaging intervals. These inputs are crucial for determining how the price data is processed to identify trends. By adjusting these lengths, users can fine-tune the sensitivity of the indicator to market movements.
3. Color Scheme Selection
Users can choose between two color schemes: "Traditional" and "WT1 0 Rule". The selected color scheme will determine how the indicator colors the candles to represent bullish and bearish conditions. This customization enhances the visual appeal and usability of the indicator according to personal preferences.
4. Settings for Timeframe Visibility
The script includes settings that allow users to specify which timeframes the indicator should be visible on. This feature helps traders focus on the most relevant timeframes for their trading strategies. Additionally, users can set the number of recent candles to display, providing a clear view of the most recent market trends.
5. Color Definitions
The indicator defines specific colors for bearish and bullish candles. Bearish candles are colored red, while bullish candles are green. These color definitions are applied based on the selected color scheme and the calculated trend, providing a quick visual reference for market conditions.
6. Time Constants
To manage different timeframes effectively, the script uses constants that represent various time intervals in milliseconds, such as minutes, hours, and days. These constants are used to convert timeframes into a format that the script can work with to determine the appropriate step size for calculations.
7. Step Size Determination
The script includes a function that determines the step size based on the selected timeframe. This function ensures that the indicator adapts to different timeframes, maintaining its accuracy and relevance across various trading periods. The step size is calculated based on time intervals, and appropriate labels (like "60", "240", "1D") are assigned.
- For timeframes less than or equal to 1 minute, the step size is set to "60".
- For timeframes less than or equal to 5 minutes, the step size is set to "240".
- For timeframes less than or equal to 1 hour, the step size is set to "1D" (daily).
- For timeframes less than or equal to 4 hours, the step size is set to "3D" (three days).
- For timeframes less than or equal to 12 hours, the step size is set to "7D" (weekly).
- For timeframes less than or equal to 1 day, the step size is set to "1M" (monthly).
- For timeframes less than or equal to 1 week, the step size is set to "3M" (three months).
- For all other timeframes, the step size is set to "12M" (yearly).
8. Trend Calculation
The core of the indicator is its ability to calculate market trends. Here's a detailed breakdown of how the `calculateTrend` function works:
- Initialization: Variables for the middle price and scale, and summations of high/low prices and ranges, are initialized.
- Summation Loop: A loop runs over the smoothing length to calculate the sum of high and low prices and their range.
- Middle and Scale Calculation: The middle price is determined as the average of high/low sums, and the scale is calculated as a fraction of the average range.
- Normalization: The high, low, and close prices are normalized based on the middle price and scale.
- HT Calculation: The normalized prices are smoothed using a simple moving average (SMA).
- Frequency and Exponential Calculations: The frequency and related constants (a, c1, c2, c3) are calculated for further smoothing.
- Smoothed Moving Average (SMA): A smoothed moving average is computed using the HT values and exponential constants.
- WT1 and WT2 Calculation: The final smoothed values (WT1) and their average (WT2) are derived.
9. Color Application Based on Trend
Once the trend is calculated, the script applies the appropriate color to the candles based on the selected color scheme. This function ensures that the visual representation of the trend is consistent with the user’s preferences.
10. Label Plotting for Timeframes
If the option to display timeframe labels is enabled, the script plots labels on the chart to indicate the current timeframe. This feature helps users quickly identify which timeframe they are analyzing.
11. Shape Plotting Based on Trend and Color Scheme
The indicator plots shapes (squares) on the chart based on the calculated trend and selected color scheme. These shapes provide an additional visual cue for market conditions, enhancing the overall clarity of the indicator.
12. Neutral Candle Color Option
The script includes an option to set the color of neutral candles when market conditions are neither strongly bullish nor bearish. This option helps traders better visualize periods of market indecision.
Summary
The "Regime Filter II " is a powerful and customizable tool for traders, offering clear visual cues for market trends and adaptability to various timeframes. By smoothing price data and applying intuitive color schemes, it helps traders make more informed decisions. With features like adjustable smoothing lengths, multiple color schemes, and optional neutral candle displays, this indicator enhances market analysis and trading strategy development. By following this comprehensive guide, traders can effectively utilize the "Regime Filter II " indicator to enhance their market analysis and make more informed trading decisions.
Best regards
RV - Relative Strength Index Buy/SellIntroduction
The RV - RSI B/S V1.2 indicator leverages the RSI to identify overbought and oversold conditions in the market. The RSI line color changes according to bullish, bearish, oversold, and overbought zones, helping users identify direction and avoid false trades. By plotting the RSI along with user-defined moving averages and Bollinger Bands, it offers a multi-faceted approach to analyzing market momentum.
Indicator Overview
The indicator RSI line color changes as per the bullish, bearish, oversold, and overbought zones. This helps users find out the direction and the zones. The oversold and overbought zones are colored to help users avoid false trades.
Trading Strategy
Long Trades (Bullish Setup):
Entry: A long trade is initiated when the RSI crosses from 60 up to 80.
Exit: Long trades are generally exited when the RSI is between 80 and 90.
Condition: No long trades are taken if the RSI exceeds 80.
Short Trades (Bearish Setup):
Entry: A short trade is initiated when the RSI crosses from 40 down to 20.
Exit: Short trades are generally exited when the RSI is between 20 and 10.
Condition: No short trades are taken if the RSI falls below 20.
RSI Color Coding and Interpretation
The RV - RSI B/S V1.2 indicator uses color coding to provide a visual representation of RSI values, making it easier to identify critical levels at a glance:
Green (RSI 60-80): Indicates a bullish zone where long trades can be considered.
Red (RSI > 80): Signals an overbought condition where long trades should be avoided.
Orange (RSI 20-40): Indicates a bearish zone where short trades can be considered.
Pink (RSI < 20): Signals an oversold condition where short trades should be avoided.
RSI Settings and Their Importance
RSI Length: The default length is set to 12, which is the standard period for RSI calculation. This setting can be adjusted to increase or decrease sensitivity.
Source: The source of the data for the RSI calculation is typically the closing price.
MA Type: Various moving averages can be applied to the RSI, including SMA, EMA, SMMA (RMA), WMA, and VWMA. Each type offers different smoothing properties and can be selected based on
trading preferences.
MA Length: The default length is set to 20, aligning with the RSI length for consistency.
Bollinger Bands: When using Bollinger Bands, the standard deviation multiplier is set to 2.0 by default, but it can be adjusted to suit different volatility conditions.
Disclaimer
This indicator provides valuable signals for potential trading opportunities based on RSI levels and moving averages. However, it is crucial to incorporate directional price action analysis to confirm signals and improve trading accuracy. The RV - RSI B/S V1.2 should be used as part of a broader trading strategy, considering other technical and fundamental factors.
Market Cipher B by WeloTradesMarket Cipher B by WeloTrades: Detailed Script Description
//Overview//
"Market Cipher B by WeloTrades" is an advanced trading tool that combines multiple technical indicators to provide a comprehensive market analysis framework. By integrating WaveTrend, RSI, and MoneyFlow indicators, this script helps traders to better identify market trends, potential reversals, and trading opportunities. The script is designed to offer a holistic view of the market by combining the strengths of these individual indicators.
//Key Features and Originality//
WaveTrend Analysis:
WaveTrend Channel (WT1 and WT2): The core of this script is the WaveTrend indicator, which uses the smoothed average of typical price to identify overbought and oversold conditions. WT1 and WT2 are calculated to track market momentum and cyclical price movements.
Major Divergences (🐮/🐻): The script detects and highlights major bullish and bearish divergences automatically, providing traders with visual cues for potential reversals. This helps in making informed decisions based on divergence patterns.
Relative Strength Index (RSI):
RSI Levels: RSI is used to measure the speed and change of price movements, with specific levels indicating overbought and oversold conditions.
Customizable Levels: Users can configure the overbought and oversold thresholds, allowing for a tailored analysis based on individual trading strategies.
MoneyFlow Indicator:
Fast and Slow MoneyFlow: This indicator tracks the flow of capital into and out of the market, offering insights into the underlying market strength. It includes configurable periods and multipliers for both fast and slow MoneyFlow.
Vertical Positioning: The script allows users to adjust the vertical position of MoneyFlow plots to maintain a clear and uncluttered chart.
Stochastic RSI:
Stochastic RSI Levels: This combines the RSI and Stochastic indicators to provide a momentum oscillator that is sensitive to price changes. It is used to identify overbought and oversold conditions within a specified period.
Customizable Levels: Traders can set specific levels for more precise analysis.
//How It Works//
The script integrates these indicators through advanced algorithms, creating a synergistic effect that enhances market analysis. Here’s a detailed explanation of the underlying concepts and calculations:
WaveTrend Indicator:
Calculation: WaveTrend is based on the typical price (average of high, low, and close) smoothed over a specified channel length. WT1 and WT2 are derived from this typical price and further smoothed using the Average Channel Length. The difference between WT1 and WT2 indicates momentum, helping to identify cyclical market trends.
RSI (Relative Strength Index):
Calculation: RSI calculates the average gains and losses over a specified period to measure the speed and change of price movements. It oscillates between 0 and 100, with levels set to identify overbought (>70) and oversold (<30) conditions.
MoneyFlow Indicator:
Calculation: MoneyFlow is derived by multiplying price changes by volume and smoothing the results over specified periods. Fast MoneyFlow reacts quickly to price changes, while Slow MoneyFlow offers a broader view of capital movement trends.
Stochastic RSI:
Calculation: Stochastic RSI is computed by applying the Stochastic formula to RSI values, which highlights the RSI’s relative position within its range over a given period. This helps in identifying momentum shifts more precisely.
//How to Use the Script//
Display Settings:
Users can enable or disable various components like WaveTrend OB & OS levels, MoneyFlow plots, and divergence alerts through checkboxes.
Example: Turn on "Show Major Divergence" to see major bullish and bearish divergence signals directly on the chart.
Adjust Channel Settings:
Customize the data source, channel length, and smoothing periods in the "WaveTrend Channel SETTINGS" group.
Example: Set the "Channel Length" to 10 for a more responsive WaveTrend line or adjust the "Average Channel Length" to 21 for smoother trends.
Set Overbought & Oversold Levels:
Configure levels for WaveTrend, RSI, and Stochastic RSI in their respective settings groups.
Example: Set the WaveTrend Overbought Level to 60 and Oversold Level to -60 to define critical thresholds.
Money Flow Settings:
Adjust the periods and multipliers for Fast and Slow MoneyFlow indicators, and set their vertical positions for better visualization.
Example: Set the Fast Money Flow Period to 9 and Slow Money Flow Period to 12 to capture both short-term and long-term capital movements.
//Justification for Combining Indicators//
Enhanced Market Analysis:
Combining WaveTrend, RSI, and MoneyFlow provides a more comprehensive view of market conditions. Each indicator brings a unique perspective, making the analysis more robust.
WaveTrend identifies cyclical trends, RSI measures momentum, and MoneyFlow tracks capital movement. Together, they provide a multi-dimensional analysis of the market.
Improved Decision-Making:
By integrating these indicators, the script helps traders make more informed decisions. For example, a bullish divergence detected by WaveTrend might be validated by an RSI moving out of oversold territory and supported by increasing MoneyFlow.
Customization and Flexibility:
The script offers extensive customization options, allowing traders to tailor it to their specific needs and strategies. This flexibility makes it suitable for different trading styles and timeframes.
//Conclusion//
The indicator stands out due to its innovative combination of WaveTrend, RSI, and MoneyFlow indicators, offering a well-rounded tool for market analysis. By understanding how each component works and how they complement each other, traders can leverage this script to enhance their market analysis and trading strategies, making more informed and confident decisions.
Remember to always backtest the indicator first before implying it to your strategy.
CVD Divergence Strategy.1.mmThis is the matching Strategy version of Indicator of the same name.
As a member of the K1m6a Lions discussion community we often use versions of the Cumulative Volume Delta indicator
as one of our primary tools along with RSI, RSI Divergences, Open interest, Volume Profile, TPO and Fibonacci levels.
We also discuss visual interpretations of CVD Divergences across multiple time frames much like RSI divergences.
RSI Divergences can be identified as possible Bullish reversal areas when the RSI is making higher low points while
the price is making lower low points.
RSI Divergences can be identified as possible Bearish reversal areas when the RSI is making lower high points while
the price is making higher high points.
CVD Divergences can also be identified the same way on any timeframe as possible reversal signals. As with RSI, these Divergences
often occur as a trend's momentum is giving way to lower volume and areas when profits are being taken signaling a possible reversal
of the current trending price movement.
Hidden Divergences are identified as calculations that may be signaling a continuation of the current trend.
Having not found any public domain versions of a CVD Divergence indicator I have combined some public code to create this
indicator and matching strategy. The calculations for the Cumulative Volume Delta keep a running total for the differences between
the positive changes in volume in relation to the negative changes in volume. A relative upward spike in CVD is created when
there is a large increase in buying vs a low amount of selling. A relative downward spike in CVD is created when
there is a large increase in selling vs a low amount of buying.
In the settings menu, the is a drop down to be used to view the results in alternate timeframes while the chart remains on current timeframe. The Lookback settings can be adjusted so that the divs show on a more local, spontaneous level if set at 1,1,60,1. For a deeper, wider view of the divs, they can be set higher like 7,7,60,7. Adjust them all to suit your view of the divs.
To create this indicator/strategy I used a portion of the code from "Cumulative Volume Delta" by @ contrerae which calculates
the CVD from aggregate volume of many top exchanges and plots the continuous changes on a non-overlay indicator.
For the identification and plotting of the Divergences, I used similar code from the Tradingview Technical "RSI Divergence Indicator"
This indicator should not be used as a stand-alone but as an additional tool to help identify Bullish and Bearish Divergences and
also Bullish and Bearish Hidden Divergences which, as opposed to regular divergences, may indicate a continuation.
CVD Divergence Indicator.1.mmAs a member of the K1m6a Lions discussion community we often use versions of the Cumulative Volume Delta indicator
as one of our primary tools along with RSI, RSI Divergences, Open interest, Volume Profile, TPO and Fibonacci levels.
We also discuss visual interpretations of CVD Divergences across multiple time frames much like RSI divergences.
RSI Divergences can be identified as possible Bullish reversal areas when the RSI is making higher low points while
the price is making lower low points.
RSI Divergences can be identified as possible Bearish reversal areas when the RSI is making lower high points while
the price is making higher high points.
CVD Divergences can also be identified the same way on any timeframe as possible reversal signals. As with RSI, these Divergences
often occur as a trend's momentum is giving way to lower volume and areas when profits are being taken signaling a possible reversal
of the current trending price movement.
Hidden Divergences are identified as calculations that may be signaling a continuation of the current trend.
Having not found any public domain versions of a CVD Divergence indicator I have combined some public code to create this
indicator and matching strategy. The calculations for the Cumulative Volume Delta keep a running total for the differences between
the positive changes in volume in relation to the negative changes in volume. A relative upward spike in CVD is created when
there is a large increase in buying vs a low amount of selling. A relative downward spike in CVD is created when
there is a large increase in selling vs a low amount of buying.
In the settings menu, the is a drop down to be used to view the results in alternate timeframes while the chart remains on current timeframe. The Lookback settings can be adjusted so that the divs show on a more local, spontaneous level if set at 1,1,60,1. For a deeper, wider view of the divs, they can be set higher like 7,7,60,7. Adjust them all to suit your view of the divs.
To create this indicator/strategy I used a portion of the code from "Cumulative Volume Delta" by @ contrerae which calculates
the CVD from aggregate volume of many top exchanges and plots the continuous changes on a non-overlay indicator.
For the identification and plotting of the Divergences, I used similar code from the Tradingview Technical "RSI Divergence Indicator"
This indicator should not be used as a stand-alone but as an additional tool to help identify Bullish and Bearish Divergences and
also Bullish and Bearish Hidden Divergences which, as opposed to regular divergences, may indicate a continuation.
Candle DecompositionThe Candle Decomposition indicator shows the last 2 candles in detail, with 2 levels of lower timeframes (LTF).
In this way, you can keep oversight of history, while zooming in on the last and previous candle.
This tool is meant to be used in realtime, preferentially for intraday usage.
🔶 USAGE
In this example, on the current timeframe of 15 minutes, you see the 2 latest candles, visualized through dotted lines/boxes.
The first LTF level is set at 5 minutes, the second level at 15 seconds:
(The 2 exclamation marks are just to emphasize this is the latest price which will be repainted)
The combination of 2 LTF's can be helpful in finding support/resistance levels.
These are taken in realtime, not in bar replay, so the outcome wasn't known in advance:
(blue lines were drawn manually)
After first testing resistance, the price went to the support area, bouncing back to an area of resistance and breaking it briefly.
Price turned back, and found support, after which resistance was tested once more:
Support was again tested, after which resistance was clearly broken:
A bit later (every time 1 candle further):
The following example shows 2 last candles with signs of indecision, but LTF candles show support and resistance areas:
🔶 IMPORTANT
PP = TradingView Premium / Professional Plan
BEP = TradingView Basic / Essential / Plus Plan
This publication uses second-based TF's, which is only available for PP users.
To ensure a smooth experience for BEP users, we have disabled the setting "Premium/Professional Plan" .
BEP users will get a warning when trying to use a second-based TF.
If possible, BEP users should use non-second-based TF's.
PP users have to enable the setting "Premium/Professional Plan" .
🔶 DETAILS
🔹 Timeframes
Most common timeframes can be used: 2W, W, 3D, 2D, D, 12h, 8h, 6h, 4h, 3h, 2h, 1h, 30min, 15min, 10min, 5min, 3min, 1min
When having the current chart timeframe at 1 of these TF's, you can set 1st and 2nd LTF. Choices are pré-set to ensure maximum usage of drawings:
In the image above you'll see there are gaps between candles.
The script ensures that when there are no trades, instead of attaching the next bar next to the previous, it leaves the gap visible (which is more realistic).
More in detail you can see the gaps are preserved:
(compared between white -current TF- candles, and LTF candles)
🔹 Limitations
When on a Weekly TF, and 2nd LTF is set at 4h, all drawings have enough space:
If we change the 2nd LTF to 2h, there isn't enough space for the second last candle, after which an orange coloured informational warning label will be shown:
When current chart TF is not 1 of the encoded TF's, a red warning text will be shown:
This script can be used using "Bar Replay", but very limited.
You can change the date ("Jump To..."), but "Play" is not advisable.
🔹 Code
This script uses string manipulation to convert inputs like "1 hour", "5 min", "5 sec" to usable timeframe strings like "60", "5" and "5S"
• str.contains(str , 'hour') ? str.tostring(str.tonumber(str.replace(str, ' hour', '')) * 60) : str
• str.replace(input.string( '5 sec', '' , options= ), " sec", "S")
• str.replace(str, " min", "")
Since string manipulation consumes resources, these are place in local blocks.
While inputs always will be extracted, whether it is put in an if-block or not, the string manipulation only will be executed when condition is fulfilled, in this case when we are at the right timeframe.
In following example you'll always see the '1 sec' input, on every TF, but the string manipulation will only happen when we are at a 1 minute TF:
str = ''
if timeframe.period == '1'
str := str.replace(input.string( '1 sec', '' , options= ), " sec", "S")
// output -> "5S" or "1S"
The "visible chart function" chart.right_visible_bar_time is used to reset everything when a new candle starts. This makes sure that when using "barstate.islastconfirmedhistory", the second last bar is used. Also all lines & boxes are automatically removed, starting with a fresh slate.
chT = timenow > chart.right_visible_bar_time
•••
if chT
if barstate.islastconfirmedhistory
f(4)
if barstate.islast
f(2)
If boxes/lines end up before the first bar, or after the last bar, this can be messy.
To protect ourselves against it 2 techniques are used:
math.max(0, x) is used to make sure lines & boxes don't end up before the first bar,
isOK = index < last_bar_index is used to be sure that the width of 1 candle (here index) is not wider than the total of all bars (which is the same as last_bar_index)
🔶 SETTINGS
3 columns:
Current TF: This columns shows you the chart TF where LTF settings are applicable.
1st LTF: set the timeframe of the first level LTF
2nd LTF: set the timeframe of the second level LTF
Colours can be set for 3 timeframes
Donchian Channel Trend MeterInspired by the Chande Trend Meter (this is not the Chande Trend Meter), this indicator aims to show the trend so you can make trading decisions accordingly. This is calculated by looking at Donchian Channels over a number of lengths (20, 40, 60 periods, etc.), converting them to percent, and then applying a weighting and smoothing similar to the Know Sure Thing Indicator. This results in smooth trend line that is not disturbed by large fluctuations in price action.
When the line is below 20%, you have a strong down trend. Values between 20 - 40% are a weak down trend. Values between 40 - 60% are no trend (slightly bullish or bearish if above or below 50%). Similarly, 60 - 80% is a weak uptrend, and above 80% is a strong uptrend. Trade signals can be turned on or off that correspond to crosses over 50%. It can be useful in spotting divergence.
ottlibLibrary "ottlib"
█ OVERVIEW
This library contains functions for the calculation of the OTT (Optimized Trend Tracker) and its variants, originally created by Anıl Özekşi (Anil_Ozeksi). Special thanks to him for the concept and to Kıvanç Özbilgiç (KivancOzbilgic) and dg_factor (dg_factor) for adapting them to Pine Script.
█ WHAT IS "OTT"
The OTT (Optimized Trend Tracker) is a highly customizable and very effective trend-following indicator that relies on moving averages and a trailing stop at its core. Moving averages help reduce noise by smoothing out sudden price movements in the markets, while trailing stops assist in detecting trend reversals with precision. Initially developed as a noise-free trailing stop, the current variants of OTT range from rapid trend reversal detection to long-term trend confirmation, thanks to its extensive customizability.
It's well-known variants are:
OTT (Optimized Trend Tracker).
TOTT (Twin OTT).
OTT Channels.
RISOTTO (RSI OTT).
SOTT (Stochastic OTT).
HOTT & LOTT (Highest & Lowest OTT)
ROTT (Relative OTT)
FT (Original name is Fırsatçı Trend in Turkish which translates to Opportunist Trend)
█ LIBRARY FEATURES
This library has been prepared in accordance with the style, coding, and annotation standards of Pine Script version 5. As a result, explanations and examples will appear when users hover over functions or enter function parameters in the editor.
█ USAGE
Usage of this library is very simple. Just import it to your script with the code below and use its functions.
import ismailcarlik/ottlib/1 as ottlib
█ FUNCTIONS
• f_vidya(source, length, cmoLength)
Short Definition: Chande's Variable Index Dynamic Average (VIDYA).
Details: This function computes Chande's Variable Index Dynamic Average (VIDYA), which serves as the original moving average for OTT. The 'length' parameter determines the number of bars used to calculate the average of the given source. Lower values result in less smoothing of prices, while higher values lead to greater smoothing. While primarily used internally in this library, it has been made available for users who wish to utilize it as a moving average or use in custom OTT implementations.
Parameters:
source (float) : (series float) Series of values to process.
length (simple int) : (simple int) Number of bars to lookback.
cmoLength (simple int) : (simple int) Number of bars to lookback for calculating CMO. Default value is `9`.
Returns: (float) Calculated average of `source` for `length` bars back.
Example:
vidyaValue = ottlib.f_vidya(source = close, length = 20)
plot(vidyaValue, color = color.blue)
• f_mostTrail(source, multiplier)
Short Definition: Calculates trailing stop value.
Details: This function calculates the trailing stop value for a given source and the percentage. The 'multiplier' parameter defines the percentage of the trailing stop. Lower values are beneficial for catching short-term reversals, while higher values aid in identifying long-term trends. Although only used once internally in this library, it has been made available for users who wish to utilize it as a traditional trailing stop or use in custom OTT implementations.
Parameters:
source (float) : (series int/float) Series of values to process.
multiplier (simple float) : (simple float) Percent of trailing stop.
Returns: (float) Calculated value of trailing stop.
Example:
emaValue = ta.ema(source = close, length = 14)
mostValue = ottlib.f_mostTrail(source = emaValue, multiplier = 2.0)
plot(mostValue, color = emaValue >= mostValue ? color.green : color.red)
• f_ottTrail(source, multiplier)
Short Definition: Calculates OTT-specific trailing stop value.
Details: This function calculates the trailing stop value for a given source in the manner used in OTT. Unlike a traditional trailing stop, this function modifies the traditional trailing stop value from two bars prior by adjusting it further with half the specified percentage. The 'multiplier' parameter defines the percentage of the trailing stop. Lower values are beneficial for catching short-term reversals, while higher values aid in identifying long-term trends. Although primarily used internally in this library, it has been made available for users who wish to utilize it as a trailing stop or use in custom OTT implementations.
Parameters:
source (float) : (series int/float) Series of values to process.
multiplier (simple float) : (simple float) Percent of trailing stop.
Returns: (float) Calculated value of OTT-specific trailing stop.
Example:
vidyaValue = ottlib.f_vidya(source = close, length = 20)
ottValue = ottlib.f_ottTrail(source = vidyaValue, multiplier = 1.5)
plot(ottValue, color = vidyaValue >= ottValue ? color.green : color.red)
• ott(source, length, multiplier)
Short Definition: Calculates OTT (Optimized Trend Tracker).
Details: The OTT consists of two lines. The first, known as the "Support Line", is the VIDYA of the given source. The second, called the "OTT Line", is the trailing stop based on the Support Line. The market is considered to be in an uptrend when the Support Line is above the OTT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `2`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `1.4`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `ottLine`.
Example:
= ottlib.ott(source = close, length = 2, multiplier = 1.4)
longCondition = ta.crossover(supportLine, ottLine)
shortCondition = ta.crossunder(supportLine, ottLine)
• tott(source, length, multiplier, bandsMultiplier)
Short Definition: Calculates TOTT (Twin OTT).
Details: TOTT consists of three lines: the "Support Line," which is the VIDYA of the given source; the "Upper Line," a trailing stop of the Support Line adjusted with an added multiplier; and the "Lower Line," another trailing stop of the Support Line, adjusted with a reduced multiplier. The market is considered in an uptrend if the Support Line is above the Upper Line and in a downtrend if it is below the Lower Line.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `40`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.6`.
bandsMultiplier (simple float) : Multiplier for bands. Default value is `0.0006`.
Returns: ( [ float, float, float ]) Tuple of `supportLine`, `upperLine` and `lowerLine`.
Example:
= ottlib.tott(source = close, length = 40, multiplier = 0.6, bandsMultiplier = 0.0006)
longCondition = ta.crossover(supportLine, upperLine)
shortCondition = ta.crossunder(supportLine, lowerLine)
• ott_channel(source, length, multiplier, ulMultiplier, llMultiplier)
Short Definition: Calculates OTT Channels.
Details: OTT Channels comprise nine lines. The central line, known as the "Mid Line," is the OTT of the given source's VIDYA. The remaining lines are positioned above and below the Mid Line, shifted by specified multipliers.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`
length (simple int) : (simple int) Number of bars to lookback. Default value is `2`
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `1.4`
ulMultiplier (simple float) : (simple float) Multiplier for upper line. Default value is `0.01`
llMultiplier (simple float) : (simple float) Multiplier for lower line. Default value is `0.01`
Returns: ( [ float, float, float, float, float, float, float, float, float ]) Tuple of `ul4`, `ul3`, `ul2`, `ul1`, `midLine`, `ll1`, `ll2`, `ll3`, `ll4`.
Example:
= ottlib.ott_channel(source = close, length = 2, multiplier = 1.4, ulMultiplier = 0.01, llMultiplier = 0.01)
• risotto(source, length, rsiLength, multiplier)
Short Definition: Calculates RISOTTO (RSI OTT).
Details: RISOTTO comprised of two lines: the "Support Line," which is the VIDYA of the given source's RSI value, calculated based on the length parameter, and the "RISOTTO Line," a trailing stop of the Support Line. The market is considered in an uptrend when the Support Line is above the RISOTTO Line, and in a downtrend if it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `50`.
rsiLength (simple int) : (simple int) Number of bars used for RSI calculation. Default value is `100`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.2`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `risottoLine`.
Example:
= ottlib.risotto(source = close, length = 50, rsiLength = 100, multiplier = 0.2)
longCondition = ta.crossover(supportLine, risottoLine)
shortCondition = ta.crossunder(supportLine, risottoLine)
• sott(source, kLength, dLength, multiplier)
Short Definition: Calculates SOTT (Stochastic OTT).
Details: SOTT is comprised of two lines: the "Support Line," which is the VIDYA of the given source's Stochastic value, based on the %K and %D lengths, and the "SOTT Line," serving as the trailing stop of the Support Line. The market is considered in an uptrend when the Support Line is above the SOTT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
kLength (simple int) : (simple int) Stochastic %K length. Default value is `500`.
dLength (simple int) : (simple int) Stochastic %D length. Default value is `200`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.5`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `sottLine`.
Example:
= ottlib.sott(source = close, kLength = 500, dLength = 200, multiplier = 0.5)
longCondition = ta.crossover(supportLine, sottLine)
shortCondition = ta.crossunder(supportLine, sottLine)
• hottlott(length, multiplier)
Short Definition: Calculates HOTT & LOTT (Highest & Lowest OTT).
Details: HOTT & LOTT are composed of two lines: the "HOTT Line", which is the OTT of the highest price's VIDYA, and the "LOTT Line", the OTT of the lowest price's VIDYA. A high price surpassing the HOTT Line can be considered a long signal, while a low price dropping below the LOTT Line may indicate a short signal.
Parameters:
length (simple int) : (simple int) Number of bars to lookback. Default value is `20`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.6`.
Returns: ( [ float, float ]) Tuple of `hottLine` and `lottLine`.
Example:
= ottlib.hottlott(length = 20, multiplier = 0.6)
longCondition = ta.crossover(high, hottLine)
shortCondition = ta.crossunder(low, lottLine)
• rott(source, length, multiplier)
Short Definition: Calculates ROTT (Relative OTT).
Details: ROTT comprises two lines: the "Support Line", which is the VIDYA of the given source, and the "ROTT Line", the OTT of the Support Line's VIDYA. The market is considered in an uptrend if the Support Line is above the ROTT Line, and in a downtrend if it is below. ROTT is similar to OTT, but the key difference is that the ROTT Line is derived from the VIDYA of two bars of Support Line, not directly from it.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `200`.
multiplier (simple float) : (simple float) Percent of trailing stop. Default value is `0.1`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `rottLine`.
Example:
= ottlib.rott(source = close, length = 200, multiplier = 0.1)
isUpTrend = supportLine > rottLine
isDownTrend = supportLine < rottLine
• ft(source, length, majorMultiplier, minorMultiplier)
Short Definition: Calculates Fırsatçı Trend (Opportunist Trend).
Details: FT is comprised of two lines: the "Support Line", which is the VIDYA of the given source, and the "FT Line", a trailing stop of the Support Line calculated using both minor and major trend values. The market is considered in an uptrend when the Support Line is above the FT Line, and in a downtrend when it is below.
Parameters:
source (float) : (series float) Series of values to process. Default value is `close`.
length (simple int) : (simple int) Number of bars to lookback. Default value is `30`.
majorMultiplier (simple float) : (simple float) Percent of major trend. Default value is `3.6`.
minorMultiplier (simple float) : (simple float) Percent of minor trend. Default value is `1.8`.
Returns: ( [ float, float ]) Tuple of `supportLine` and `ftLine`.
Example:
= ottlib.ft(source = close, length = 30, majorMultiplier = 3.6, minorMultiplier = 1.8)
longCondition = ta.crossover(supportLine, ftLine)
shortCondition = ta.crossunder(supportLine, ftLine)
█ CUSTOM OTT CREATION
Users can create custom OTT implementations using f_ottTrail function in this library. The example code which uses EMA of 7 period as moving average and calculates OTT based of it is below.
Source Code:
//@version=5
indicator("Custom OTT", shorttitle = "COTT", overlay = true)
import ismailcarlik/ottlib/1 as ottlib
src = input.source(close, title = "Source")
length = input.int(7, title = "Length", minval = 1)
multiplier = input.float(2.0, title = "Multiplier", minval = 0.1)
support = ta.ema(source = src, length = length)
ott = ottlib.f_ottTrail(source = support, multiplier = multiplier)
pSupport = plot(support, title = "Moving Average Line (Support)", color = color.blue)
pOtt = plot(ott, title = "Custom OTT Line", color = color.orange)
fillColor = support >= ott ? color.new(color.green, 60) : color.new(color.red, 60)
fill(pSupport, pOtt, color = fillColor, title = "Direction")
Result:
█ DISCLAIMER
Trading is risky and most of the day traders lose money eventually. This library and its functions are only for educational purposes and should not be construed as financial advice. Past performances does not guarantee future results.
Cast ForwardThis indicator will not forecast price action. It will not predict price movement nor will it in any way predict the outcome of any trade you may take. This is not a signal for buying or selling. You must do your own back testing and analysis for trading.
Time and price are the two most important components of market data. Where was price at what time? To help visualize this question I created this indicator. It allows for the previous session data to be overlayed onto the chart offset forward 24 hours. What this means is that you have the high, (high/low)/2, and low of each candle plotted on top of your chart for the time frame of the current chart, but offset so that the data from the current candle has the data from the corresponding candle 24 hours prior lined up on the x-axis.
SMA Logic: I used the SMA (Simple Moving Average) function with a length of 1 to plot the data points without any smoothing to give the true values of the data.
For Intraday Charting
For Electronic Trading Hours:
In order to line up the data correctly, for intraday charts, I used the current chart timeframe and divided it into 1380 (number of minutes in the 23 hour futures market trading day) to set the data offset. Using the same math logic, this indicator also gives the correct correlated data on the 30 second time frame. If the chart time frame that is currently being used does not allow for correct data correlation (not a factor of 1380) it will not plot the data.
For Regular Trading Hours:
In order to line up the data correctly, for intraday charts, I used the current chart timeframe and divided it into 405 (number of minutes in the 6 hour 45 minutes New York regular session trading day, including the 15 minute settlement time) to set the data offset. This indicator also gives the correct correlated data on the 30 second time frame. If the chart time frame that is currently being used does not allow for correct data correlation (not a factor of 405) it will not plot the data.
For the Daily Chart:
This indicator plots a visualization of the 20-40-60 day IPDA data range; (The IPDA data range helps traders identify liquidity, price gaps, and equilibrium points in the market, providing insights for optimal trade entries and market structure shifts). It does this using the same SMA logic as the intraday plot. What this means is it offsets the historical data of the daily chart 20, 40, or 60 bars forward. You can plot any combination of the three on the chart at one time, but these will not show on the intraday chart. This allows for visualization of where the market will possibly seek liquidity, seek to rebalance, or seek equilibrium in the future.
RS for VPAThis is a supporting Indicator for the Volume Price Analysis Script VPA 5.0.
Purpose
To indicate the performance of the stock compared to an Index or any other selected stock. It also provides an idea about the strength of the Reference Index as well.
Description
The indicator is an unbound oscillator moving around a zero line. If the stock is strong then the values are positive and if it is weak the values are negative. If the stock is performing better (Stronger) than the Index the indicator is positive and colored green. If the stock is weaker than the Index it is negative and is colored Red.
The background indicates the strength of the Reference Index/Stock. Bullishness/up trend of the Index/Stock is indicated by yellow colour. Short term uptrend, Mid term uptrend and Long term trends are indicated by different shades of yellow varying from light to Dark. The bearishness / down trend is indicated by blue back ground.
How it Works
The relative strength is calculated by using the formula
RS = Gain of the stock / (Gain of the Ref. Index -1)
= (Stock Price today / Stock Price (N period ago)) /
(Index Price today / Index price (N period ago)) – 1
The Index strength is calculated as below
Short term trend up = 5 ema > 22 ema
Mid Term trend up = 22 ema > 60 ema
Long term trend up = 60 ema > 130 ema
Trend down = 5 ema < 22 ema
How to use
Use this indicator to assist your Price Action Analysis using VPA 5.0. When the Price action and volume indicates Bullishness, you can check if the relative strength is also supporting (Positive and in green Territory). This adds credibility to the Price action. Also check if the index is also positive (the Back ground is yellow). This makes the Price action even stronger. Ideally both the stock and index should be strong. Many time you would find the that the stock is in green territory but the index is in blue territory. This calls for some caution in evaluating the Price Action.
When the price action is positive but the relative strength is negative then one should be cautious and wait for the relative strength to turn positive before any entry decision.
Option for the Indicator
One can select the following from the setting for the indicator
1. Index or reference stock – Default is CNX 500
2. Relative Strength Calculation period – Default is 22
3. The EMA periods for the Index/Reference stock strength calculation
RVI_HTFThe "RVI_HTF" indicator is a tool designed to assist traders in analyzing market trends using the Relative Vigor Index (RVI) across different timeframes. It enables users to customize various aspects of the indicator's appearance and behavior. By monitoring the RVI on different timeframes, tracking its relationship with the moving average, and paying attention to extreme arrows above the 80 or below the 20 line, traders can anticipate potential reversals, trends, or changes in market momentum.
Above 80 Line: When the RVI moves above the 80 line, it suggests that the market may be overbought. Extreme upward arrows (indicating potential sell signals) can be a sign that a bullish trend might be reaching an exhaustion point. Traders may anticipate a possible trend reversal or pullback.
Below 20 Line: When the RVI dips below the 20 line, it implies that the market might be oversold. Extreme downward arrows (indicating potential buy signals) can be an early signal of a potential bullish reversal. Traders may anticipate an upcoming uptrend or bounce.
Crossing Above Moving Average: When the RVI crosses above its moving average on the selected timeframe, it can serve as an early indication of potential bullish strength in the market. This suggests that buying pressure may be increasing.
Crossing Below Moving Average: Conversely, when the RVI crosses below its moving average, it can signal potential bearish momentum. This indicates that selling pressure may be gaining strength.
Variables:
Timeframe (TF) Selection:
The indicator allows you to select the timeframe for the RVI calculation. You can choose from various options such as 1 minute (1), 5 minutes (5), 15 minutes (15), 30 minutes (30), 60 minutes (60), 240 minutes (240), Daily (D), Weekly (W), Monthly (M), or use "Auto" to automatically select a higher timeframe based on your current chart's timeframe.
Moving Average Type (MA_Type):
Function: Allows users to select the type of moving average used in RVI calculations.
Options: You can select from various moving average types, including:
SMA (Simple Moving Average)
EMA (Exponential Moving Average)
SMMA (Smoothed Moving Average, also known as RMA)
WMA (Weighted Moving Average)
VWMA (Volume Weighted Moving Average)
DEMA (Double Exponential Moving Average)
Moving Average Length (MA_Length):
Function: Permits users to set the number of periods for the selected moving average type.
Purpose: Controls the sensitivity of the RVI indicator. Longer lengths provide smoother results, while shorter lengths react more quickly to price changes.
Up Arrow Color (upArrowColor):
Function: Enables users to customize the color of arrows that indicate potential Overbought areas. (Only shown when the TF is same as or lower than the chart TF)
Down Arrow Color (downArrowColor):
Function: Allows users to specify the color of downward-pointing arrows signaling potential Oversold areas. (Only shown when the TF is same as or lower than the chart TF)
RVI Up Color (firstColor):
Function: Defines the color of the RVI line when it indicates a bullish condition on the higher timeframe.
RVI Down Color (secondColor):
Function: Specifies the color of the RVI line when it suggests a bearish condition on the higher timeframe.
RVI-Based Moving Average Up Color (firstColorMA):
Function: Customizes the color of the RVI-based moving average line when it indicates a bullish condition.
RVI-Based Moving Average Down Color (secondColorMA):
Function: Defines the color of the RVI-based moving average line when it suggests a bearish condition.
Interval Vertical Line DrawerIntroduction
The Interval Vertical Line Drawer is an indicator that assists traders in visualizing specific intervals on the chart. This script enables traders to conduct more accurate analyses across various time frames.
How It Works
This script operates by drawing vertical lines at intervals defined by the user. Users can select the interval for the vertical lines in minutes, and the script automatically places vertical lines at each interval on the chart. For instance, if a 15-minute interval is selected, vertical lines will appear at the start and end times of every 15-minute candle on the chart.
Additionally, this script includes a feature that allows drawing horizontal lines representing the open price of the candles at each vertical line. This is crucial for traders observing price action around specific times and evaluating market conditions at regular intervals.
This script is operative across diverse time frames and can be adjusted to fit various trading styles and analyses. It is efficient, user-friendly, and adaptable to the diverse needs of traders.
The open price of a candle often serves as a support or resistance, and there is a high possibility of significant movement occurring when these S/R levels are breached.
How to Use
VLInterval: Users can input the interval for the vertical lines in minutes and select from 5, 15, 30, 60, 120, 240, 1440.
visibleTimeframe: Users can select the desired time frame where the vertical lines will be visible.
Color and Style: Users can freely modify the color and style of the lines.
Apply the indicator to the chart.
Select the desired interval for the vertical lines.
Adjust the visibility and style of the lines as needed.
By adhering to these steps, traders can effectively incorporate this tool into their analysis, maximizing the utility of interval-based evaluations and observations.
소개
간격 수직 선 그리기 도구는 트레이더가 차트에서 특정 간격을 시각화할 수 있도록 도와주는 지표입니다. 이 스크립트는 트레이더들이 다양한 시간 프레임에서 더 정확한 분석을 수행할 수 있게 해줍니다.
작동 원리
이 스크립트는 사용자가 정의한 간격에서 수직선을 그리는 방식으로 작동합니다. 사용자는 분 단위로 수직선 간격을 선택할 수 있고, 스크립트는 자동으로 차트의 각 간격에 수직선을 배치합니다. 예를 들어, 15분 간격이 선택되면, 차트에는 15분봉의 시작, 종료 시간마다 수직선이 나타납니다.
더불어, 이 스크립트는 각 수직선에서의 캔들의 시가를 나타내는 수평선을 그릴 수 있는 기능도 포함하고 있습니다. 이는 트레이더가 특정 시간 주변의 가격 행동을 관찰하고 정기적인 간격으로 시장 상황을 평가하는데 중요합니다.
이 스크립트는 다양한 시간 프레임에서 작동하며, 다양한 거래 스타일과 분석에 맞게 조정할 수 있습니다. 이는 효율적이고 사용자 친화적이며, 트레이더의 다양한 필요에 적응할 수 있습니다.
캔들의 시작가는 종종 지지 또는 저항의 역할을 하며, S/R이 깨질 때 큰 움직임이 일어날 가능성이 높습니다.
사용 방법
VLInterval: 사용자는 분 단위로 수직선 간격을 입력할 수 있으며, 5, 15, 30, 60, 120, 240, 1440 중에서 선택할 수 있습니다.
visibleTimeframe: 사용자는 수직선이 보이게 될 원하는 시간 프레임을 선택할 수 있습니다.
색상과 스타일: 사용자는 선의 색상과 스타일을 자유롭게 수정할 수 있습니다.
지표를 차트에 적용합니다.
수직선의 원하는 간격을 선택합니다.
선의 가시성과 스타일을 필요에 맞게 조정합니다.
Cycles: 4x dual inputs: Swing / Time Cycles projected forward//Purpose/Premise:
To project forward vertical 'cycle' lines based on user-input anchor points, and to search for confluence.
The idea being that if several well-anchored cycles agree (i.e. we see multiple bunched vertical line confluence in the future), then this may add support to an already existing trade idea, or may indicate an increased likelihood of a shift in direction.
//Usage & notes:
~In the above chart I've anchored to obvious swing lows and swing highs in Btc/Usd from 2020-2022. You could also use fixed time-based cycles from a favored start anchor point. Bars per cycle are printed at the top of each cycle box if your're interested in time cycles. I.e. for 1, 2, 3 month cycles: for BTC you could use 30, 60, 90 bars on daily; for S&P you could use 20, 40, 60 bars on daily.
~On first loading the indicator you will be asked select 'start date', and 'end date' for each of 4 sessions (8x clicks on chart). After this you can easily reset points by clicking the indicator display line three dots>> reset points. Or you can simply drag the vertical box edges (purple lines) to change your cycle anchor points.
~Be sure the start anchor point is before the end anchor point or box/lines won't appear.
~When you drop down to low timeframes you might get bar_index error due to history available: you need then to click the three dots on indicator display line >> reset points >> 8x clicks on the chart.
~Vertical projected lines will match the color of the cycle box they origninate from.
~Lines will project into the future as far as is allowed by tradingview (500 bars max)
//Inputs:
~Time start and end dates for each cycle (change these as described above, or input manually)
~Show/hide each cycle (default is show all 4)
~Formatting options: color of forward projected lines, line width, line style, line / box / text color.
~Box transparancy: Set to 100 to make boxes invisible & declutter the chart. Set to 0 for maximum opacity. Default is 80.
thanks to @Sathyamurthie for his ideas on cycle confluence which caused me to write this.
libHTF[without request.security()]Library "libHTF"
libHTF: use HTF values without request.security()
This library enables to use HTF candles without request.security().
Basic data structure
Using to access values in the same manner as series variable.
The last member of HTF array is always latest current TF's data.
If new bar in HTF(same as last bar closes), new member is pushed to HTF array.
2nd from the last member of HTF array is latest fixed(closed) bar.
HTF: How to use
1. set TF
tf_higher() function selects higher TF. TF steps are ("1","5","15","60","240","D","W","M","3M","6M","Y").
example:
tfChart = timeframe.period
htf1 = tf_higher(tfChart)
2. set HTF matrix
htf_candle() function returns 1 bool and 1 matrix.
bool is a flag for start of new candle in HTF context.
matrix is HTF candle data(0:open,1:time_open,2:close,3:time_close,4:high,5:time:high,6:low,7:time_low).
example:
=htf_candle(htf1)
3. how to access HTF candle data
you can get values using .lastx() method.
please be careful, return value is always float evenif it is "time". you need to cast to int time value when using for xloc.bartime.
example:
htf1open=m1.lastx("open")
htf1close=m1.lastx("close")
//if you need to use histrical value.
lastopen=open
lasthtf1open=m1.lastx("open",1)
4. how to store Data of HTF context
you have to use array to store data of HTF context.
array.htf_push() method handles the last member of array. if new_bar in HTF, it push new member. otherwise it set value to the last member.
example:
array a_close=array.new(1,na)
a_close.htf_push(b_new_bar1,m1.lastx("close"))
HTFsrc: How to use
1. how to setup src.
set_src() function is set current tf's src from string(open/high/low/close/hl2/hlc3/ohlc4/hlcc4).
set_htfsrc() function returns src array of HTF candle.
example:
_src="ohlc4"
src=set_src(_src)
htf1src=set_htfsrc(_src,b_new_bar1,m1)
(if you need to use HTF src in series float)
s_htf1src=htf1src.lastx()
HighLow: How to use
1. set HTF arrays
highlow() and htfhighlow() function calculates high/low and return high/low prices and time.
the functions return 1 int and 8arrays.
int is a flag for new high(1) or new low(-1).
arrays are high/low and return high/low data. float for price, int for time.
example
=
highlow()
=
htfhighlow(m1)
2. how to access HighLow data
you can get values using .lastx() method.
example:
if i_renew==1
myhigh=a_high.lastx()
//if you need to use histrical value.
myhigh=a_high.lastx(1)
other functions
functions for HTF candle matrix or HTF src array in this script are
htf_sma()/htf_ema()/htf_rma()
htf_rsi()/htf_rci()/htf_dmi()
method lastx(arrayid, lastindex)
method like array.last. it returns lastindex from the last member, if parameter is set.
Namespace types: float
Parameters:
arrayid (float )
lastindex (int) : (int) default value is "0"(the last member). if you need to access historical value, increment it(same manner as series vars).
Returns: float value of lastindex from the last member of the array. returns na, if fail.
method lastx(arrayid, lastindex)
method like array.last. it returns lastindex from the last member, if parameter is set.
Namespace types: int
Parameters:
arrayid (int )
lastindex (int) : (int) default value is "0"(the last member). if you need to access historical value, increment it(same manner as series vars).
Returns: int value of lastindex from the last member of the array. returns na, if fail.
method lastx(m, _type, lastindex)
method for handling htf matrix.
Namespace types: matrix
Parameters:
m (matrix) : (matrix) matrix for htf candle.
_type (string) : (string) value type of htf candle:
lastindex (int) : (int) default value is "0"(the last member).
Returns: (float) value of htf candle. (caution: need to cast float to int to use time values!)
method set_last(arrayid, val)
method to set a value of the last member of the array. it sets value to the last member.
Namespace types: float
Parameters:
arrayid (float )
val (float) : (float) value to set.
Returns: nothing
method htf_push(arrayid, b, val)
method to push new member to htf context. if new bar in htf, it works as push. else it works as set_last.
Namespace types: float
Parameters:
arrayid (float )
b (bool) : (bool) true:push,false:set_last
val (float) : (float) _f the value to set.
Returns: nothing
method tf_higher(tf)
method to set higher tf from tf string. TF steps are .
Namespace types: series string, simple string, input string, const string
Parameters:
tf (string) : (string) tf string
Returns: (string) string of higher tf.
htf_candle(_tf, _TZ)
build htf candles
Parameters:
_tf (string) : (string) tf string.
_TZ (string) : of timezone. default value is "GMT+3".
Returns: bool for new bar@htf and matrix for snapshot of htf candle
set_src(_src_type)
set src.
Parameters:
_src_type (string) : (string) type of source:
Returns: (series float) src value
set_htfsrc(_src_type, _nb, _m)
set htf src.
Parameters:
_src_type (string) : (string) type of source:
_nb (bool) : (bool) flag of new bar
_m (matrix) : (matrix) matrix for htf candle.
Returns: (array) array of src value
is_up()
last_is_up()
peak_bottom(_latest, _last)
Parameters:
_latest (bool)
_last (bool)
htf_is_up(_m)
Parameters:
_m (matrix)
htf_last_is_up(_m)
Parameters:
_m (matrix)
highlow(_b_bartime_price)
Parameters:
_b_bartime_price (bool)
htfhighlow(_m, _b_bartime_price)
Parameters:
_m (matrix)
_b_bartime_price (bool)
htf_sma(_a_src, _len)
Parameters:
_a_src (float )
_len (int)
htf_rma(_a_src, _new_bar, _len)
Parameters:
_a_src (float )
_new_bar (bool)
_len (int)
htf_ema(_a_src, _new_bar, _len)
Parameters:
_a_src (float )
_new_bar (bool)
_len (int)
htf_rsi(_a_src, _new_bar, _len)
Parameters:
_a_src (float )
_new_bar (bool)
_len (int)
rci(_src, _len)
Parameters:
_src (float)
_len (int)
htf_rci(_a_src, _len)
Parameters:
_a_src (float )
_len (int)
htf_dmi(_m, _new_bar, _len, _ma_type)
Parameters:
_m (matrix)
_new_bar (bool)
_len (int)
_ma_type (string)
Bull and Bear Market '20% IndicatorThis indicator uses the somewhat crude method of calculating bear/bull markets using the following popular ' 20% rule ':
A bear market begins when an asset trades 20% below its recent high for more than two months, a bear market ends when an asset trades 20% above its recent low for one month or more.
The 1d time-frame should be used, here's why:
"A bear market begins when an asset trades 20% below its recent high for more than two months."
If we take the standard trading month to be around 20-22 days (excluding weekends), then two months would be approximately 40-44 days. This is why we set the `bearDuration` to 60 days in the script to capture the "more than two months" criteria. Using a daily timeframe, 60 bars represent roughly 3 months (since markets are not open every day due to weekends and holidays).
"...a bear market ends when an asset trades 20% above its recent low for one month or more."
This is why the `bullDuration` is set to 20 days in the script, which represents roughly one trading month on a daily timeframe.
So, to capture the mentioned bear and bull market definitions, you'd want to apply the script on a daily (1d/1D) chart.
Expected Move from RSI [SS]Publishing this experimental indicator.
What it does:
The indicator uses a user-defined lookback period on a user-defined timeframe to lookback at all instances of RSI. It breaks RSI down as follows:
RSI between
0 - 10
10 - 20
20 - 30
30 - 40
40 - 50
50 - 60
60 - 70
70 - 80
80 - 90
90 - 100
From there, it stores the ticker's move from open to high and open to low. It will then use this data to look at the current RSI based on the specified timeframe and plot the expected move based on the average move the ticker does with a similar RSI reading.
It will plot the expected range, with the high range being plotted in green and the low range being plotted in red.
It will also display an infographic that dictates the current RSI based on the selected time frame, the anticipated up move and the anticipated down move. This infographic will also tell you the strength of the relationship (correlation) RSI has with the ticker's high or low price:
From there the user can determine whether this RSI reading is traditionally bullish or bearish for the ticker. A greater down move indicates that the RSI traditionally elicits a bearish response. A greater up move indicates the inverse.
The user can also view a chart of a breakdown of the anticipated moves based on RSI. If the option to "Show Expected Move Table" is select in the settings menu, the following table will appear:
From here you can see the average up move and down move a ticker does based on its corresponding RSI reading.
NOTE: When using the table, please adjust your chart timeframe to the selected timeframe on the indicator. Thus, if you are looking at the 1 hour levels, please adjust your chart to the 1 hour timeframe to use the chart.
Additional Note: When using the table, an "NaN" means that there are no instances of the ticker being at that RSI level within the designated timeframe period. You can extend your lookback period to up to 500 candles to see if it finds additional instances of similar RSI. Otherwise, you can adjust the selected timeframe.
Uses:
The indicator can be used on all timeframes. It can help give you an idea as to whether the RSI indicates a bearish or bullish sentiment.
It can signal a potential reversal or continuation. It can also help you with determining target prices for day trades and scalp trades.
And that is the indicator. Its pretty straight forward. It is experimental and new, so feel free to play around with it and let me know your thoughts.
Safe trades everyone and thank you for reading!
RD Opening Range/Initial BalanceIntroducing the RD Opening Range/Initial Balance indicator. The opening range is the first 60 minutes of trading action for a given day (High, Mid, and Low).
The market tends to put significance in these levels, that's why we use them in our trade system.
There is also a data panel:
Today - Today's opening range value
W-Avg - This weeks average
20D CA-OH - the total number of closes above the opening range over the last 20 days (above high)
20D CA-OL - the total number of closes below the opening range over the last 20 days (below low)
* We do plan to add additional data points.
* Only the last OR has labels, we will not be adding them or an option in the future.
* Full customization in setting panel. Color of lines, background, no display of data panel and more.
How to Use
These levels act as dual magnets. They both attract price and repel price.
You use price action and rules to decipher if price is being attracted or repelled.
You will notice as you use this indicator that price respects these levels. Often when answering the 3Qs one of these levels is in play.
During the cash market these levels play a significant role in price action. Even during the Globex/Overnight session these levels are a factor.
Circle areas are examples of price reactions at OR key levels:
If you trade with the RDTS you already know how to use these levels as reaction and target zones.
For clues on which level price is being repelled or attracted I'd suggest you utilize bias and momentum indicators like the RDA.
Initial Balance vs Opening Range
Before we move on and discuss how to use this indicator I want to mention what I consider the difference between the Opening Range and the Initial Balance.
I've adopted the Opening Range verbiage for the first 60 minutes of trading even though the Opening Range is often defined as the first 15m or first 30m.
The more accurate term for the first 60m should be Initial Balance. I'm not sure exactly where this originated but I learned this term when I was heavily trading TPO-- the IB is the first 2 30m blocks of trading.
Any questions or improvements just comment below.
This script was created in by both Bhangerang (an Alpha member of the RDTS) with help by @RexDogActual as well as permission to publish.