{FREE} Candlestick Patterns [NASAlgoTrading]{FREE} Candlestick Patterns identifies and plots various candlestick patterns on price charts. It helps traders visualize potential reversal and continuation patterns in the market.
Key Features
Bullish Reversal Patterns Detected:
Hammer - Signals potential bullish reversal after a downtrend
Inverted Hammer - Indicates possible bullish reversal
Three White Soldiers - Strong bullish reversal pattern showing consecutive bullish candles
Bullish Harami - Shows potential trend reversal from bearish to bullish
Bearish Reversal Patterns Detected:
Hanging Man - Warns of potential bearish reversal after an uptrend
Shooting Star - Suggests possible bearish reversal
Three Black Crows - Strong bearish reversal pattern showing consecutive bearish candles
Bearish Harami - Indicates potential trend reversal from bullish to bearish
Dark Cloud Cover - Shows bearish reversal potential
Continuation Patterns Detected:
Rising Three Methods - Bullish continuation pattern
Falling Three Methods - Bearish continuation pattern
Gravestone Doji - Can indicate potential reversals (shown in orange)
Long-legged Doji - Shows market indecision (shown in orange)
Dragonfly Doji - Can signal potential reversals (shown in orange)
Benefits for Traders
Visual Pattern Recognition: Automatically identifies and labels patterns on the chart, saving traders time in manual analysis.
Comprehensive Coverage: Detects multiple important candlestick patterns in a single indicator.
Clear Visual Cues:
Bullish patterns marked in green below price bars
Bearish patterns marked in red above price bars
Doji patterns marked in orange
Trend Analysis: Helps identify both reversal and continuation patterns, providing insights into potential market direction.
Confirmation Tool: Can be used alongside other technical indicators to confirm trading signals.
Educational Value: Helps new traders learn to recognize important candlestick patterns.
Customization: The indicator allows for up to 50 lines to be displayed (max_lines_count = 50).
Implementation Notes
The indicator uses precise mathematical conditions to identify each pattern, including:
Relative candle body and wick sizes
Previous candle patterns and trends
Price relationships between current and historical candles
This systematic approach ensures consistent pattern recognition that might be subjective when done manually.
Educational
Ultimate Poker Bluff Strategy🎲 Ultimate Poker Bluff Strategy (Intraday Trading)
This strategy integrates multiple sophisticated concepts into a dynamic intraday trading system designed to identify and capitalize on short-term market inefficiencies (fake pumps and fakeouts).
The fake pump indicator can be found here:
📌 Core Concepts & Logic
This TradingView (Pine Script) strategy combines:
Poker principles:
Pot Odds: Ensures a positive risk-reward ratio (at least 2:1).
Bluff Detection: Identifies fake pumps or unnatural price movements using arbitrage detection methods relative to a benchmark (e.g., DXY).
Blackjack "Forbidden Strategy" principles:
Dynamically adjusts the position size based on the profitability of recent trades, scaling up slightly after wins and scaling down after losses.
Devil’s Game (Risk Management):
Implements strict capital protection rules by capping the maximum allowed position size, safeguarding your capital against rare and extreme market events.
⚙️ Detailed Explanation of Parameters
🎛 Strategy Inputs
Basis Risk % per Trade (baseRiskPercent): The baseline percentage of capital risked per trade (default is 1%).
TP ATR Multiplier (atrTPMultiplier = 3.0): Defines the profit target as a multiple of the ATR (Average True Range).
SL ATR Multiplier (atrSLMultiplier = 0.5): Defines the stop-loss level as a multiple of ATR. A tight SL ensures high Reward/Risk.
ATR Length (atrLength = 10): Period for ATR calculation to measure volatility.
Max Position per Trade ($) (maxAbsolutePosition): Maximum allowed position size in USD to protect from catastrophic losses (default is $100,000).
Fake Pump Scale (k) (k = 0.25): Sensitivity setting for detecting unusual price discrepancies (fake pumps).
Benchmark Asset (benchmarkTicker = "DXY"): The asset used as a reference benchmark for arbitrage detection.
📈 Indicators & Calculations
Volatility Measurement (ATR)
Uses the ATR indicator to set dynamic take-profit and stop-loss levels:
Take Profit = current price + (ATR × 3)
Stop Loss = current price − (ATR × 0.5)
Fake Pump Detection (Arbitrage Indicator)
Measures deviations from expected asset price based on a constant relation with a benchmark (e.g., DXY).
Generates EMAs (arb_ema_fast and arb_ema_slow) to detect abnormal short-term movements.
Defines upper and lower thresholds (arb_threshold) to identify potential fake pumps or unsustainable price spikes.
Gamma Stability Check
Ensures stable market conditions by confirming that the difference between fast and slow EMAs (arb_ema_fast and arb_ema_slow) remains small. Trades are entered only during stable conditions to avoid high volatility periods.
🔄 Dynamic Blackjack Position Sizing
Adjusts position sizing dynamically based on previous trade results:
Profitable last trade → Increase risk slightly (up to a cap of 3%).
Losing last trade → Reduce risk to 75% of base risk, enhancing capital protection.
🚨 Entry & Exit Logic
Long Entry Conditions:
Fast EMA crosses above Slow EMA (bullish crossover).
Market is stable (gamma_stable condition true).
Previous candle indicated a downward fake pump (isFakePumpDown ).
Short Entry Conditions:
Fast EMA crosses below Slow EMA (bearish crossover).
Market is stable (gamma_stable condition true).
Previous candle indicated an upward fake pump (isFakePumpUp ).
Risk-Reward Validation: Only enters trades when the risk-reward ratio is at least 2:1.
🛡️ Capital Protection (Devil’s Game Principle)
Ensures no single trade exceeds the absolute maximum allowable position size, providing protection against rare, catastrophic events.
🖥️ Visual Plots for Analysis
Triangles: Visual indications of detected fake pumps:
🔻 Red down arrow: Potential fake upward spike.
🔺 Green up arrow: Potential fake downward spike.
🎯 Strategy Goals & Benefits
Identifies high-probability intraday trades using a rigorous probabilistic framework inspired by professional gambling strategies.
Limits exposure effectively, scaling position size strategically to capitalize on profitable sequences and minimize the impact of losing streaks.
Ensures long-term capital growth with disciplined risk and reward management.
This is just an experiment on how to identify fake moves in the market which works especially in lower timeframe. This is not financial advice.
VisionThis indicator helps visually distinguish and analyze the Asian, London, and New York trading sessions. It's a great tool for intraday traders focusing on time-based liquidity zones.
🔧 Features:
Asian range box, London / New York high-low lines with distinct colors.
Customizable time windows, Asian range deviations and colors.
Point CounterPoint counting based on current or specific bar and designated target. When multiple target are required, this makes everyone's life easier.
My strategyThe Combination 1 strategy is a precision-based breakout and retest setup designed for the EUR/USD 2-minute chart, operating during the Asia and London sessions (UTC-4). It identifies a unique consolidation zone where price, the 20-period SMA, and the 200-period SMA all align within a tight 2-pip range, signaling potential buildup. Once price breaks 10 to 15 pips above this consolidation area, the strategy waits for a retest—specifically, a wick that touches the zone, followed by a bullish close. This confirms buyer strength and triggers a BUY alert, with the take profit set at the breakout high and the stop loss at the recent swing low. This strategy filters for clean trends and disciplined breakouts, minimizing noise and maximizing precision.
Contrarian Market Structure BreakMarket Structure Break application was inspired and adapted from Market Structure Oscillator indicator developed by Lux Algo. So much credit to their work.
This indicator pairs nicely with the Contrarian 100 MA and can be located here:
Indicator Description: Contrarian Market Structure BreakOverview
The "Contrarian Market Structure Break" indicator is a versatile tool tailored for traders seeking to identify potential reversal opportunities by analyzing market structure across multiple timeframes. Built on Institutional Concepts of Structure (ICT), this indicator detects Break of Structure (BOS) and Change of Character (CHoCH) patterns across short-term, intermediate-term, and long-term swings, plotting them with customizable lines and labels. It generates contrarian buy and sell signals when price breaks key swing levels, with a unique "Blue Dot Tracker" to monitor consecutive buy signals for trend confirmation. Optimized for the daily timeframe, this indicator is adaptable to other timeframes with proper testing, making it ideal for traders of forex, stocks, or cryptocurrencies.
How It Works
The indicator combines three key components to provide a comprehensive view of market dynamics: Multi-Timeframe Market Structure Analysis: It identifies swing highs and lows across short-term, intermediate-term, and long-term periods, plotting BOS (continuation) and CHoCH (reversal) events with customizable line styles and labels.
Contrarian Signal Generation: Buy and sell signals are triggered when the price crosses below swing lows (buy) or above swing highs (sell), indicating potential reversals in overextended markets.
Blue Dot Tracker: A unique feature that counts consecutive buy signals ("blue dots") and highlights a "Hold Investment" state with a yellow background when three or more buy signals occur, suggesting a potential trend continuation.
Signals are visualized as small circles below (buy) or above (sell) price bars, and a table in the bottom-right corner displays the blue dot count and recommended action (Hold or Flip Investment), enhancing decision-making clarity.
Mathematical Concepts Swing Detection: The indicator identifies swing highs and lows by comparing price patterns over three bars, ensuring robust detection of pivot points. A swing high occurs when the middle bar’s high is higher than the surrounding bars, and a swing low occurs when the middle bar’s low is lower.
Market Structure Logic: BOS is detected when the price breaks a prior swing high (bullish) or low (bearish) in the direction of the current trend, while CHoCH signals a potential reversal when the price breaks a swing level against the trend. These are calculated across three timeframes for a multi-dimensional perspective.
Blue Dot Tracker: This feature counts consecutive buy signals and tracks the entry price. If three or more buy signals occur without a sell signal, the indicator enters a "Hold Investment" state, marked by a yellow background, until the price exceeds the entry price or a sell signal occurs.
Entry and Exit Rules Buy Signal (Blue Dot Below Bar): Triggered when the closing price crosses below a swing low on either the intermediate-term or long-term timeframe, suggesting an oversold condition and potential reversal upward. Short-term signals can be enabled but are disabled by default to reduce noise.
Sell Signal (White Dot Above Bar): Triggered when the closing price crosses above a swing high on either the intermediate-term or long-term timeframe, indicating an overbought condition and potential reversal downward.
Blue Dot Tracker Logic: After a buy signal, the indicator increments a blue dot counter and records the entry price. If three or more consecutive buy signals occur (blueDotCount ≥ 3), the indicator enters a "Hold Investment" state, highlighted with a yellow background, suggesting a potential trend continuation. The "Hold Investment" state ends when the price exceeds the entry price or a sell signal occurs, resetting the counter.
Exit Rules: Traders can exit buy positions when a sell signal appears, the price exceeds the entry price during a "Hold Investment" state, or based on additional confirmation from BOS/CHoCH patterns or other technical analysis tools. Always use proper risk management.
Recommended Usage
The indicator is optimized for the daily timeframe, where it effectively captures significant reversal and continuation patterns in trending or ranging markets. It can be adapted to other timeframes (e.g., 1H, 4H, 15M) with careful testing of settings, particularly enabling/disabling short-term structure analysis to suit market conditions. Backtesting is recommended to optimize performance for your chosen asset and timeframe.
Customization Options Market Structure Display: Toggle short-term, intermediate-term, and long-term structures on or off, with customizable line styles (solid, dashed, dotted) and colors for bullish and bearish breaks.
Labels: Enable or disable BOS/CHoCH labels for each timeframe to reduce chart clutter.
Signal Visibility: Hide buy/sell signals if desired for a cleaner chart.
Blue Dot Tracker: Monitor the blue dot count and action (Hold or Flip Investment) via the table display, which is fully customizable in terms of position and appearance.
Why Use This Indicator?
The "Contrarian Market Structure Break" indicator offers a robust framework for identifying high-probability reversal and continuation setups using ICT principles. Its multi-timeframe analysis, clear signal visualization, and innovative Blue Dot Tracker provide traders with actionable insights into market dynamics. Whether you're a swing trader or a day trader, this indicator’s flexibility and intuitive design make it a valuable addition to your trading arsenal.
Note for TradingView Moderators
This script complies with TradingView's House Rules by providing an educational and transparent description without performance claims or guarantees. It is designed to assist traders in technical analysis and should be used alongside proper risk management and personal research. The code is original, well-documented, and includes customizable inputs and clear visual outputs to enhance the user experience.
Tips for Users:
Backtest thoroughly on your chosen asset and timeframe to validate signal reliability. Combine with other indicators or price action analysis for confirmation of entries and exits. Adjust timeframe settings and enable/disable short-term structures to match market volatility and your trading style.
Hope the "Contrarian Market Structure Break" indicator enhances your trading strategy and helps you navigate the markets with confidence! Happy trading!
Gaussian/Stoch-RSI Breakout Strategy🧠 Overview
The Gaussian/Stoch-RSI Breakout Strategy is a trend-following breakout strategy that combines a Gaussian Moving Average Channel with a Stochastic RSI filter. It identifies bullish breakouts when price exceeds statistically significant volatility bands and momentum confirms the move.
This strategy is best suited for trend initiation points and works across various asset classes (e.g., Forex, indices, crypto) and timeframes.
⚙️ Strategy Logic
🎯 Entry Conditions (Long Only)
A long position is triggered when both of the following conditions are met:
The closing price crosses above the upper Gaussian channel.
The Stoch RSI K line crosses above the D line (indicating bullish momentum).
❌ Exit Conditions
The long position is closed when:
The closing price falls back below the upper Gaussian channel.
🧮 Indicators & Calculations
📈 Gaussian Moving Average Channel
A Gaussian-weighted moving average is used to smooth price.
Standard deviation is computed using Gaussian weights to construct a volatility-based channel.
The channel is defined by:
Midline: Gaussian-weighted moving average
Upper Band: Midline + (Standard Deviation × Multiplier)
Lower Band: Midline − (Standard Deviation × Multiplier)
🔁 Stochastic RSI
Combines RSI with a Stochastic calculation to identify momentum shifts.
Used as a filter to confirm the strength of a breakout.
The following plots are displayed on the chart:
Gaussian Midline – Red line: core trend anchor
Upper & Lower Bands – Blue lines: breakout thresholds
Stochastic RSI is not plotted by default but used internally
🛠️ Notes & Best Practices
Timeframe: Strategy can be used on intraday or higher timeframes. For reduced noise, consider using it on 1H or higher.
No Short Trades: This version is long-only.
No Stop Loss / Take Profit: The strategy relies on a trailing exit via the Gaussian channel.
📌 Disclaimer
This strategy is intended for educational and research purposes only. Past performance does not guarantee future results. Always test strategies in a simulated environment before deploying them on a live account. This is not financial advice.
arjun & abhimanya [LuxAlgo]// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) creativecommons.org
// © LuxAlgo
//@version=5
indicator("arjune &abhi manya "
, overlay = true
, max_boxes_count = 500
, max_labels_count = 500
, max_lines_count = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(5, 'Volume Pivot Length'
, minval = 1)
bull_ext_last = input.int(3, 'Bullish OB '
, minval = 1
, inline = 'bull')
bg_bull_css = input.color(color.new(#169400, 80), ''
, inline = 'bull')
bull_css = input.color(#169400, ''
, inline = 'bull')
bull_avg_css = input.color(color.new(#9598a1, 37), ''
, inline = 'bull')
bear_ext_last = input.int(3, 'Bearish OB'
, minval = 1
, inline = 'bear')
bg_bear_css = input.color(color.new(#ff1100, 80), ''
, inline = 'bear')
bear_css = input.color(#ff1100, ''
, inline = 'bear')
bear_avg_css = input.color(color.new(#9598a1, 37), ''
, inline = 'bear')
line_style = input.string('⎯⎯⎯', 'Average Line Style'
, options = )
line_width = input.int(1, 'Average Line Width'
, minval = 1)
mitigation = input.string('Wick', 'Mitigation Methods'
, options = )
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
//Line Style function
get_line_style(style) =>
out = switch style
'⎯⎯⎯' => line.style_solid
'----' => line.style_dashed
'····' => line.style_dotted
//Function to get order block coordinates
get_coordinates(condition, top, btm, ob_val)=>
var ob_top = array.new_float(0)
var ob_btm = array.new_float(0)
var ob_avg = array.new_float(0)
var ob_left = array.new_int(0)
float ob = na
//Append coordinates to arrays
if condition
avg = math.avg(top, btm)
array.unshift(ob_top, top)
array.unshift(ob_btm, btm)
array.unshift(ob_avg, avg)
array.unshift(ob_left, time )
ob := ob_val
//Function to remove mitigated order blocks from coordinate arrays
remove_mitigated(ob_top, ob_btm, ob_left, ob_avg, target, bull)=>
mitigated = false
target_array = bull ? ob_btm : ob_top
for element in target_array
idx = array.indexof(target_array, element)
if (bull ? target < element : target > element)
mitigated := true
array.remove(ob_top, idx)
array.remove(ob_btm, idx)
array.remove(ob_avg, idx)
array.remove(ob_left, idx)
mitigated
//Function to set order blocks
set_order_blocks(ob_top, ob_btm, ob_left, ob_avg, ext_last, bg_css, border_css, lvl_css)=>
var ob_box = array.new_box(0)
var ob_lvl = array.new_line(0)
//Fill arrays with boxes/lines
if barstate.isfirst
for i = 0 to ext_last-1
array.unshift(ob_box, box.new(na,na,na,na
, xloc = xloc.bar_time
, extend= extend.right
, bgcolor = bg_css
, border_color = color.new(border_css, 70)))
array.unshift(ob_lvl, line.new(na,na,na,na
, xloc = xloc.bar_time
, extend = extend.right
, color = lvl_css
, style = get_line_style(line_style)
, width = line_width))
//Set order blocks
if barstate.islast
if array.size(ob_top) > 0
for i = 0 to math.min(ext_last-1, array.size(ob_top)-1)
get_box = array.get(ob_box, i)
get_lvl = array.get(ob_lvl, i)
box.set_lefttop(get_box, array.get(ob_left, i), array.get(ob_top, i))
box.set_rightbottom(get_box, array.get(ob_left, i), array.get(ob_btm, i))
line.set_xy1(get_lvl, array.get(ob_left, i), array.get(ob_avg, i))
line.set_xy2(get_lvl, array.get(ob_left, i)+1, array.get(ob_avg, i))
//-----------------------------------------------------------------------------}
//Global elements
//-----------------------------------------------------------------------------{
var os = 0
var target_bull = 0.
var target_bear = 0.
n = bar_index
upper = ta.highest(length)
lower = ta.lowest(length)
if mitigation == 'Close'
target_bull := ta.lowest(close, length)
target_bear := ta.highest(close, length)
else
target_bull := lower
target_bear := upper
os := high > upper ? 0 : low < lower ? 1 : os
phv = ta.pivothigh(volume, length, length)
//-----------------------------------------------------------------------------}
//Get bullish/bearish order blocks coordinates
//-----------------------------------------------------------------------------{
= get_coordinates(phv and os == 1, hl2 , low , low )
= get_coordinates(phv and os == 0, high , hl2 , high )
//-----------------------------------------------------------------------------}
//Remove mitigated order blocks
//-----------------------------------------------------------------------------{
mitigated_bull = remove_mitigated(bull_top
, bull_btm
, bull_left
, bull_avg
, target_bull
, true)
mitigated_bear = remove_mitigated(bear_top
, bear_btm
, bear_left
, bear_avg
, target_bear
, false)
//-----------------------------------------------------------------------------}
//Display order blocks
//-----------------------------------------------------------------------------{
//Set bullish order blocks
set_order_blocks(bull_top
, bull_btm
, bull_left
, bull_avg
, bull_ext_last
, bg_bull_css
, bull_css
, bull_avg_css)
//Set bearish order blocks
set_order_blocks(bear_top
, bear_btm
, bear_left
, bear_avg
, bear_ext_last
, bg_bear_css
, bear_css
, bear_avg_css)
//Show detected order blocks
plot(bull_ob, 'Bull OB', bull_css, 2, plot.style_linebr
, offset = -length
, display = display.none)
plot(bear_ob, 'Bear OB', bear_css, 2, plot.style_linebr
, offset = -length
, display = display.none)
//-----------------------------------------------------------------------------}
//Alerts
//-----------------------------------------------------------------------------{
alertcondition(bull_ob, 'Bullish OB Formed', 'Bullish order block detected')
alertcondition(bear_ob, 'Bearish OB Formed', 'bearish order block detected')
alertcondition(mitigated_bull, 'Bullish OB Mitigated', 'Bullish order block mitigated')
alertcondition(mitigated_bear, 'Bearish OB Mitigated', 'bearish order block mitigated')
//-----------------------------------------------------------------------------}
EMA Cross by RA4 ema indicator, shows buy sell signal on the cross of ema 1 and ema 2, ema 3 and ema 4 are optional to add, and may be of any length/period.
Dynamic SL/TP Levels (ATR or Fixed %)This indicator, "Dynamic SL/TP Levels (ATR or Fixed %)", is designed to help traders visualize potential stop loss (SL) and take profit (TP) levels for both long and short positions, refreshing dynamically on each new bar. It assumes entry at the current bar's close price and uses a fixed 1:2 risk-reward ratio (TP is twice the distance of SL in the profit direction). Levels are displayed in a compact table in the chart pane for easy reference, without cluttering the main chart with lines.
Key Features:
Calculation Modes:
ATR-Based (Dynamic): SL distance is derived from the Average True Range (ATR) multiplied by a user-defined factor (default 1.5x). This adapts to the asset's volatility, providing breathing room based on recent price movements.
Fixed Percentage: SL is set as a direct percentage of the current close price (default 0.5%), offering consistent gaps regardless of volatility.
Long and Short Support: Calculates and shows SL/TP for longs (SL below close, TP above) and shorts (SL above close, TP below), with toggles to hide/show each.
Real-Time Updates: Levels recalculate every bar, making them readily available for entry decisions in your trading system.
Display: Outputs to a table in the top-right pane, showing precise values formatted to the asset's tick size (e.g., full decimal places for crypto).
How to Use:
Add the indicator to your chart via TradingView's Pine Editor or library.
Adjust settings:
Toggle "Use ATR?" on/off to switch modes.
Set "ATR Length" (default 14) and "ATR Multiplier for SL" for dynamic mode.
Set "Fixed SL %" for percentage mode.
Enable/disable "Show Long Levels" or "Show Short Levels" as needed.
Interpret the table: Use the displayed SL/TP values when your strategy signals an entry. For risk management, combine with position sizing (e.g., risk 1% of account per trade based on SL distance).
Example: On a volatile asset like BTC, ATR mode might set a wider SL for realism; on stable pairs, fixed % ensures predictability.
This tool promotes disciplined trading by tying levels to price action or fixed rules, but it's not financial advice—always backtest and use with your full strategy. Feedback welcome!
Casper sessions + fvgDraws lines for the 5 minute and 30 minute opening candle along with FVG's as per Casper's recent YouTube videos "Stupid Easy" series. There are options to toggle Asia and London ranges on and off as well as the opening candles. All lines reset at 16:30
Trading CalculatorTrading Calculator Indicator
VIBE CODED WITH GROK 3
The Trading Calculator is a Pine Script indicator designed to perform quick and useful trading-related calculations directly on your chart. It allows traders to execute basic arithmetic operations—such as addition, subtraction, multiplication, and division—as well as calculate percent change and average using either numerical values or trading variables (e.g., close, open, high, low, volume). The indicator displays its results in a table that resembles a calculator interface, making it both functional and visually intuitive. Unlike typical indicators, it does not overlay on the price chart but instead appears in a separate pane.
Inputs
Formula (new | old): First value or variable (e.g., 100, close, close ). Example: close uses the current closing price.
Operator: Mathematical operation (e.g., Plus, Minus, Multiply). Example: Plus adds the two inputs.
Second Input: Second value or variable (e.g., 50, open, close ). Example: open uses the current opening price.
Futures Support & Resistance LevelsMulti-Timeframe Support & Resistance Levels for Futures Trading
Description:
This indicator automatically identifies and displays key support and resistance levels using multiple technical analysis methods. Designed specifically for futures traders (ES, NQ, etc.), it provides a clean, organized view of important price levels.
Key Features:
Multiple Detection Methods: Combines pivot points, daily ranges, and psychological levels
Smart Ranking System: Levels are numbered by strength (1 = strongest)
Clean Visualization: Extended lines across the chart with clear price labels
Confluence Detection: Highlights areas where multiple levels converge
Customizable Display: Adjust colors, line styles, and label sizes
Level Types Identified:
Daily High/Low (current session)
Previous Daily High/Low
Pivot-based Support/Resistance
Psychological Round Numbers
Confluence Zones (multiple levels clustering)
Technical Approach:
The indicator uses a strength-scoring algorithm to rank levels by importance. Daily levels receive the highest weighting (2.0), followed by previous daily levels (1.5), pivot points (1.0), and psychological levels (0.5). This helps traders focus on the most significant levels.
Visual Elements:
Solid lines = Strong levels
Dashed lines = Medium levels
Dotted lines = Weak levels
Optional technical condition markers for educational analysis
Best Used For:
Identifying key intraday levels for futures trading
Finding high-probability reversal zones
Setting logical stop-loss and take-profit levels
Recognizing confluence areas for stronger setups
Note:
This is a technical analysis tool for educational purposes. No indicator can predict future price movements. Always use proper risk management and combine with other forms of analysis.
SHMA + Cassure de Support (Long Only)SHMA Support Breakout Strategy (Long Only)
📈 Strategy based on a dynamic support breakout combined with a proprietary SHMA (Schrödinger Harmonic Moving Average) exit filter.
Entry: price crossing above a recently recognized pivot‑low support.
Exit options:
- Immediate on Stop Loss.
- On Take Profit: either exit immediately or wait for a bearish SHMA cross‑under (configurable).
This is a long‑only strategy. All logic is implemented through user‑configurable inputs: support detection (left/right bars), TP/SL levels, SHMA length and quantum alpha, and optional SHMA exit behavior.
Everything is documented and original—this script is not a simple mash‑up of standard indicators, but a unique strategy applying quantum harmonic feedback.
⚠️ Backtest only, no guarantee of future results. Use realistic commission/slippage, and risk sizing per trade (≤ 5 % of equity) are recommended.
Forever Model [Pro+] (Sniper) Blueprint//@version=5
indicator("Forever Model Replica", overlay=true, dynamic_requests=true)
// Inputs
nasdaq = input.string("NASDAQ:NDX", "Nasdaq Symbol")
dow = input.string("DJ:DJI", "Dow Jones Symbol")
sp500 = input.string("SP:SPX", "S&P 500 Symbol")
fvg_min_range = input.float(0.5, "Min FVG Range (% of ATR)", minval=0.1)
bias = input.string("Neutral", "Directional Bias", options= )
session_filter = input.bool(true, "Filter by US Session (9 AM–5 PM UTC)")
start_hour = input.int(9, "Start Hour (UTC)", minval=0, maxval=23)
end_hour = input.int(17, "End Hour (UTC)", minval=0, maxval=23)
// ATR and Time Filter
atr = ta.atr(14)
in_time_window = not session_filter or (hour >= start_hour and hour <= end_hour)
// Arrays for active zones (FVGs and OBs)
var active_tops = array.new_float(0)
var active_bottoms = array.new_float(0)
var active_types = array.new_string(0)
var active_boxes = array.new_box(0)
// Pre-fetch price data for 14 bars for each timeframe
var float high_series_1h = array.new_float(14)
var float low_series_1h = array.new_float(14)
var float high_series_4h = array.new_float(14)
var float low_series_4h = array.new_float(14)
var float high_series_d = array.new_float(14)
var float low_series_d = array.new_float(14)
array.set(high_series_1h, 0, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 0, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 1, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 1, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 2, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 2, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 3, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 3, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 4, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 4, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 5, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 5, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 6, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 6, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 7, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 7, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 8, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 8, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 9, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 9, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 10, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 10, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 11, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 11, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 12, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 12, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_1h, 13, request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on))
array.set(low_series_1h, 13, request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 0, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 0, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 1, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 1, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 2, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 2, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 3, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 3, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 4, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 4, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 5, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 5, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 6, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 6, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 7, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 7, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 8, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 8, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 9, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 9, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 10, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 10, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 11, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 11, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 12, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 12, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_4h, 13, request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on))
array.set(low_series_4h, 13, request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 0, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 0, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 1, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 1, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 2, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 2, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 3, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 3, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 4, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 4, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 5, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 5, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 6, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 6, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 7, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 7, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 8, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 8, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 9, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 9, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 10, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 10, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 11, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 11, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 12, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 12, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
array.set(high_series_d, 13, request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on))
array.set(low_series_d, 13, request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on))
// Manual ATR calculation function (simplified for 14 periods)
manual_atr(high_series, low_series) =>
var float tr_sum = 0.0
for i = 0 to 13
high_prev = nz(array.get(high_series, i + 1), array.get(high_series, i))
low_prev = nz(array.get(low_series, i + 1), array.get(low_series, i))
tr = math.max(array.get(high_series, i), high_prev) - math.min(array.get(low_series, i), low_prev)
tr_sum := tr_sum + tr
tr_sum / 14 // Average True Range over 14 periods
// FVG Detection for Higher Timeframes (1H, 4H, D)
// 1H (60 minutes)
atr_1h = manual_atr(high_series_1h, low_series_1h)
low_1h = request.security(syminfo.tickerid, "60", low, lookahead=barmerge.lookahead_on)
high_1h = request.security(syminfo.tickerid, "60", high , lookahead=barmerge.lookahead_on)
close_1h = request.security(syminfo.tickerid, "60", close , lookahead=barmerge.lookahead_on)
open_1h = request.security(syminfo.tickerid, "60", open , lookahead=barmerge.lookahead_on)
low_1h_bear = request.security(syminfo.tickerid, "60", low , lookahead=barmerge.lookahead_on)
high_1h_bear = request.security(syminfo.tickerid, "60", high, lookahead=barmerge.lookahead_on)
fvg_bull_1h = low_1h > high_1h and close_1h > open_1h and (low_1h - high_1h) >= fvg_min_range * atr_1h and (low_1h - high_1h) > 0
fvg_bear_1h = high_1h_bear < low_1h_bear and close_1h < open_1h and (low_1h_bear - high_1h_bear) >= fvg_min_range * atr_1h and (low_1h_bear - high_1h_bear) > 0
new_fvg_bull_1h = fvg_bull_1h and not fvg_bull_1h
new_fvg_bear_1h = fvg_bear_1h and not fvg_bear_1h
if new_fvg_bull_1h and in_time_window and (bias == "Bullish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_1h)
array.push(active_bottoms, high_1h)
array.push(active_types, "fvg_bullish")
new_box = box.new(left=bar_index, top=low_1h, right=bar_index+10, bottom=high_1h, bgcolor=color.new(color.green, 80))
array.push(active_boxes, new_box)
if new_fvg_bear_1h and in_time_window and (bias == "Bearish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_1h_bear)
array.push(active_bottoms, high_1h_bear)
array.push(active_types, "fvg_bearish")
new_box = box.new(left=bar_index, top=low_1h_bear, right=bar_index+10, bottom=high_1h_bear, bgcolor=color.new(color.red, 80))
array.push(active_boxes, new_box)
// 4H (240 minutes)
atr_4h = manual_atr(high_series_4h, low_series_4h)
low_4h = request.security(syminfo.tickerid, "240", low, lookahead=barmerge.lookahead_on)
high_4h = request.security(syminfo.tickerid, "240", high , lookahead=barmerge.lookahead_on)
close_4h = request.security(syminfo.tickerid, "240", close , lookahead=barmerge.lookahead_on)
open_4h = request.security(syminfo.tickerid, "240", open , lookahead=barmerge.lookahead_on)
low_4h_bear = request.security(syminfo.tickerid, "240", low , lookahead=barmerge.lookahead_on)
high_4h_bear = request.security(syminfo.tickerid, "240", high, lookahead=barmerge.lookahead_on)
fvg_bull_4h = low_4h > high_4h and close_4h > open_4h and (low_4h - high_4h) >= fvg_min_range * atr_4h and (low_4h - high_4h) > 0
fvg_bear_4h = high_4h_bear < low_4h_bear and close_4h < open_4h and (low_4h_bear - high_4h_bear) >= fvg_min_range * atr_4h and (low_4h_bear - high_4h_bear) > 0
new_fvg_bull_4h = fvg_bull_4h and not fvg_bull_4h
new_fvg_bear_4h = fvg_bear_4h and not fvg_bear_4h
if new_fvg_bull_4h and in_time_window and (bias == "Bullish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_4h)
array.push(active_bottoms, high_4h)
array.push(active_types, "fvg_bullish")
new_box = box.new(left=bar_index, top=low_4h, right=bar_index+10, bottom=high_4h, bgcolor=color.new(color.green, 80))
array.push(active_boxes, new_box)
if new_fvg_bear_4h and in_time_window and (bias == "Bearish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_4h_bear)
array.push(active_bottoms, high_4h_bear)
array.push(active_types, "fvg_bearish")
new_box = box.new(left=bar_index, top=low_4h_bear, right=bar_index+10, bottom=high_4h_bear, bgcolor=color.new(color.red, 80))
array.push(active_boxes, new_box)
// Daily (D)
atr_d = manual_atr(high_series_d, low_series_d)
low_d = request.security(syminfo.tickerid, "D", low, lookahead=barmerge.lookahead_on)
high_d = request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on)
close_d = request.security(syminfo.tickerid, "D", close , lookahead=barmerge.lookahead_on)
open_d = request.security(syminfo.tickerid, "D", open , lookahead=barmerge.lookahead_on)
low_d_bear = request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on)
high_d_bear = request.security(syminfo.tickerid, "D", high, lookahead=barmerge.lookahead_on)
fvg_bull_d = low_d > high_d and close_d > open_d and (low_d - high_d) >= fvg_min_range * atr_d and (low_d - high_d) > 0
fvg_bear_d = high_d_bear < low_d_bear and close_d < open_d and (low_d_bear - high_d_bear) >= fvg_min_range * atr_d and (low_d_bear - high_d_bear) > 0
new_fvg_bull_d = fvg_bull_d and not fvg_bull_d
new_fvg_bear_d = fvg_bear_d and not fvg_bear_d
if new_fvg_bull_d and in_time_window and (bias == "Bullish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_d)
array.push(active_bottoms, high_d)
array.push(active_types, "fvg_bullish")
new_box = box.new(left=bar_index, top=low_d, right=bar_index+10, bottom=high_d, bgcolor=color.new(color.green, 80))
array.push(active_boxes, new_box)
if new_fvg_bear_d and in_time_window and (bias == "Bearish" or bias == "Neutral") and barstate.isconfirmed
array.push(active_tops, low_d_bear)
array.push(active_bottoms, high_d_bear)
array.push(active_types, "fvg_bearish")
new_box = box.new(left=bar_index, top=low_d_bear, right=bar_index+10, bottom=high_d_bear, bgcolor=color.new(color.red, 80))
array.push(active_boxes, new_box)
// FVG Detection for Current Timeframe (15M)
gap_bull_15m = low - high
gap_bear_15m = low - high
fvg_bull_15m = low > high and close > open and gap_bull_15m >= fvg_min_range * atr and gap_bull_15m > 0 and barstate.isconfirmed
fvg_bear_15m = high < low and close < open and gap_bear_15m >= fvg_min_range * atr and gap_bear_15m > 0 and barstate.isconfirmed
if fvg_bull_15m and in_time_window and (bias == "Bullish" or bias == "Neutral")
array.push(active_tops, low)
array.push(active_bottoms, high )
array.push(active_types, "fvg_bullish")
new_box = box.new(left=bar_index, top=low, right=bar_index+10, bottom=high , bgcolor=color.new(color.green, 80))
array.push(active_boxes, new_box)
if fvg_bear_15m and in_time_window and (bias == "Bearish" or bias == "Neutral")
array.push(active_tops, low )
array.push(active_bottoms, high)
array.push(active_types, "fvg_bearish")
new_box = box.new(left=bar_index, top=low , right=bar_index+10, bottom=high, bgcolor=color.new(color.red, 80))
array.push(active_boxes, new_box)
// OB Detection for Current Timeframe (15M)
htf_sweep_bull = request.security(syminfo.tickerid, "60", low < low and close > high , lookahead=barmerge.lookahead_on)
htf_sweep_bear = request.security(syminfo.tickerid, "60", high > high and close < low , lookahead=barmerge.lookahead_on)
is_bull_ob = low < low and close > open and close > high and htf_sweep_bull and barstate.isconfirmed
is_bear_ob = high > high and close < open and close < low and htf_sweep_bear and barstate.isconfirmed
if is_bull_ob and in_time_window and (bias == "Bullish" or bias == "Neutral")
array.push(active_tops, high)
array.push(active_bottoms, low)
array.push(active_types, "ob_bullish")
new_box = box.new(left=bar_index, top=high, right=bar_index+10, bottom=low, bgcolor=color.new(color.blue, 80))
array.push(active_boxes, new_box)
if is_bear_ob and in_time_window and (bias == "Bearish" or bias == "Neutral")
array.push(active_tops, high)
array.push(active_bottoms, low)
array.push(active_types, "ob_bearish")
new_box = box.new(left=bar_index, top=high, right=bar_index+10, bottom=low, bgcolor=color.new(color.orange, 80))
array.push(active_boxes, new_box)
// SMT Divergence Detection
nasdaq_l = request.security(nasdaq, "15", low, lookahead=barmerge.lookahead_on)
nasdaq_h = request.security(nasdaq, "15", high, lookahead=barmerge.lookahead_on)
dow_l = request.security(dow, "15", low, lookahead=barmerge.lookahead_on)
dow_h = request.security(dow, "15", high, lookahead=barmerge.lookahead_on)
sp500_l = request.security(sp500, "15", low, lookahead=barmerge.lookahead_on)
sp500_h = request.security(sp500, "15", high, lookahead=barmerge.lookahead_on)
bull_div_n = low < low and nasdaq_l > nasdaq_l
bull_div_d = low < low and dow_l > dow_l
bull_div_s = low < low and sp500_l > sp500_l
bear_div_n = high > high and nasdaq_h < nasdaq_h
bear_div_d = high > high and dow_h < dow_h
bear_div_s = high > high and sp500_h < sp500_h
div_count_bull = (bull_div_n ? 1 : 0) + (bull_div_d ? 1 : 0) + (bull_div_s ? 1 : 0)
div_count_bear = (bear_div_n ? 1 : 0) + (bear_div_d ? 1 : 0) + (bear_div_s ? 1 : 0)
smt_bull = div_count_bull >= 2 and in_time_window and (bias == "Bullish" or bias == "Neutral") and barstate.isconfirmed
smt_bear = div_count_bear >= 2 and in_time_window and (bias == "Bearish" or bias == "Neutral") and barstate.isconfirmed
plotshape(smt_bull, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(smt_bear, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Mitigation Logic for Active Zones
for i = array.size(active_tops) - 1 to 0
type = array.get(active_types, i)
top = array.get(active_tops, i)
bottom = array.get(active_bottoms, i)
if (type == "fvg_bullish" and close < bottom) or (type == "fvg_bearish" and close > top) or (type == "ob_bullish" and close < bottom) or (type == "ob_bearish" and close > top)
box.delete(array.get(active_boxes, i))
array.remove(active_tops, i)
array.remove(active_bottoms, i)
array.remove(active_types, i)
array.remove(active_boxes, i)
// Array Size Limit
if array.size(active_boxes) > 50
box.delete(array.get(active_boxes, 0))
array.remove(active_tops, 0)
array.remove(active_bottoms, 0)
array.remove(active_types, 0)
array.remove(active_boxes, 0)
// Alerts
alertcondition(fvg_bull_15m or fvg_bull_1h or fvg_bull_4h or fvg_bull_d, "Bullish FVG Detected", "Bullish FVG on {{ticker}}")
alertcondition(fvg_bear_15m or fvg_bear_1h or fvg_bear_4h or fvg_bear_d, "Bearish FVG Detected", "Bearish FVG on {{ticker}}")
alertcondition(is_bull_ob, "Bullish OB Detected", "Bullish OB on {{ticker}}")
alertcondition(is_bear_ob, "Bearish OB Detected", "Bearish OB on {{ticker}}")
alertcondition(smt_bull, "Bullish SMT Divergence", "Bullish SMT Divergence on {{ticker}}")
alertcondition(smt_bear, "Bearish SMT Divergence", "Bearish SMT Divergence on {{ticker}}")
ShadowStats vs Official CPI YoY%This chart visualizes and compares the year-over-year (YoY) percentage change in the Consumer Price Index (CPI) as calculated by the U.S. government versus the alternative methodology used by ShadowStats, which reflects pre-1980 inflation measurement techniques. The red line represents ShadowStats' CPI YoY% estimates, while the blue line shows the official CPI YoY% reported by government sources. This side-by-side view highlights the divergence in reported inflation rates over time, particularly from the 1980s onward, offering a visual representation of how different calculation methods can lead to vastly different interpretations of inflation and purchasing power loss.
Наклонные уровниSloping levels indicator. With the ability to display multiple levels on different ranges
telegram @megavk
My Own Trading Principles - for Avoiding Emotional TradingThis indicator lets you clearly mark your personal trading principles right on the chart.
Far too often, traders dive into the market without clear guidelines, only to find themselves facing substantial losses and ultimately stepping away discouraged.
Imagine having your own carefully-crafted set of trading rules?tailored just for you. By adhering to these principles, you can better manage risks, limit losses, and build a sustainable, long-term approach to trading.
Writing notes on your monitor or jotting them down on random sticky pads can be forgettable?and let's admit it, we've all misplaced a note or two! Why not keep your rules clearly visible directly on your chart, guiding your trades with consistency and confidence?
When I first began trading, my mentors consistently emphasized the importance of having my own set of trading principles. And guess what?they were right! It really does matter.
I've included numerous menu options so you can freely customize its appearance.
This script is open-source; feel free to modify and adapt it to your own needs.
DP_ORB Entry & Exit IndicatorDisclaimer:
This indicator is for educational purposes only. It does not constitute financial advice. Always do your own research and manage your risk. Also, I cannot take full credit for 'ORB' as its a well known strategy amongst many traders, but I do need to give a special shout out to @TheBigDaddyMax for putting me on to this.
DP_ORB Entry & Exit Indicator
Description:
The DP_ORB Entry & Exit Indicator is a powerful tool designed for traders who utilize the Opening Range Breakout (ORB) strategy on the NYSE session. This indicator visually identifies the initial volatility window of the trading day, by marking the 15m High, and 15m Low into a ORB Box, & then tracks breakout opportunities, and provides clear, dynamic trade management levels—all directly on your chart.
Key Features:
Automatic Opening Range (ORB) Box:
Identifies and plots the high and low of the user-defined opening range (default 9:30–9:45 NYSE) for visual reference and strategy foundation.
Breakout Entry Signals:
Automatically detects and marks long or short breakout entries when price closes above or below the ORB range, with additional momentum confirmation.
Dynamic Stop Loss:
Stop loss is intelligently set to the previous bar’s low for long trades (or high for shorts), adapting to market structure at entry.
Take Profit Targets:
Up to three fully adjustable take-profit levels are plotted, calculated as percentages from entry, supporting progressive trade management.
Visual Trade Management:
Entry, stop loss, and take profit levels are displayed as extending dashed lines from entry point to the current bar, with labels always shown just to the right of price for clarity on all timeframes.
Automatic Reset and Cleanup:
Visuals and logic reset daily and upon exit, ensuring a clean, uncluttered chart experience.
How to Use:
Set your preferred opening range time and take profit levels in the settings.
Wait for a breakout and confirmation during the NYSE session.
Use the on-chart lines and labels to manage your trade according to your risk and strategy plan.
Best For:
Day traders and scalpers seeking a disciplined, visual, and fully-automated approach to opening range breakout trading.
5-Minute Momentum Indicator ($1000 Entry + 20% TP + 9:30 Exit)Showing entry candle and displaying entry, TP, and SL
Customized ATR Trailing Stop with Fixed ATR DisplayCustomized ATR Trailing Stop with Fixed ATR Display
SHMA Quantique – Schrödinger Moving AverageAn experimental moving average inspired by the Schrödinger model. Reacts to momentum and filters noise on small timeframes. Ideal for scalping. 1 minute and up.
Multi-TF Bullish Dashboard ✅🔼back test gives good results but try the indicator and give me the feedback