High/Low Location Frequency [LuxAlgo]The High/Low Location Frequency tool provides users with probabilities of tops and bottoms at user-defined periods, along with advanced filters that offer deep and objective market information about the likelihood of a top or bottom in the market.
🔶 USAGE
There are four different time periods that traders can select for analysis of probabilities:
HOUR OF DAY: Probability of occurrence of top and bottom prices for each hour of the day
DAY OF WEEK: Probability of occurrence of top and bottom prices for each day of the week
DAY OF MONTH: Probability of occurrence of top and bottom prices for each day of the month
MONTH OF YEAR: Probability of occurrence of top and bottom prices for each month
The data is displayed as a dashboard, which users can position according to their preferences. The dashboard includes useful information in the header, such as the number of periods and the date from which the data is gathered. Additionally, users can enable active filters to customize their view. The probabilities are displayed in one, two, or three columns, depending on the number of elements.
🔹 Advanced Filters
Advanced Filters allow traders to exclude specific data from the results. They can choose to use none or all filters simultaneously, inputting a list of numbers separated by spaces or commas. However, it is not possible to use both separators on the same filter.
The tool is equipped with five advanced filters:
HOURS OF DAY: The permitted range is from 0 to 23.
DAYS OF WEEK: The permitted range is from 1 to 7.
DAYS OF MONTH: The permitted range is from 1 to 31.
MONTHS: The permitted range is from 1 to 12.
YEARS: The permitted range is from 1000 to 2999.
It should be noted that the DAYS OF WEEK advanced filter has been designed for use with tickers that trade every day, such as those trading in the crypto market. In such cases, the numbers displayed will range from 1 (Sunday) to 7 (Saturday). Conversely, for tickers that do not trade over the weekend, the numbers will range from 1 (Monday) to 5 (Friday).
To illustrate the application of this filter, we will exclude results for Mondays and Tuesdays, the first five days of each month, January and February, and the years 2020, 2021, and 2022. Let us review the results:
DAYS OF WEEK: `2,3` or `2 3` (for crypto) or `1,2` or `1 2` (for the rest)
DAYS OF MONTH: `1,2,3,4,5` or `1 2 3 4 5`
MONTHS: `1,2` or `1 2`
YEARS: `2020,2021,2022` or `2020 2021 2022`
🔹 High Probability Lines
The tool enables traders to identify the next period with the highest probability of a top (red) and/or bottom (green) on the chart, marked with two horizontal lines indicating the location of these periods.
🔹 Top/Bottom Labels and Periods Highlight
The tool is capable of indicating on the chart the upper and lower limits of each selected period, as well as the commencement of each new period, thus providing traders with a convenient reference point.
🔶 SETTINGS
Period: Select how many bars (hours, days, or months) will be used to gather data from, max value as default.
Execution Window: Select how many bars (hours, days, or months) will be used to gather data from
🔹 Advanced Filters
Hours of day: Filter which hours of the day are excluded from the data, it accepts a list of hours from 0 to 23 separated by commas or spaces, users can not mix commas or spaces as a separator, must choose one
Days of week: Filter which days of the week are excluded from the data, it accepts a list of days from 1 to 5 for tickers not trading weekends, or from 1 to 7 for tickers trading all week, users can choose between commas or spaces as a separator, but can not mix them on the same filter.
Days of month: Filter which days of the month are excluded from the data, it accepts a list of days from 1 to 31, users can choose between commas or spaces as separator, but can not mix them on the same filter.
Months: Filter months to exclude from data. Accepts months from 1 to 12. Choose one separator: comma or space.
Years: Filter years to exclude from data. Accepts years from 1000 to 2999. Choose one separator: comma or space.
🔹 Dashboard
Dashboard Location: Select both the vertical and horizontal parameters for the desired location of the dashboard.
Dashboard Size: Select size for dashboard.
🔹 Style
High Probability Top Line: Enable/disable `High Probability Top` vertical line and choose color
High Probability Bottom Line: Enable/disable `High Probability Bottom` vertical line and choose color
Top Label: Enable/disable period top labels, choose color and size.
Bottom Label: Enable/disable period bottom labels, choose color and size.
Highlight Period Changes: Enable/disable vertical highlight at start of period
インジケーターとストラテジー
Masterpiece AnggaProjectMasterpiece AnggaProject – Precision Trading for XAU/USD
Discover Masterpiece AnggaProject, the ultimate precision trading strategy for XAU/USD scalpers and day traders! Built with meticulous attention to detail, this strategy leverages a custom blend of zero-lag moving averages and exponential moving averages to help you capture trend reversals and trade confidently, even in volatile gold markets. With powerful visual signals, easy-to-follow labels, and customizable inputs, AnggaProject brings clarity and control to your trading journey.
📈 Key Features
Accurate Buy and Sell Signals
AnggaProject uses crossover points between a Zero-Lag Moving Average (ZLMA) and Exponential Moving Average (EMA) to signal optimal entry points. When these two moving averages cross over or under each other, it generates clear buy ("Buy AnggaProject") or sell ("Sell AnggaProject") signals right on your chart.
Candle Coloring for Visual Confirmation
Every candle adapts its color based on the latest signal for easy tracking:
Green Candles – Indicate a Buy trend.
Red Candles – Indicate a Sell trend.
Gray Candles – Show areas of uncertainty when prices are within the "cloud" (between ZLMA and EMA), helping you stay cautious during potential consolidation.
Take Profit (TP) & Stop Loss (SL) Labels
Say goodbye to guessing where to exit! With automated "TP" and "SL" labels based on price movement, AnggaProject gives you quick insights into when it's time to secure profits or limit potential losses, ensuring effective risk management on every trade.
Adjustable Label Size for Clarity
Customize your experience with a built-in option to change the size of your "Buy AnggaProject" and "Sell AnggaProject" labels, so you can keep important information at the forefront and perfectly tailored to your chart’s layout.
Strategy Testing for Optimized Results
Run backtests with the Strategy Tester to see how AnggaProject performs in real market conditions. Adjust the trade size, initial capital, and other inputs to fine-tune the strategy to your preferences and maximize its effectiveness on XAU/USD.
⚙️ How It Works
The AnggaProject strategy combines the ZLMA and EMA to find precise trading signals:
Buy Signal: When ZLMA crosses above EMA, it signals a new bullish trend.
Sell Signal: When ZLMA crosses below EMA, it signals a bearish reversal. This crossover approach, paired with candle coloring and cloud zones, helps you visualize trends and potential reversals in real-time, making it ideal for high-paced trading environments.
💼 Perfect for Scalpers and Day Traders
If you’re looking to trade XAU/USD with speed and precision, AnggaProject is designed for you. Whether you're a scalper capturing quick moves or a day trader riding intraday trends, this strategy provides the tools and clarity you need for success. Join the AnggaProject community, and take your XAU/USD trading to the next level!
Ready to unlock the potential of AnggaProject? Add it to your chart, customize to fit your style, and experience smarter trading today!
ICT Setup 02 [TradingFinder] Breaker Blocks + Reversal Candles🔵 Introduction
The "Breaker Block" concept, widely utilized in ICT (Inner Circle Trader) technical analysis, is a crucial tool for identifying reversal points and significant market shifts. Originating from the "Order Block" concept, Breaker Blocks help traders pinpoint support and resistance levels. These blocks are essential for understanding market trends and recognizing optimal entry and exit points.
A Breaker Block is essentially a failed Order Block that changes its role when price action breaks through it. When an Order Block fails to hold as a support or resistance level, it reverses its function, becoming a Breaker Block.
There are two primary types : Bullish Breaker Blocks and Bearish Breaker Blocks. These Breaker Blocks align with the prevailing market trend and indicate potential entry points after a liquidity sweep or a shift in market structure.
Understanding and applying the Breaker Block strategy enables traders to capitalize on the behavior of institutional investors, enhancing their trading outcomes.
Bullish Setup :
Bearish Setup :
🔵 How to Use
The ICT Setup 02 indicator designed to automate the identification of Bullish and Bearish Breaker Blocks. This tool enables traders to easily spot these blocks on a chart and utilize them for entering or exiting trades. Below is a breakdown of how to use this indicator in both bullish and bearish setups.
🟣 Bullish Breaker Block Setup
A Bullish Breaker Block setup is identified in an uptrend, where it serves as a potential entry point. This setup occurs when a Bearish Order Block fails and the price moves above the high of that Order Block. In this scenario, the previously bearish Order Block turns into a Bullish Breaker Block, which now acts as a support level for the price.
To trade a Bullish Breaker Block, wait for the price to retest this newly formed support level. Confirmation of the uptrend can be achieved by analyzing lower time frames for further market structure shifts or other bullish indicators.
A successful retest of the Bullish Breaker Block provides a high-probability entry point for a long trade, as it signals institutional support. Traders often place their stop-loss below the low of the Breaker Block zone to minimize risk.
🟣 Bearish Breaker Block Setup
A Bearish Breaker Block setup, conversely, is used in a downtrend to identify potential sell opportunities. This setup forms when a Bullish Order Block fails, and the price moves below the low of that Order Block.
Once this Order Block is broken, it reverses its role and becomes a Bearish Breaker Block, providing resistance to the price as it pushes downward. For a Bearish Breaker Block trade, wait for the price to retest this resistance level.
A confirmation of the downtrend, such as a market structure shift on a lower time frame or additional bearish signals, strengthens the setup. The Bearish Breaker Block retest provides an opportunity to enter a short position, with a stop-loss placed just above the high of the Breaker Block zone.
🔵 Settings
Pivot Period : This setting controls the look-back period used to identify pivot points that contribute to the detection of Order Blocks. A higher period captures longer-term pivots, while a lower period focuses on more recent price action. Adjusting this parameter allows traders to fine-tune the indicator to match their trading time frame.
Breaker Block Validity Period : This setting defines how long a Breaker Block remains valid based on the number of bars elapsed since its formation. Increasing the validity period keeps Breaker Blocks active for a longer duration, which can be useful for higher time frame analysis.
Mitigation Level BB : This option lets traders choose the level of the Order Block at which the price is expected to react. Options like "Proximal," "50% OB," and "Distal" adjust the zone where a reaction may occur, offering flexibility in setting up the entry and stop-loss levels.
Breaker Block Refinement : The refinement option refines the Breaker Block zone to display a more precise range for aggressive or defensive trading approaches. The "Aggressive" mode provides a tighter range for risk-tolerant traders, while the "Defensive" mode expands the zone for those with a more conservative approach.
🔵 Conclusion
The Breaker Block indicator provides traders with a sophisticated tool for identifying key reversal zones in the market. By leveraging Breaker Blocks, traders can gain insights into institutional order flow and predict critical support and resistance levels.
Using Breaker Blocks in conjunction with other ICT concepts, like Fair Value Gaps or liquidity sweeps, enhances the reliability of trading signals. This indicator empowers traders to make informed decisions, aligning their trades with institutional moves in the market.
As with any trading strategy, it is crucial to incorporate proper risk management, using stop-losses and position sizing to minimize potential losses. The Breaker Block strategy, when applied with discipline and thorough analysis, serves as a powerful addition to any trader’s toolkit.
SplashAlgo - ATR indicator(KillerTrader's Concept)This Indicator is based on @KillerTrader_'s concept to avoid false breakouts
When breakout happens and you see short period ATR moving above long period ATR, the stock will give big moves on the upside.
You can avoid false breakouts through this method.
Indicator Setting:-
14/50 for 1-2 weeks momentum, 14/100 for 1-3 months holding works well.
Moving Average Simple Tool [OmegaTools]This TradingView script is a versatile Moving Average Tool that offers users multiple moving average types and a customizable overbought and oversold (OB/OS) sensitivity feature. It is designed to assist in identifying potential price trends, reversals, and momentum by using different average calculations and providing visual indicators for deviation levels. Below is a detailed breakdown of the settings, functionality, and visual elements within the Moving Average Simple Tool.
Indicator Overview
Indicator Name: Moving Average Simple Tool
Short Title: MA Tool
Purpose: Provides a choice of six moving average types with configurable sensitivity, which helps traders identify trend direction, potential reversal zones, and overbought or oversold conditions.
Input Parameters
Source (src): This option allows the user to select the data source for the moving average calculation. By default, it is set to close, but users can choose other options like open, high, low, or any custom price data.
Length (lnt): Defines the period length for the moving average. By default, it is set to 21 periods, allowing users to adjust the moving average sensitivity to either shorter or longer periods.
Average Type (mode): This input defines the moving average calculation type. Six types of averages are available:
SMA (Simple Moving Average)
EMA (Exponential Moving Average)
WMA (Weighted Moving Average)
VWMA (Volume-Weighted Moving Average)
RMA (Rolling Moving Average)
Middle Line: Calculates the average between the highest and lowest price over the period specified in Length. This is useful for a mid-range line rather than a traditional moving average.
Sensitivity (sens): This parameter controls the sensitivity of the overbought and oversold levels. The sensitivity value can range from 1 to 40, where a lower value represents a higher sensitivity and a higher value allows for smoother OB/OS zones.
Color Settings:
OS (Oversold Color, upc): The color applied to deviation areas that fall below the oversold threshold.
OB (Overbought Color, dnc): The color applied to deviation areas that exceed the overbought threshold.
Middle Line Color (midc): A gradient color that visually blends between overbought and oversold colors for smoother visual transitions.
Calculation Components
Moving Average Calculation (mu): Based on the chosen Average Type, this calculation derives the moving average or middle line value for the selected source and length.
Deviation (dev): The deviation of the source value from the moving average is calculated. This is useful to determine whether the current price is significantly above or below the average, signaling potential buying or selling opportunities.
Overbought (ob) and Oversold (os) Levels: These levels are calculated using a linear percentile interpolation based on the deviation, length, and sensitivity inputs. The higher the sensitivity, the narrower the overbought and oversold zones, allowing users to capture more frequent signals.
Visual Elements
Moving Average Line (mu): This line represents the moving average based on the selected calculation method and is plotted with a dynamic color based on deviation thresholds. When the deviation crosses into overbought or oversold zones, it shifts to the corresponding OB/OS colors, providing a visual indication of potential trend reversals.
Deviation Plot (dev): This plot visualizes the deviation values as a column plot, with colors matching the overbought, oversold, or neutral states. This helps users to quickly assess whether the price is trending or reverting back to its mean.
Overbought (ob) and Oversold (os) Levels: These levels are plotted as fixed lines, helping users identify when the deviation crosses into overbought or oversold zones.
Enhanced Keltner Trend • ObiQuantEnhanced Keltner Trend
Overview:
The Keltner Trend is a Technical Indicator inspired by Keltner Channels, a common banded volatility indicator. Constituted of user-defined Upper and Lower channels, which they range away from the Middle Line. This can be a multiple of the daily high/low range, or Average True Range.
The Enhanced Keltner Trend is a Trend-Following indicator that offers more control over the Keltner Channels, ATR and the smoothing MA's to help investors and traders navigate the market with more accuracy.
Notes:
If you don't want to use the ATR, the indicator will use a high-low calculation over a user-defined period for a smoothed signals.
Credits to www.tradingview.com for the script, it’s an improved version of his.
Thank you!
Trend Lines Sukru DngznTrend tracking, ema tracking, dashboard, support and resistance are working for you.
Rule No#1Gunakan Candle Heikin Ashi pada pada timeframe 4 jam, strategi ini cocok untuk swing trading, dan anda harus bisa menghindari sinyal ketika sideway anda bisa menggunakan ADX untuk mengidentifikasi sinyal sidewaynya. beli ketika muncul sinyal beli dan jual ketik ada sinyal OB atau ketika muncul sinyal jual.
Stock Boosters//@version=5
const bool DEBUG = false
const int maxDistanceToLastBar = 5000
const int labelCooldown = 8
const int KDELimit = 300
indicator("Stock Booster", overlay = true, max_labels_count = 500)
rsiLengthInput = input.int(14, minval = 1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
highPivotLen = input.int(21, "High Pivot Length", minval = 1, group = "Pivots", display = display.none)
lowPivotLen = input.int(21, "Low Pivot Length", minval = 1, group = "Pivots", display = display.none)
realPivotLabels = DEBUG ? input.bool(false, " Real Pivot Labels", group = "Pivots") : false
kdePivotLabels = DEBUG ? input.bool(false, " KDE Pivot Labels", group = "Pivots") : false
activationThresholdStr = input.string("Medium", "Activation Threshold", options = , group = "KDE", tooltip = "Determines the amount of arrows shown. Higher options will result in more arrows being rendered.")
string KDEKernel = input.string("Gaussian", "Kernel", options= , group = "KDE", tooltip = "The kernel function for KDE calculation. Gaussian is a commonly used kernel and is based on normal distribution.")
float KDEBandwidth = input.float(2.71828, "Bandwidth", group = "KDE", tooltip = "This setting sets the smoothness of the KDE function output.")
int KDEStep = input.int(100, "Nº Bins", minval = 1, group = "KDE", tooltip = "The number of elements the KDE Probability array will have. Higher settings will result in greater precision.")
activationThreshold = DEBUG ? input.float(0.25, " Activation Threshold", group = "KDE") : 0.25
if not DEBUG
activationThreshold := (activationThresholdStr == "High" ? 0.4 : activationThresholdStr == "Medium" ? 0.25 : 0.15)
probMode = DEBUG ? input.string("Sum", ' Probability Mode', options = , group = "KDE") : "Sum"
minPadding = DEBUG ? input.bool(false, ' KDE Min Padding', group = "KDE") : false
tableEnabled = input.bool(true, "Dashboard", group = "Dashboard", display = display.none)
tableLocation = input.string("Top Right", "Position", options = , group = "Dashboard", display = display.none)
screenerColor = input.color(#1B1F2B, 'Background', group = 'Dashboard', display = display.none)
frameColor = input.color(color.rgb(255, 255, 255), 'Frame', group = 'Dashboard', display = display.none)
borderColor = input.color(color.rgb(255, 255, 255), 'Border', group = 'Dashboard', display = display.none)
textColorDB = input.color(color.white, 'Text', group = 'Dashboard', display = display.none)
fillBackgrounds = input.bool(true, "Fill Backgrounds", group = "Dashboard", display = display.none)
bearishColor = input.color(#f23646, "High Pivots", group = "Style", inline = "col", display = display.none)
neutralColor = input.color(color.gray, "Neutral", group = "Style", inline = "col", display = display.none)
bullishColor = input.color(#089981, "Low Pivots", group = "Style", inline = "col", display = display.none)
textColor = input.color(color.white, 'Text', group = 'Style', inline = "col", display = display.none)
RSILabelsEnabled = input.bool(true, "RSI Labels", group = "Style")
KDELabelsEnabled = input.bool(true, "KDE Labels", group = "Style")
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
getPosition (positionText) =>
if positionText == "Top Right"
position.top_right
else if positionText == "Top Center"
position.top_center
else if positionText == "Right Center"
position.middle_right
else if positionText == "Left Center"
position.middle_left
else if positionText == "Bottom Center"
position.bottom_center
else if positionText == "Middle Center"
position.middle_center
//#region KDE
gaussian (float distance, float bandwidth = 1.0) => 1.0 / math.sqrt(2.0 * math.pi) * math.pow(math.e, -0.5 * math.pow(distance / bandwidth, 2.0))
uniform (float distance, float bandwidth = 1.0) => (math.abs(distance) > bandwidth) ? 0.0 : 0.5
sigmoid (float distance, float bandwidth = 1.0) => 2.0 / math.pi * (1.0 / (math.pow(math.e, (distance / bandwidth)) + math.pow(math.e, -(distance / bandwidth))))
kde (array arr, string kernel, float bandwidth, int steps) =>
arrSize = arr.size()
arrRange = arr.range()
arrMin = arr.min() - (minPadding ? (arrRange / 2.0) : 0)
stepCount = arrRange / steps
densityRange = array.new(steps * 2)
for i = 0 to (steps * 2) - 1
densityRange.set(i, arrMin + i * stepCount)
xArr = array.new()
yArr = array.new()
for i = 0 to densityRange.size() - 1
float temp = 0
for j = 0 to arr.size() - 1
switch KDEKernel
"Gaussian" => temp += gaussian(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
"Uniform" => temp += uniform(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
"Sigmoid" => temp += sigmoid(densityRange.get(i) - arr.get(j), 1.0 / bandwidth)
xArr.push(densityRange.get(i))
yArr.push(1.0 / arrSize * temp)
//#endregion
//#region Pivots
prefixSum (array arr, int l, int r) =>
arr.get(r) - (l == 0 ? 0 : arr.get(l - 1))
float MidKDEHigh = na
float MidKDELow = na
var array KDEHighX = na
var array KDEHighY = na
var array KDEHighYSum = array.new()
var array KDELowX = na
var array KDELowY = na
var array KDELowYSum = array.new()
highPivot = ta.pivothigh(highPivotLen, highPivotLen)
lowPivot = ta.pivotlow(lowPivotLen, lowPivotLen)
var highPivotRSIs = array.new()
var lowPivotRSIs = array.new()
if not na(highPivot)
if highPivotRSIs.size() > KDELimit
highPivotRSIs.remove(0)
highPivotRSIs.push(rsi )
= kde(highPivotRSIs, KDEKernel, KDEBandwidth, KDEStep)
KDEHighX := KDEHighX1
KDEHighY := KDEHighY1
KDEHighYSum.clear()
temp = 0.0
for i = 0 to KDEHighY.size() - 1
temp += KDEHighY.get(i)
KDEHighYSum.push(temp)
MidKDEHigh := array.get(KDEHighX, array.indexof(KDEHighY, array.max(KDEHighY)))
if not na(lowPivot)
if lowPivotRSIs.size() > KDELimit
lowPivotRSIs.remove(0)
lowPivotRSIs.push(rsi )
= kde(lowPivotRSIs, KDEKernel, KDEBandwidth, KDEStep)
KDELowX := KDELowX1
KDELowY := KDELowY1
KDELowYSum.clear()
temp = 0.0
for i = 0 to KDELowY.size() - 1
temp += KDELowY.get(i)
KDELowYSum.push(temp)
MidKDELow := array.get(KDELowX, array.indexof(KDELowY, array.max(KDELowY)))
//#endregion
//#region KDE Optimization
f_lin_interpolate(float x0, float x1, float y0, float y1, float x) =>
y0 + (x - x0) * (y1 - y0) / (x1 - x0)
float lowProb = na
float maxLowProb = na
float highProb = na
float maxHighProb = na
if last_bar_index - maxDistanceToLastBar < bar_index
if highPivotRSIs.size() > 0
highXIndexL = array.binary_search_leftmost(KDEHighX, rsi)
highXIndexR = math.min(array.binary_search_rightmost(KDEHighX, rsi), KDEHighX.size() - 1)
nearestIndex = (math.abs(rsi - KDEHighX.get(highXIndexL)) < math.abs(rsi - KDEHighX.get(highXIndexR))) ? highXIndexL : highXIndexR
if probMode == "Nearest"
highProb := KDEHighY.get(nearestIndex)
maxHighProb := array.max(KDEHighY)
else if probMode == "Sum"
highProb := prefixSum(KDEHighYSum, 0, nearestIndex)
if lowPivotRSIs.size() > 0
lowXIndexL = array.binary_search_leftmost(KDELowX, rsi)
lowXIndexR = math.min(array.binary_search_rightmost(KDELowX, rsi), KDELowX.size() - 1)
nearestIndex = (math.abs(rsi - KDELowX.get(lowXIndexL)) < math.abs(rsi - KDELowX.get(lowXIndexR))) ? lowXIndexL : lowXIndexR
if probMode == "Nearest"
lowProb := KDELowY.get(nearestIndex)
maxLowProb := array.max(KDELowY)
else if probMode == "Sum"
lowProb := prefixSum(KDELowYSum, nearestIndex, KDELowYSum.size() - 1)
if DEBUG and barstate.islastconfirmedhistory
for i = 0 to KDELowX.size() - 1
curX = KDELowX.get(i)
curY = KDELowY.get(i)
log.info(str.tostring(curX) + " = " + str.tostring(curY))
log.info("High Y Sum " + str.tostring(KDEHighY.sum()))
diffToHighKDE = math.abs(rsi - MidKDEHigh)
diffToLowKDE = math.abs(rsi - MidKDELow)
//#endregion
//#region Draw Pivots
color curColor = na
if (not na(KDELowY)) and (not na(KDEHighY))
if probMode == "Nearest"
if math.abs(lowProb - maxLowProb) < activationThreshold / 50.0
curColor := bullishColor
if math.abs(highProb - maxHighProb) < activationThreshold / 50.0
curColor := bearishColor
else if probMode == "Sum"
if lowProb > KDELowY.sum() * (1.0 - activationThreshold)
curColor := bullishColor
else if highProb > KDEHighY.sum() * (1.0 - activationThreshold)
curColor := bearishColor
//barcolor(curColor)
atr = ta.atr(50)
plotarrow(curColor == bullishColor and barstate.isconfirmed ? 1 : na, "Bullish Arrows", color.new(bullishColor, 70), color.new(bullishColor, 70), minheight = 20, maxheight = 20)
plotarrow(curColor == bearishColor and barstate.isconfirmed ? -1 : na, "Bearish Arrows", color.new(bearishColor, 70), color.new(bearishColor, 70), minheight = 20, maxheight = 20)
plotarrow((na(curColor) and curColor == bullishColor and barstate.isconfirmed) ? 1 : na, "Possible Bullish Pivot", bullishColor, bullishColor, minheight = 20, maxheight = 20)
plotarrow((na(curColor) and curColor == bearishColor and barstate.isconfirmed) ? -1 : na, "Possible Bearish Pivot", bearishColor, bearishColor, minheight = 20, maxheight = 20)
alertcondition(na(curColor) and curColor == bullishColor and barstate.isconfirmed, "Possible Bullish Pivot")
alertcondition(na(curColor) and curColor == bearishColor and barstate.isconfirmed, "Possible Bearish Pivot")
if KDELabelsEnabled or RSILabelsEnabled
var lastBullishLabel = 0
if (na(curColor) and curColor == bullishColor and barstate.isconfirmed) and (bar_index - lastBullishLabel) > labelCooldown
lastBullishLabel := bar_index
txt = ""
if RSILabelsEnabled and KDELabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#") + " | " + str.tostring(lowProb * 100, "#.##") + "%"
else if RSILabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#")
else
txt := str.tostring(rsi, "#") + "%"
label.new(bar_index, low, txt, yloc = yloc.belowbar, color = na, style = label.style_label_up, textcolor = textColor, force_overlay = true)
var lastBearishLabel = 0
if (na(curColor) and curColor == bearishColor and barstate.isconfirmed) and (bar_index - lastBearishLabel) > labelCooldown
lastBearishLabel := bar_index
txt = ""
if RSILabelsEnabled and KDELabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#") + " | " + str.tostring(highProb * 100, "#.##") + "%"
else if RSILabelsEnabled
txt := "RSI | " + str.tostring(rsi, "#")
else
txt := str.tostring(rsi, "#") + "%"
label.new(bar_index, low, txt, yloc = yloc.abovebar, color = na, style = label.style_label_down, textcolor = textColor, force_overlay = true)
if kdePivotLabels
txt = str.tostring(rsi, "#.##") + " HP -> " + str.tostring(highProb, "#.##") + " LP -> " + str.tostring(lowProb, "#.##") + " MHP -> " + str.tostring(maxHighProb, "#.##") + " MLP -> " + str.tostring(maxLowProb, "#.##")
if math.abs(lowProb - maxLowProb) < activationThreshold
label.new(bar_index, high, txt, yloc = yloc.belowbar, color = textColor, style = label.style_label_up, textcolor = color.black, force_overlay = true)
if math.abs(highProb - maxHighProb) < activationThreshold
label.new(bar_index, high, txt, yloc = yloc.abovebar, color = textColor, style = label.style_label_down, textcolor = color.black, force_overlay = true)
if realPivotLabels
if not na(highPivot)
txt = str.tostring(rsi , "#.##") + " HP -> " + str.tostring(highProb , "#.##") + " LP -> " + str.tostring(lowProb , "#.##") + " MHP -> " + str.tostring(maxHighProb , "#.##") + " MLP -> " + str.tostring(maxLowProb , "#.##")
label.new(bar_index - highPivotLen, high, txt, yloc = yloc.abovebar, color = textColor, style = label.style_label_down, textcolor = color.black, force_overlay = true)
if not na(lowPivot)
txt = str.tostring(rsi , "#.##") + " HP -> " + str.tostring(highProb , "#.##") + " LP -> " + str.tostring(lowProb , "#.##") + " MHP -> " + str.tostring(maxHighProb , "#.##") + " MLP -> " + str.tostring(maxLowProb , "#.##")
label.new(bar_index - lowPivotLen, high, txt, yloc = yloc.belowbar, color = textColor, style = label.style_label_up, textcolor = color.black, force_overlay = true)
//#endregion
if tableEnabled
var table realtimeTable = table.new(getPosition(tableLocation), 2, 10, bgcolor = screenerColor, frame_width = 2, frame_color = frameColor, border_width = 1, border_color = borderColor)
// Header
table.merge_cells(realtimeTable, 0, 0, 1, 0)
table.cell(realtimeTable, 0, 0, "KDE Optimized RSI", text_color = textColorDB, bgcolor = screenerColor)
// RSI
table.cell(realtimeTable, 0, 1, "RSI", text_color = textColorDB, bgcolor = screenerColor)
table.cell(realtimeTable, 1, 1, str.tostring(rsi, "#"), text_color = textColorDB, bgcolor = screenerColor)
// KDE
table.cell(realtimeTable, 0, 2, (lowProb > highProb) ? "Bullish KDE" : "Bearish KDE", text_color = (lowProb > highProb) ? bullishColor : bearishColor, bgcolor = screenerColor)
table.cell(realtimeTable, 1, 2, str.tostring(nz(math.max(highProb, lowProb), 0) * 100, "#.##") + "%", text_color = textColorDB, bgcolor = screenerColor)
Smoothed Heiken Ashi Trend FilterThis indicator applies the Heiken Ashi technique with added smoothing and trend filtering to help reduce noise and improve trend detection.
Components of the Indicator:
Heiken Ashi Calculations:
Heiken Ashi Close (ha_close): This is the smoothed average of the current bar’s open, high, low, and close prices, calculated with a simple moving average (SMA) to filter out noise.
Heiken Ashi Open (ha_open): This is the average of the previous Heiken Ashi Open and the current Heiken Ashi Close. It’s also initialized to smooth the transition on the first bar.
Heiken Ashi High (ha_high) and Low (ha_low): These values are calculated as the highest and lowest values among the high, Heiken Ashi Open, and Heiken Ashi Close for each bar.
Smoothing and Noise Reduction:
Smoothing Length: The indicator applies a smoothing length to the Heiken Ashi Close, calculated with an SMA. This reduces minor fluctuations, giving a clearer view of the price action.
Minimum Body Size Filter: This filter calculates the body size of each Heiken Ashi candle and compares it to a percentage of the Average True Range (ATR). Only significant candles (those with larger bodies) are plotted, reducing weak or indecisive signals.
Trend Filtering with Moving Average:
The indicator uses a simple moving average (SMA) as a trend filter. By comparing the Heiken Ashi Close to the moving average:
Bullish Trend: The Heiken Ashi candle is green when it’s above the moving average.
Bearish Trend: The Heiken Ashi candle is red when it’s below the moving average.
How to Use This Indicator:
Trend Identification:
Green candles signify a bullish trend, while red candles signify a bearish trend.
The smoothing and trend filtering make it easier to identify sustained trends and avoid reacting to short-term fluctuations.
Filtering Out Noise:
Minor price fluctuations and small-bodied candles (often resulting in indecisive signals) are filtered out, leaving only significant signals.
Adjustable Parameters:
Smoothing Length: Controls the degree of smoothing applied to the Heiken Ashi Close value. Increasing this value will make the Heiken Ashi candles smoother.
Minimum Body Size: This is a percentage of the ATR, used to filter out small or indecisive candles.
Trend Moving Average Length: Controls the period of the moving average used as a trend filter.
This Smoothed Heiken Ashi Trend Filter indicator is useful for identifying trends and filtering out noisy signals. By smoothing and filtering, it helps traders focus on the overall trend rather than minor price movements.
Let me know if there’s anything more you’d like to add or adjust!
EMA 50 Cross with Bullish/Bearish SignalThis Indicator will generate you a buy and sell signal based on ema
ali_he96This is a customized version of the HALFTREND indicator.
Trading Method:
Timeframe: 1-hour or higher.
Buy Signal: When a buy signal is generated, open a long position and set the stop loss just below the lowest level.
Sell Signal: When a sell signal is generated, open a short position and set the stop loss just above the highest level.
Risk Management:
Make sure to learn risk management principles before trading. Always maintain a minimum risk-to-reward ratio of 2
You can set alerts to receive notifications for buy and sell signals.
Sequence Waves [OmegaTools]the sequence waves indicator, developed by omegatools, is a multi-functional tool designed to detect trends, sequences, and potential reversal signals based on price movements and volume. this indicator has two main modes, "trend" and "sequence," which determine how the indicator calculates directional changes. additional enhancements in this version include reversal signals, allowing users to identify potential long and short opportunities with specific entry cues.
input parameters
mode (mode): chooses the calculation basis for directional movement.
- "trend": uses a midline calculated from the highest high and lowest low over the "trend mode length" period to assess if the price is in an upward or downward trend.
- "sequence": compares the current price to the closing price of the previous "sequence mode length" period to detect shifts in direction.
counter mode (modec): sets whether the counter increments by a fixed amount (1 or -1) or the volume of the bar, impacting the indicator’s sensitivity.
- "fixed": increments or decrements the counter by 1.
- "volume": increments or decrements based on the period’s volume, making the indicator more responsive to high-volume periods.
percentile length (lntp): defines the lookback period for calculating overbought and oversold thresholds using a percentile method. shorter lengths make ob/os levels more reactive.
sensitivity (sens): controls the percentile-based ob/os thresholds, ranging from 10 to 100. higher values narrow ob/os zones, while lower values widen them, impacting signal frequency.
trend mode length (lnt1): sets the period length for midline calculation in trend mode, defaulting to 21. longer periods smooth the midline for detecting major trends.
sequence mode length (lnt2): sets the lookback period in sequence mode, with a default of 4. shorter lengths capture more frequent directional changes, while longer lengths smooth signals.
visual colors:
- up color (upc): sets the color for upward movements.
- down color (dnc): sets the color for downward movements.
calculation logic
midline calculation: in trend mode, a midline is derived from the average of the highest high and lowest low over the "trend mode length" period, acting as a reference to detect upward or downward movements.
counter calculation:
- in trend mode, if the close price is above the midline, the counter increases (or volume if volume mode is selected). it decreases when the price is below.
- in sequence mode, the counter increases if the close is above the closing price from "sequence mode length" periods ago and decreases if below.
the counter resets to zero on direction changes, creating clear directional transitions.
overbought/oversold percentiles: separate arrays track the counter’s values each time the direction changes, creating historical up and down values. ob and os thresholds are dynamically determined based on these arrays, with sizes limited by the percentile length and sensitivity inputs.
reversal signals: two new variables, "long" and "short," detect potential reversal points when the counter crosses specific thresholds:
- long: a long signal is generated when the counter switches to positive and exceeds the down percentile.
- short: a short signal is triggered when the counter switches to negative and exceeds the up percentile.
visual and display elements
counter plot: plots the counter value on the chart with color-coded columns, making it easy to spot directional momentum.
up and down percentiles: displays overbought (up percentile) and oversold (down percentile) thresholds to identify potential reversal zones.
regime background: the background color changes based on market regime:
- bullish (up percentile > down percentile): greenish background.
- bearish (down percentile > up percentile): reddish background.
- neutral (both percentiles equal): grayish background.
reversal signals: plotted as small triangles on the chart for visual confirmation of potential long (triangle up) and short (triangle down) reversal signals.
obs background: changes color when the counter exceeds ob or os thresholds, creating a visual cue for extreme market conditions:
- overbought: background changes to a faint down color.
- oversold: background changes to a faint up color.
status table: displayed on the right side of the chart, providing real-time status information:
- status: shows "overbought," "oversold," "long," "short," or "none" based on the current counter position.
- regime: indicates whether the market is in a "bullish," "bearish," or "neutral" state based on the percentile comparison.
- percentile up/down: displays the current up and down percentiles for quick reference.
how to use the indicator
trend following: in trend mode, use the midline-based counter to gauge if the market is in an uptrend (positive counter) or downtrend (negative counter).
reversal detection: the ob/os thresholds assist in identifying potential reversal points. when the counter exceeds the up percentile, it may indicate an overbought state, suggesting a bearish reversal. similarly, dropping below the down percentile may indicate an oversold state, suggesting a bullish reversal.
entry signals: use the long and short reversal signals for potential entry points, particularly in trending or range-bound markets. these signals are indicated by up and down triangles.
sequence trading: in sequence mode, the indicator tracks shorter-term directional shifts, making it suitable for detecting smaller momentum patterns based on recent price comparisons.
volume sensitivity: selecting volume mode enhances sensitivity to high-volume moves, allowing it to detect stronger market activity in both trend and sequence modes.
the sequence waves indicator is suited to both short-term and long-term traders. it allows for detailed trend analysis, reversal detection, and dynamic ob/os signals. the inclusion of visual reversal cues makes it a flexible tool adaptable to a variety of trading strategies.
Breakout MasterA range breakout occurs when the price moves outside a defined range or consolidation zone, either above resistance or below support. This breakout often signals a potential new trend direction, as it indicates increased momentum and interest in the asset beyond the previous range boundaries. Traders may use range breakouts as entry signals for trending moves.
SELOW Use in Conjunction with Other Indicators: It’s often helpful to use this indicator alongside others (e.g., RSI, MACD) to confirm signals, especially on larger timeframes
Swing Percentile Lines [QuantVue]The Swing High/Low Percentile Indicator is designed to help traders identify key price levels based on the most recent swing high and low. By anchoring to the most recent swing high and swing low, the indicator automatically generates percentile lines ( 25%, 50%, 75%) that act as dynamic support and resistance levels.
What Does the Indicator Do?
The Swing High/Low Percentile Indicator works by identifying the most recent significant price swings, whether it's a swing high or swing low. It then calculates the range between these points and divides the distance into percentage-based levels. These levels are plotted on the chart as clear, easy-to-read lines at 25%, 50%, and 75% of the range between the swing high and low.
These percentile lines serve as dynamic price zones where traders can anticipate potential reactions, whether the market is trending or consolidating.
How Can Traders Use the Indicator?
Support and Resistance: The percentile lines act as evolving support and resistance zones. Traders can anticipate price bounces or breaks at these levels, providing opportunities for trend-following or reversal trades.
Trend Identification: The indicator helps traders determine the strength of a trend. In a strong uptrend, price will likely stay above the 50% or 75% lines, while in a downtrend, it may remain below the 50% or 25% lines. This gives traders an edge in recognizing the overall market direction.
Entry and Exit Points: Traders can use the percentile lines to time their entries and exits. For example, entering a trade on a pullback to the 25% or 50% line offers a favorable risk-to-reward ratio. Similarly, the percentile lines serve as natural profit targets, allowing traders to plan exits as the price approaches the 50% or 75% levels.
Risk Management: The clear delineation of price levels makes it easy for traders to set stop-loss orders. For example, if price falls below the 25% line in an uptrend, it may signal weakness, prompting an exit or reduced position size.
Breakout and Breakdown Scenarios: When price breaks above a recent swing high or below a swing low, the percentile lines provide traders with pullback entry opportunities or key levels to watch for continuation of the move.
Enhanced Long & Short Strategy with VolumeThis script is an optimized long/short strategy designed for free TradingView accounts, using a maximum of three indicators. It incorporates RSI, EMA, and Volume to identify high-probability entry points with enhanced confirmation from trading volume.
Strategy Overview:
Long Entry Signal: A long signal is generated when:
RSI falls below 30, indicating an oversold condition.
The price is above the 200 EMA, signifying an uptrend.
Volume exceeds a specified threshold (set as a multiplier of the average volume over the past 20 bars).
Short Entry Signal: A short signal is generated when:
RSI rises above 70, indicating an overbought condition.
The price is below the 200 EMA, signifying a downtrend.
Volume exceeds the specified threshold.
Risk Management:
Stop Loss (SL): Automatically set at 2% below the entry price for long positions and 2% above for short positions.
Take Profit (TP): Calculated with a customizable risk-reward ratio (default 2:1), meaning TP is set twice as far from the entry as the SL level.
Key Features:
Volume Confirmation: By using a volume filter, this strategy ensures that signals are supported by increased trading activity, which can improve accuracy.
Simple, Efficient Indicators: Only three indicators are used (RSI, EMA, and Volume) to fit within the limitations of free TradingView accounts.
Single Alert for Free Accounts: Includes a single alert option, ideal for free accounts, which can be configured for either long or short signals.
Visual Markers: Clear markers show entry signals and risk levels (SL and TP) directly on the chart for easy monitoring.
This strategy is ideal for traders who want reliable entry signals with additional volume confirmation to enhance decision-making on both long and short trades.
SMC with Inducement and DWM HL and Asian sessionSMC with Inducement and previous DWM HL and Asian session
Market Stats Panel [Daveatt]█ Introduction
I've created a script that brings TradingView's watchlist stats panel functionality directly to your charts. This isn't just another performance indicator - it's a pixel-perfect (kidding) recreation of TradingView's native stats panel.
Important Notes
You might need to adjust manually the scaling the firs time you're using this script to display nicely all the elements.
█ Core Features
Performance Metrics
The panel displays key performance metrics (1W, 1M, 3M, 6M, YTD, 1Y) in real-time, with color-coded boxes (green for positive, red for negative) for instant performance assessment.
Display Modes
Switch seamlessly between absolute prices and percentage returns, making it easy to compare assets across different price scales.
Absolute mode
Percent mode
Historical Comparison
View year-over-year performance with color-coded lines, allowing for quick historical pattern recognition and analysis.
Data Structure Innovation
Let's talk about one of the most interesting challenges I faced. PineScript has this quirky limitation where request.security() can only return 127 tuples at most. £To work around this, I implemented a dual-request system. The first request handles indices 0-63, while the second one takes care of indices 64-127.
This approach lets us maintain extensive historical data without compromising script stability.
And here's the cool part: if you need to handle even more years of historical data, you can simply extend this pattern by adding more request.security() calls.
Each additional call can fetch another batch of monthly open prices and timestamps, following the same structure I've used.
Think of it as building with LEGO blocks - you can keep adding more pieces to extend your historical reach.
Flexible Date Range
Unlike many scripts that box you into specific timeframes, I've designed this one to be completely flexible with your date selection. You can set any start year, any end year, and the script will dynamically scale everything to match. The visual presentation automatically adjusts to whatever range you choose, ensuring your data is always displayed optimally.
█ Customization Options
Visual Settings
The panel's visual elements are highly customizable. You can adjust the panel width to perfectly fit your workspace, fine-tune the line thickness to match your preferences, and enjoy the pre-defined year color scheme that makes tracking historical performance intuitive and visually appealing.
Box Dimensions
Every aspect of the performance boxes can be tailored to your needs. Adjust their height and width, fine-tune the spacing between them, and position the entire panel exactly where you want it on your chart. The goal is to make this tool feel like it's truly yours.
█ Technical Challenges Solved
Polyline Precision
Creating precise polylines was perhaps the most demanding aspect of this project.
The challenge was ensuring accurate positioning across both time and price axes, while handling percentage mode scaling with precision.
The script constantly updates the current year's data in real-time, seamlessly integrating new information as it comes in.
Axis Management
Getting the axes right was like solving a complex puzzle. The Y-axis needed to scale dynamically whether you're viewing absolute prices or percentages.
The X-axis required careful month labeling that stays clean and readable regardless of your selected timeframe.
Everything needed to align perfectly while maintaining proper spacing in all conditions.
█ Final Notes
This tool transforms complex market data into clear, actionable insights. Whether you're day trading or analyzing long-term trends, it provides the information you need to make informed decisions. And remember, while we can't predict the future, we can certainly be better prepared for it with the right tools at hand.
A word of warning though - seeing those red numbers in a beautifully formatted panel doesn't make them any less painful! 😉
---
Happy Trading! May your charts be green and your stops be far away!
Daveatt
MERCURY™ by DrAbhiramSivprasad
**MERCURY™ by Dr. Abhiram Sivprasad** - The Intraday trader Mercury™
**MERCURY™ by Dr. Abhiram Sivprasad** is a comprehensive technical indicator that combines pivot points, CPR (Central Pivot Range), multiple EMA crossovers, and VWAP with configurable bands. This versatile indicator helps traders identify potential support and resistance levels on various timeframes (Daily) and includes visual alerts for significant EMA crossovers. It’s especially useful for momentum traders and those seeking to trade breakouts and reversals with clearly defined support and resistance levels.
### Features
1. **Central Pivot Range (CPR)**: Tracks the central pivot, top central, and bottom central pivots. Daily pivot lines provide important levels for potential support and resistance.
2. **Support and Resistance Levels**: Three support (S1, S2, S3) and three resistance (R1, R2, R3) levels are calculated based on the pivot and can be toggled on/off.
3. **Exponential Moving Averages (EMAs)**: Includes up to nine customizable EMAs with visual crossover alerts, bar color change, and an EMA dashboard that shows price positioning relative to each EMA.
4. **VWAP with Standard Deviation and Percentage Bands**: VWAP with optional upper and lower bands that are either based on a standard deviation or a percentage distance from the VWAP.
### Usage
#### Example Strategy
This indicator provides signals primarily for trend-following and reversal strategies:
1. **Trend Continuation**:
- **Buy Signal**: When the price crosses above both EMA1 and EMA2 and holds above the daily CPR level, a bullish trend continuation is confirmed.
- **Sell Signal**: When the price crosses below both EMA1 and EMA2 and holds below the daily CPR level, a bearish trend continuation is confirmed.
2. **Reversal at Pivot Levels**:
- If the price approaches a resistance (R1, R2, or R3) from below with an uptrend and then begins to cross under EMA1 or EMA2, it may signal a bearish reversal.
- If the price approaches a support (S1, S2, or S3) from above in a downtrend and then crosses above EMA1 or EMA2, it may signal a bullish reversal.
#### Example Setup
- **Long Entry**:
- When the price crosses above the daily pivot point and closes above both EMA1 and EMA2.
- Hold the position if the price remains above the VWAP band and monitor for any EMA crossunder as an exit signal.
- **Short Entry**:
- When the price drops below the daily pivot and both EMA1 and EMA2 cross under the price.
- Consider covering the position if the price breaks above the VWAP band or if a crossover of EMA1 and EMA2 occurs.
### Alerts
Alerts are customizable based on EMA1 & EMA2 crossovers to notify the trader of potential trend shifts.