Trade Pivot ProEnglish (required first):
Trade Pivot Pro is a comprehensive indicator that combines advanced Pivot Point calculations, Moving Averages (SMA & EMA), ATR-based volatility bands, time cycle logic, and customizable alerts.
Key Features
Pivot Points: Multiple calculation methods (Traditional, Fibonacci, Woodie, Classic, DM, Camarilla).
Flexible Time Cycles: Automatic pivot anchoring based on chart timeframe, plus manual options (Daily, Weekly, Monthly, Quarterly, Yearly, Bi-yearly, Tri-yearly, Quinquennial, Decennial).
Moving Averages: Four configurable SMA/EMA lines (21, 50, 100, 200 periods) with slope detection.
ATR Bands: Dynamic upper and lower bands plotted around price to visualize volatility.
Alerts:
MA slope changes (Up/Down).
Pivot + 200 SMA trend confirmation.
ATR volatility threshold (High/Low).
Combined Pivot + SMA + ATR strong trend alerts.
Time Cycles
Chart Timeframe Pivot Timeframe
10s 15 minutes
1m 1 hour
5m 4 hours
15m 1 day
1h 1 week
4h 1 week
1D 1 month
1W 3 months
1M 1 year
This indicator helps traders identify trend direction, volatility conditions, time cycles, and key support/resistance levels in one unified tool. It is suitable for intraday and higher timeframes, with options to use daily-based or intraday pivot values.
Note: This script is free of advertisements and intended purely for educational and trading analysis purposes.
Analisis Tren
Multiple Moving Averages by BadshahIntroduction Streamline your technical analysis with the Quintuple MA Strategy Suite, a robust all-in-one utility designed to maximize chart efficiency. Instead of cluttering your workspace with multiple individual indicators, this script empowers you to deploy up to five fully customizable Moving Averages simultaneously. Whether you are tracking micro-trends for scalping or major baselines for swing trading, this tool adapts to every timeframe and style.
Core Features
5-in-1 Architecture: Run five independent moving averages at once, saving your precious indicator slots for other tools.
Hybrid Calculation Modes: Instantly toggle any line between Simple Moving Average (SMA) for smooth baselines and Exponential Moving Average (EMA) for weight-sensitive reactions to recent price action.
Smart labeling System: Features an intelligent labeling mechanism that places text tags slightly offset from the current price. This ensures you can instantly identify which line is which (e.g., "EMA 50" vs "SMA 200") without the text obscuring the latest candles.
Granular Control: Every aspect is customizable. You can independently adjust the Length, Source (Close, Open, High, Low, etc.), Color, and Visibility for each of the five MAs.
Practical Use Cases
The "Golden Cross" Setup: Enable MA 3 (50 Length) and MA 5 (200 Length) to automatically visually track major trend reversals.
Ribbon Trading: Enable all five lines with sequential lengths (e.g., 20, 50, 100, 150, 200) to create a "Moving Average Ribbon," visualizing the strength and direction of the trend expansion.
Scalping Cross: Use MA 1 and MA 2 set to fast lengths (like 9 and 21) to catch rapid momentum shifts.
Settings Guide
Show MA: Toggles the visibility of the specific line.
Show Label: Toggles the text tag next to the line (auto-offset by 5 bars).
Type: Select between SMA or EMA calculation.
Length: Define the lookback period for the average.
Disclaimer This script is provided for educational and analytical purposes only. Past performance of indicators does not guarantee future results. Trade responsibly.
VCP Trendline breakoutThe Signal:
Green Triangles indicate the price is approaching the trendline (Watchlist candidate).
Yellow Triangles indicate the price is very tight against the line (Execution imminent).
The Trigger: When price closes above the Grey Dotted Line, the line stops extending. This is your breakout signal.
Indicator Overview
The The VCP Trendline breakout indicator is a sophisticated technical indicator designed for trend followers and breakout traders (O'Neil, Minervini, Wyckoff styles). This script employs a State Machine logic to identify structural Volatility Contraction Patterns (VCP) in real-time.
It automatically detects valid Bases, tracks the "Right Side" construction, identifies nested handles (contractions), and draws precise supply trendlines—while strictly enforcing structural integrity rules (Higher Lows).
Core Logic & Features
1. Smart Base Detection
Trend Filter: The pattern recognition engine only activates when the price is above the 200 SMA, ensuring you are trading with the primary trend.
Base Validation: It identifies a "Base High" (H1) based on a configurable lookback period. It tracks the depth of the base and automatically invalidates the pattern if the drawdown exceeds the user-defined threshold (default 30%).
2. Recursive Nested Trendlines (VCP)
The indicator is capable of drawing Nested Trendlines (recursive resistance). It doesn't just draw a line from the peak; it identifies internal contractions within the base.
H1 (Primary): The main supply line from the top of the base.
H2, H3 (Internal): Trendlines connecting subsequent lower highs (handles) as volatility contracts.
Smart Fan: Includes a "Clean Fan" mode to show only the most relevant, latest trendline per anchor point.
3. Structural Integrity Enforcement (The "Higher Low" Rule)
This is the standout feature of this script. It performs an Anchor Integrity Check on every bar.
In a valid VCP, every contraction must form a Higher Low.
If the price creates a new pivot (H3) but then crashes lower than the previous contraction's floor (H2), the script identifies this as a Structural Failure.
Auto-Deletion: It immediately retroactively deletes the invalid trendlines associated with that failed contraction, keeping your chart clean and free of "ghost" signals.
4. "Right-Side" Logic
Collision Detection: Trendlines are calculated using "Right-Side Clearance." A line is only drawn if the path from the anchor to the new pivot is unobstructed by price action.
Signal Protection: "Watch" and "Near" signals are suppressed during the decline phase (Left Side). They only appear once the "Bottom" (L1) has been confirmed and price is recovering on the Right Side.
5. Proximity Alerts & Breakouts
Watch Zone (Green Triangle): Appears when the Low of the bar is within 8% (configurable) of a valid trendline.
Near Zone (Yellow Triangle): Appears when the Low of the bar is within 4% (configurable) of a valid trendline.
Breakout Stop: Trendlines are dynamic. The moment a bar closes above a trendline, the line stops extending immediately, marking the exact breakout point.
How to Use This Indicator
The Setup: Look for a stock in an uptrend (Price > 200 SMA).
The Construction: Wait for the script to identify the Base High (H1). As the price corrects and begins to recover, you will see Grey Dotted Lines appear, connecting the highs.
The Contraction: Watch for Nested Trendlines. If you see a second or third line form from a lower high (H2, H3), it indicates a tightening of price action (VCP).
Settings Configuration
Moving Averages
21 EMA, 50 SMA, 200 SMA: Built-in reference averages.
Base Settings
H1 Lookback: How many bars back the script looks to find the "Start" of the base (Default: 21). Increase this for longer-term bases.
Sub-High Pivot Bars: Controls the sensitivity of identifying internal highs (handles).
Max Base Depth: If the base drops more than this % (Default: 30%), the structure is considered failed and lines are removed.
Enable Nested Trendlines: Toggle ON to see internal VCP lines (H2, H3). Toggle OFF to see only the main H1 trendline.
Show Only Latest Line: Keeps the chart clean by removing older lines from the same anchor point.
Visuals & Signals
Near/Watch Zone %: Adjust the sensitivity of the Green/Yellow triangles.
Signal Size: Change the size of the triangle markers.
DISCLAIMER
This is an indicator, not a trading system. Apply good risk management and do your own due diligence before putting your hard earned money into anything.
This script is for educational and analytical purposes only. It does not constitute financial advice. Automated pattern recognition has limitations and should always be verified visually.
SMC Indicator by BadshahIntroduction
Unlock the hidden narrative of price action with this focused Smart Money Concepts (SMC) toolkit. Designed for precision and clarity, this indicator strips away chart noise to reveal the "skeleton" of the market. Whether you are tracking trend continuations or hunting for valid reversals, this tool automates the technical heavy lifting, allowing you to focus purely on execution.
How It Works
This script analyzes price action in real-time to map out two critical components of institutional trading:
1. Market Structure Architecture The indicator uses a rolling pivot algorithm to identify significant Highs and Lows based on your preferred sensitivity.
BOS (Break of Structure): Marks the confirmation of trend momentum. A solid line is drawn when price successfully closes beyond a structural pivot in the direction of the trend (e.g., breaking a high in an uptrend).
ChoCh (Change of Character): signals a potential shift in market sentiment. A dashed line appears when price violates a key swing point opposite to the prevailing trend, often the first sign of a reversal.
2. Liquidity Inefficiencies (FVG) The script scans every candle formation to detect Fair Value Gaps (Imbalances)—zones where aggressive buying or selling occurred without reciprocal trading.
Bullish Gaps: Highlighted when a candle's low fails to overlap with the high of the candle two periods prior.
Bearish Gaps: Highlighted when a candle's high fails to overlap with the low of the candle two periods prior.
These boxes extend forward, serving as high-probability "magnets" for price to revisit and rebalance.
Settings & Customization
Swing Length: Adjust the lookback period to tune the indicator for Scalping (lower values) or Swing Trading (higher values).
Visual Control: Toggle specific features (BOS, ChoCh, FVG) on or off and fully customize colors to blend with your chart theme.
Disclaimer
This indicator is strictly for analytical and educational purposes. It visualizes historical and real-time data but does not guarantee future market movements. Always manage your risk responsibly.
Institutional 50: The Truth TellerOverview This is a comprehensive "Fusion Strategy" overlay designed to filter out false breakouts and catch high-probability trends. It upgrades the classic EMA 50 Cross Strategy by "locking" the signal with Institutional Volume Flow (VFI) and adding an automated Fibonacci safety guard.
The Problem Standard moving average strategies often fail in two scenarios:
Fakeouts: Price crosses the line, but there is no real volume backing the move.
Choppy Markets: The price dances around the line, generating multiple false signals.
The Solution: Triple-Layer Filtering This indicator solves these issues using a strict logic:
The Trigger (EMA 50): The primary signal is generated when price crosses the EMA 50.
The Lock (VFI Filter): A signal is ONLY valid if the Volume Flow Indicator (VFI) confirms the direction (Positive for Buy, Negative for Sell). If price crosses but VFI disagrees, the line turns GRAY, warning of a "Empty Rally" or "Bear Trap."
The Safety (Fib Guard): The system automatically draws invisible Fibonacci retracement levels based on recent price action. If a trend reverses and breaks the Golden Ratio (0.618), a Yellow Warning Arrow appears, signaling a potential trend failure.
Anti-Chop Filter: It calculates the slope of the EMA. If the market is flat/ranging, the line turns WHITE and signals are suppressed.
Visual Guide & Legend
🟢 Green Line + BUY Label: Confirmed Uptrend (Price > EMA 50 + Positive Institutional Volume).
🔴 Red Line + SELL Label: Confirmed Downtrend (Price < EMA 50 + Negative Institutional Volume).
⚪ Gray Line: CAUTION. Price has crossed the EMA, but Volume does NOT confirm. Do not enter.
⬜ White Line / Background: CHOP ZONE. The market is ranging/flat. No trades.
⚠️ Yellow Arrows (EXIT?): The price has moved against the trend and broken key Fibonacci Support/Resistance. Consider tightening stops or exiting.
Best For:
Trend Following on 1H, 4H, and Daily timeframes.
Traders looking to filter out "Noise" and focus only on Volume-Backed moves.
7 hours ago
Release Notes
Update: Visual Risk Management (The Fade Effect)
This update transforms the indicator from a simple Trend Follower into a Dynamic Momentum Monitor. Instead of just telling you "Up" or "Down," the line now visually communicates the strength of the trend in real-time.
The Logic: Main Trend vs. Immediate Momentum We introduced a secondary, faster engine in the background (EMA 13) to act as a "Pulse Check" against the Main Trend (EMA 50).
How to Read the Line:
1. Solid, Bright Line (Full Opacity) = "Full Throttle" 🟢🔴
Condition: Price is respecting BOTH the Main Trend (50) and the Fast Momentum (13).
Meaning: The trend is healthy and accelerating. Hold your position with confidence.
2. Faded, Transparent Line (Ghost Mode) = "Deceleration Warning" ⚠️
Condition: Price is still respecting the Main Trend (50), BUT has broken the Fast Momentum (13).
Meaning: The trend is getting tired. The major direction hasn't flipped yet, but the immediate momentum is gone.
Action: This is your Early Warning Signal. Consider tightening stops, taking partial profits, or preparing for a potential reversal. Do not add to positions when the line is faded.
Summary:
Bright Green: Strong Buy.
Faded Green: Weakening Uptrend (Caution).
Bright Red: Strong Sell.
Faded Red: Weakening Downtrend (Caution).
Khango's Key//@version=5
//@sbtnc thank you for doing the base code
//Added additional levels for convienience sake.
indicator('Key Levels SpacemanBTC IDWM', shorttitle='Khangos Key', overlay=true, max_lines_count=100)
//35 works
displayStyle = input.string(defval='Standard', title='Display Style', options= , inline='Display')
mergebool = input.bool(defval=true, title='Merge Levels?', inline='Display')
distanceright = input.int(defval=30, title='Distance', minval=5, maxval=500, inline='Dist')
radistance = input.int(defval=250, title='Anchor Distance', minval=5, maxval=500, inline='Dist')
labelsize = input.string(defval='Medium', title='Text Size', options= )
linesize = input.string(defval='Small', title='Line Width', options= , inline='Line')
linestyle = input.string(defval='Solid', title='Line Style', options= , inline='Line')
GlobalTextType = input.bool(defval=false, title='Global Text ShortHand', tooltip='Enable for shorthand text on all text')
var globalcoloring = input.bool(defval=false, title='Global Coloring', tooltip='Enable for all color controls via one color', inline='GC')
GlobalColor = input.color(title='', defval=color.white, inline='GC')
//var show_tails = input(defval = false, title = "Always Show", type = input.bool)
= request.security(syminfo.tickerid, 'D', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'D', [time , high ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'D', [time , low ], lookahead=barmerge.lookahead_on)
cdailyh_open = request.security(syminfo.tickerid, 'D', high, lookahead=barmerge.lookahead_on)
cdailyl_open = request.security(syminfo.tickerid, 'D', low, lookahead=barmerge.lookahead_on)
var monday_time = time
var monday_high = high
var monday_low = low
= request.security(syminfo.tickerid, 'W', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'W', [time , high ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'W', [time , low ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'M', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'M', [time , high ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, 'M', [time , low ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '3M', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '3M', [time , high ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '3M', [time , low ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '12M', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '12M', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '12M', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '240', , lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '240', [time , high ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, '240', [time , low ], lookahead=barmerge.lookahead_on)
//------------------------------ Inputs -------------------------------
var is_intra_enabled = input.bool(defval=false, title='Open', group='4H', inline='4H')
var is_intrarange_enabled = input.bool(defval=false, title='Prev H/L', group='4H', inline='4H')
var is_intram_enabled = input.bool(defval=false, title='Prev Mid', group='4H', inline='4H')
IntraTextType = input.bool(defval=false, title='ShortHand', group='4H', inline='4Hsh')
var is_daily_enabled = input.bool(defval=true, title='Open', group='Daily', inline='Daily')
var is_dailyrange_enabled = input.bool(defval=false, title='Prev H/L', group='Daily', inline='Daily')
var is_dailym_enabled = input.bool(defval=false, title='Prev Mid', group='Daily', inline='Daily')
DailyTextType = input.bool(defval=false, title='ShortHand', group='Daily', inline='Dailysh')
var is_monday_enabled = input.bool(defval=true, title='Range', group='Monday Range', inline='Monday')
var is_monday_mid = input.bool(defval=true, title='Mid', group='Monday Range', inline='Monday')
var untested_monday = false
MondayTextType = input.bool(defval=false, title='ShortHand', group='Monday Range', inline='Mondaysh')
var is_weekly_enabled = input.bool(defval=true, title='Open', group='Weekly', inline='Weekly')
var is_weeklyrange_enabled = input.bool(defval=true, title='Prev H/L', group='Weekly', inline='Weekly')
var is_weekly_mid = input.bool(defval=true, title='Prev Mid', group='Weekly', inline='Weekly')
WeeklyTextType = input.bool(defval=false, title='ShortHand', group='Weekly', inline='Weeklysh')
var is_monthly_enabled = input.bool(defval=true, title='Open', group='Monthly', inline='Monthly')
var is_monthlyrange_enabled = input.bool(defval=true, title='Prev H/L', group='Monthly', inline='Monthly')
var is_monthly_mid = input.bool(defval=true, title='Prev Mid', group='Monthly', inline='Monthly')
MonthlyTextType = input.bool(defval=false, title='ShortHand', group='Monthly', inline='Monthlysh')
var is_quarterly_enabled = input.bool(defval=true, title='Open', group='Quarterly', inline='Quarterly')
var is_quarterlyrange_enabled = input.bool(defval=false, title='Prev H/L', group='Quarterly', inline='Quarterly')
var is_quarterly_mid = input.bool(defval=true, title='Prev Mid', group='Quarterly', inline='Quarterly')
QuarterlyTextType = input.bool(defval=false, title='ShortHand', group='Quarterly', inline='Quarterlysh')
var is_yearly_enabled = input.bool(defval=true, title='Open', group='Yearly', inline='Yearly')
var is_yearlyrange_enabled = input.bool(defval=false, title='Current H/L', group='Yearly', inline='Yearly')
var is_yearly_mid = input.bool(defval=true, title='Mid', group='Yearly', inline='Yearly')
YearlyTextType = input.bool(defval=false, title='ShortHand', group='Yearly', inline='Yearlysh')
var is_londonrange_enabled = input.bool(defval=false, title='London Range', group='FX Sessions', inline='FX')
var is_usrange_enabled = input.bool(defval=false, title='New York Range', group='FX Sessions', inline='FX')
var is_asiarange_enabled = input.bool(defval=false, title='Asia Range', group='FX Sessions', inline='FX')
SessionTextType = input.bool(defval=false, title='ShortHand', group='FX Sessions', inline='FXColor')
Londont = input.session("0800-1600", "London Session")
USt = input.session("1400-2100", "New York Session")
Asiat = input.session("0000-0900", "Tokyo Session")
DailyColor = input.color(title='', defval=#08bcd4, group='Daily', inline='Dailysh')
MondayColor = input.color(title='', defval=color.white, group='Monday Range', inline='Mondaysh')
WeeklyColor = input.color(title='', defval=#fffcbc, group='Weekly', inline='Weeklysh')
MonthlyColor = input.color(title='', defval=#08d48c, group='Monthly', inline='Monthlysh')
YearlyColor = input.color(title='', defval=color.red, group='Yearly', inline='Yearlysh')
quarterlyColor = input.color(title='', defval=color.red, group='Quarterly', inline='Quarterlysh')
IntraColor = input.color(title='', defval=color.orange, group='4H', inline='4Hsh')
LondonColor = input.color(title='', defval=color.white, group='FX Sessions', inline='FXColor')
USColor = input.color(title='', defval=color.white, group='FX Sessions', inline='FXColor')
AsiaColor = input.color(title='', defval=color.white, group='FX Sessions', inline='FXColor')
var pdhtext = GlobalTextType or DailyTextType ? 'PDH' : 'Prev Day High'
var pdltext = GlobalTextType or DailyTextType ? 'PDL' : 'Prev Day Low'
var dotext = GlobalTextType or DailyTextType ? 'DO' : 'Daily Open'
var pdmtext = GlobalTextType or DailyTextType ? 'PDM' : 'Prev Day Mid'
var pwhtext = GlobalTextType or WeeklyTextType ? 'PWH' : 'Prev Week High'
var pwltext = GlobalTextType or WeeklyTextType ? 'PWL' : 'Prev Week Low'
var wotext = GlobalTextType or WeeklyTextType ? 'WO' : 'Weekly Open'
var pwmtext = GlobalTextType or WeeklyTextType ? 'PWM' : 'Prev Week Mid'
var pmhtext = GlobalTextType or MonthlyTextType ? 'PMH' : 'Prev Month High'
var pmltext = GlobalTextType or MonthlyTextType ? 'PML' : 'Prev Month Low'
var motext = GlobalTextType or MonthlyTextType ? 'MO' : 'Monthly Open'
var pmmtext = GlobalTextType or MonthlyTextType ? 'PMM' : 'Prev Month Mid'
var pqhtext = GlobalTextType or QuarterlyTextType ? 'PQH' : 'Prev Quarter High'
var pqltext = GlobalTextType or QuarterlyTextType ? 'PQL' : 'Prev Quarter Low'
var qotext = GlobalTextType or QuarterlyTextType ? 'QO' : 'Quarterly Open'
var pqmtext = GlobalTextType or QuarterlyTextType ? 'PQM' : 'Prev Quarter Mid'
var cyhtext = GlobalTextType or YearlyTextType ? 'CYH' : 'Current Year High'
var cyltext = GlobalTextType or YearlyTextType ? 'CYL' : 'Current Year Low'
var yotext = GlobalTextType or YearlyTextType ? 'YO' : 'Yearly Open'
var cymtext = GlobalTextType or YearlyTextType ? 'CYM' : 'Current Year Mid'
var pihtext = GlobalTextType or IntraTextType ? 'P-4H-H' : 'Prev 4H High'
var piltext = GlobalTextType or IntraTextType ? 'P-4H-L' : 'Prev 4H Low'
var iotext = GlobalTextType or IntraTextType ? '4H-O' : '4H Open'
var pimtext = GlobalTextType or IntraTextType ? 'P-4H-M' : 'Prev 4H Mid'
var pmonhtext = GlobalTextType or MondayTextType ? 'MDAY-H' : 'Monday High'
var pmonltext = GlobalTextType or MondayTextType ? 'MDAY-L' : 'Monday Low'
var pmonmtext = GlobalTextType or MondayTextType ? 'MDAY-M' : 'Monday Mid'
var lhtext = GlobalTextType or SessionTextType ? 'Lon-H' : 'London High'
var lltext = GlobalTextType or SessionTextType ? 'Lon-L' : 'London Low'
var lotext = GlobalTextType or SessionTextType ? 'Lon-O' : 'London Open'
var ushtext = GlobalTextType or SessionTextType ? 'NY-H' : 'New York High'
var usltext = GlobalTextType or SessionTextType ? 'NY-L' : 'New York Low'
var usotext = GlobalTextType or SessionTextType ? 'NY-O' : 'New York Open'
var asiahtext = GlobalTextType or SessionTextType ? 'AS-H' : 'Asia High'
var asialtext = GlobalTextType or SessionTextType ? 'AS-L' : 'Asia Low'
var asiaotext = GlobalTextType or SessionTextType ? 'AS-O' : 'Asia Open'
if globalcoloring == true
DailyColor := GlobalColor
MondayColor := GlobalColor
WeeklyColor := GlobalColor
MonthlyColor := GlobalColor
YearlyColor := GlobalColor
quarterlyColor := GlobalColor
IntraColor := GlobalColor
IntraColor
if weekly_time != weekly_time
untested_monday := false
untested_monday
if is_monday_enabled == true and untested_monday == false
untested_monday := true
monday_time := daily_time
monday_high := cdailyh_open
monday_low := cdailyl_open
monday_low
linewidthint = 1
if linesize == 'Small'
linewidthint := 1
linewidthint
if linesize == 'Medium'
linewidthint := 2
linewidthint
if linesize == 'Large'
linewidthint := 3
linewidthint
var DEFAULT_LINE_WIDTH = linewidthint
var DEFAULT_TAIL_WIDTH = linewidthint
fontsize = size.small
if labelsize == 'Small'
fontsize := size.small
fontsize
if labelsize == 'Medium'
fontsize := size.normal
fontsize
if labelsize == 'Large'
fontsize := size.large
fontsize
linestyles = line.style_solid
if linestyle == 'Dashed'
linestyles := line.style_dashed
linestyles
if linestyle == 'Dotted'
linestyles := line.style_dotted
linestyles
var DEFAULT_LABEL_SIZE = fontsize
var DEFAULT_LABEL_STYLE = label.style_none
var DEFAULT_EXTEND_RIGHT = distanceright
London = time(timeframe.period, Londont)
US = time(timeframe.period, USt)
Asia = time(timeframe.period, Asiat)
var clondonhigh = 0.0
var clondonlow = close
var londontime = time
var flondonhigh = 0.0
var flondonlow = 0.0
var flondonopen = 0.0
var onelondonfalse = false
if London
if high > clondonhigh
clondonhigh := high
clondonhigh
if low < clondonlow
clondonlow := low
clondonlow
if onelondonfalse
londontime := time
flondonopen := open
flondonopen
flondonhigh := clondonhigh
flondonlow := clondonlow
onelondonfalse := false
onelondonfalse
else
if onelondonfalse == false
flondonhigh := clondonhigh
flondonlow := clondonlow
flondonlow
onelondonfalse := true
clondonhigh := 0.0
clondonlow := close
clondonlow
//////////////////////////////////
var cushigh = 0.0
var cuslow = close
var ustime = time
var fushigh = 0.0
var fuslow = 0.0
var fusopen = 0.0
var oneusfalse = false
if US
if high > cushigh
cushigh := high
cushigh
if low < cuslow
cuslow := low
cuslow
if oneusfalse
ustime := time
fusopen := open
fusopen
fushigh := cushigh
fuslow := cuslow
oneusfalse := false
oneusfalse
else
if oneusfalse == false
fushigh := cushigh
fuslow := cuslow
fuslow
oneusfalse := true
cushigh := 0.0
cuslow := close
cuslow
//////////////////////////////////
var casiahigh = 0.0
var casialow = close
var asiatime = time
var fasiahigh = 0.0
var fasialow = 0.0
var fasiaopen = 0.0
var oneasiafalse = false
if Asia
if high > casiahigh
casiahigh := high
casiahigh
if low < casialow
casialow := low
casialow
if oneasiafalse
asiatime := time
fasiaopen := open
fasiaopen
fasiahigh := casiahigh
fasialow := casialow
oneasiafalse := false
oneasiafalse
else
if oneasiafalse == false
fasiahigh := casiahigh
fasialow := casialow
fasialow
oneasiafalse := true
casiahigh := 0.0
casialow := close
casialow
//------------------------------ Plotting ------------------------------
var pricearray = array.new_float(0)
var labelarray = array.new_label(0)
f_LevelMerge(pricearray, labelarray, currentprice, currentlabel, currentcolor) =>
if array.includes(pricearray, currentprice)
whichindex = array.indexof(pricearray, currentprice)
labelhold = array.get(labelarray, whichindex)
whichtext = label.get_text(labelhold)
label.set_text(labelhold, label.get_text(currentlabel) + ' / ' + whichtext)
label.set_text(currentlabel, '')
label.set_textcolor(labelhold, currentcolor)
else
array.push(pricearray, currentprice)
array.push(labelarray, currentlabel)
var can_show_daily = is_daily_enabled and timeframe.isintraday
var can_show_weekly = is_weekly_enabled and not timeframe.isweekly and not timeframe.ismonthly
var can_show_monthly = is_monthly_enabled and not timeframe.ismonthly
get_limit_right(bars) =>
timenow + (time - time ) * bars
// the following code doesn't need to be processed on every candle
if barstate.islast
is_weekly_open = dayofweek == dayofweek.monday
is_monthly_open = dayofmonth == 1
can_draw_daily = (is_weekly_enabled ? not is_weekly_open : true) and (is_monthly_enabled ? not is_monthly_open : true)
can_draw_weekly = is_monthly_enabled ? not(is_monthly_open and is_weekly_open) : true
can_draw_intra = is_intra_enabled
can_draw_intrah = is_intrarange_enabled
can_draw_intral = is_intrarange_enabled
can_draw_intram = is_intram_enabled
pricearray := array.new_float(0)
labelarray := array.new_label(0)
/////////////////////////////////
if is_londonrange_enabled
//label.new(bar_index,high)
london_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
londontime := get_limit_right(radistance)
londontime
var londonh_line = line.new(x1=londontime, x2=london_limit_right, y1=flondonhigh, y2=flondonhigh, color=LondonColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var londonl_line = line.new(x1=londontime, x2=london_limit_right, y1=flondonlow, y2=flondonlow, color=LondonColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var londono_line = line.new(x1=londontime, x2=london_limit_right, y1=flondonopen, y2=flondonopen, color=LondonColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var londonh_label = label.new(x=london_limit_right, y=flondonhigh, text=lhtext, style=DEFAULT_LABEL_STYLE, textcolor=LondonColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var londonl_label = label.new(x=london_limit_right, y=flondonlow, text=lltext, style=DEFAULT_LABEL_STYLE, textcolor=LondonColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var londono_label = label.new(x=london_limit_right, y=flondonopen, text=lotext, style=DEFAULT_LABEL_STYLE, textcolor=LondonColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(londonh_line, londontime)
line.set_x2(londonh_line, london_limit_right)
line.set_y1(londonh_line, flondonhigh)
line.set_y2(londonh_line, flondonhigh)
line.set_x1(londonl_line, londontime)
line.set_x2(londonl_line, london_limit_right)
line.set_y1(londonl_line, flondonlow)
line.set_y2(londonl_line, flondonlow)
line.set_x1(londono_line, londontime)
line.set_x2(londono_line, london_limit_right)
line.set_y1(londono_line, flondonopen)
line.set_y2(londono_line, flondonopen)
label.set_x(londonh_label, london_limit_right)
label.set_y(londonh_label, flondonhigh)
label.set_text(londonh_label, lhtext)
label.set_x(londonl_label, london_limit_right)
label.set_y(londonl_label, flondonlow)
label.set_text(londonl_label, lltext)
label.set_x(londono_label, london_limit_right)
label.set_y(londono_label, flondonopen)
label.set_text(londono_label, lotext)
if mergebool
f_LevelMerge(pricearray, labelarray, flondonhigh, londonh_label, LondonColor)
f_LevelMerge(pricearray, labelarray, flondonlow, londonl_label, LondonColor)
f_LevelMerge(pricearray, labelarray, flondonopen, londono_label, LondonColor)
//////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////
if is_usrange_enabled
//label.new(bar_index,high)
us_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
ustime := get_limit_right(radistance)
ustime
var ush_line = line.new(x1=ustime, x2=us_limit_right, y1=fushigh, y2=fushigh, color=USColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var usl_line = line.new(x1=ustime, x2=us_limit_right, y1=fuslow, y2=fuslow, color=USColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var uso_line = line.new(x1=ustime, x2=us_limit_right, y1=fusopen, y2=fusopen, color=USColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var ush_label = label.new(x=us_limit_right, y=fushigh, text=lhtext, style=DEFAULT_LABEL_STYLE, textcolor=USColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var usl_label = label.new(x=us_limit_right, y=fuslow, text=lltext, style=DEFAULT_LABEL_STYLE, textcolor=USColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var uso_label = label.new(x=us_limit_right, y=fusopen, text=lotext, style=DEFAULT_LABEL_STYLE, textcolor=USColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(ush_line, ustime)
line.set_x2(ush_line, us_limit_right)
line.set_y1(ush_line, fushigh)
line.set_y2(ush_line, fushigh)
line.set_x1(usl_line, ustime)
line.set_x2(usl_line, us_limit_right)
line.set_y1(usl_line, fuslow)
line.set_y2(usl_line, fuslow)
line.set_x1(uso_line, ustime)
line.set_x2(uso_line, us_limit_right)
line.set_y1(uso_line, fusopen)
line.set_y2(uso_line, fusopen)
label.set_x(ush_label, us_limit_right)
label.set_y(ush_label, fushigh)
label.set_text(ush_label, ushtext)
label.set_x(usl_label, us_limit_right)
label.set_y(usl_label, fuslow)
label.set_text(usl_label, usltext)
label.set_x(uso_label, us_limit_right)
label.set_y(uso_label, fusopen)
label.set_text(uso_label, usotext)
if mergebool
f_LevelMerge(pricearray, labelarray, fushigh, ush_label, USColor)
f_LevelMerge(pricearray, labelarray, fuslow, usl_label, USColor)
f_LevelMerge(pricearray, labelarray, fusopen, uso_label, USColor)
/////////////////////////////////
if is_asiarange_enabled
//label.new(bar_index,high)
asia_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
asiatime := get_limit_right(radistance)
asiatime
var asiah_line = line.new(x1=asiatime, x2=asia_limit_right, y1=fasiahigh, y2=fasiahigh, color=AsiaColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var asial_line = line.new(x1=asiatime, x2=asia_limit_right, y1=fasialow, y2=fasialow, color=AsiaColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var asiao_line = line.new(x1=asiatime, x2=asia_limit_right, y1=fasiaopen, y2=fasiaopen, color=AsiaColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var asiah_label = label.new(x=asia_limit_right, y=fasiahigh, text=asiahtext, style=DEFAULT_LABEL_STYLE, textcolor=AsiaColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var asial_label = label.new(x=asia_limit_right, y=fasialow, text=asialtext, style=DEFAULT_LABEL_STYLE, textcolor=AsiaColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
var asiao_label = label.new(x=asia_limit_right, y=fasiaopen, text=asiaotext, style=DEFAULT_LABEL_STYLE, textcolor=AsiaColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(asiah_line, asiatime)
line.set_x2(asiah_line, asia_limit_right)
line.set_y1(asiah_line, fasiahigh)
line.set_y2(asiah_line, fasiahigh)
line.set_x1(asial_line, asiatime)
line.set_x2(asial_line, asia_limit_right)
line.set_y1(asial_line, fasialow)
line.set_y2(asial_line, fasialow)
line.set_x1(asiao_line, asiatime)
line.set_x2(asiao_line, asia_limit_right)
line.set_y1(asiao_line, fasiaopen)
line.set_y2(asiao_line, fasiaopen)
label.set_x(asiah_label, asia_limit_right)
label.set_y(asiah_label, fasiahigh)
label.set_text(asiah_label, asiahtext)
label.set_x(asial_label, asia_limit_right)
label.set_y(asial_label, fasialow)
label.set_text(asial_label, asialtext)
label.set_x(asiao_label, asia_limit_right)
label.set_y(asiao_label, fasiaopen)
label.set_text(asiao_label, asiaotext)
if mergebool
f_LevelMerge(pricearray, labelarray, fasiahigh, asiah_label, AsiaColor)
f_LevelMerge(pricearray, labelarray, fasialow, asial_label, AsiaColor)
f_LevelMerge(pricearray, labelarray, fasiaopen, asiao_label, AsiaColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
if can_draw_intra
intra_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
intra_time := get_limit_right(radistance)
intra_time
var intra_line = line.new(x1=intra_time, x2=intra_limit_right, y1=intra_open, y2=intra_open, color=IntraColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var intra_label = label.new(x=intra_limit_right, y=intra_open, text=iotext, style=DEFAULT_LABEL_STYLE, textcolor=IntraColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(intra_line, intra_time)
line.set_x2(intra_line, intra_limit_right)
line.set_y1(intra_line, intra_open)
line.set_y2(intra_line, intra_open)
label.set_x(intra_label, intra_limit_right)
label.set_y(intra_label, intra_open)
label.set_text(intra_label, iotext)
if mergebool
f_LevelMerge(pricearray, labelarray, intra_open, intra_label, IntraColor)
//////////////////////////////////////////////////////////////////////////////////
//HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH
if can_draw_intrah
intrah_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
intrah_time := get_limit_right(radistance)
intrah_time
var intrah_line = line.new(x1=intrah_time, x2=intrah_limit_right, y1=intrah_open, y2=intrah_open, color=IntraColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var intrah_label = label.new(x=intrah_limit_right, y=intrah_open, text=pihtext, style=DEFAULT_LABEL_STYLE, textcolor=IntraColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(intrah_line, intrah_time)
line.set_x2(intrah_line, intrah_limit_right)
line.set_y1(intrah_line, intrah_open)
line.set_y2(intrah_line, intrah_open)
label.set_x(intrah_label, intrah_limit_right)
label.set_y(intrah_label, intrah_open)
label.set_text(intrah_label, pihtext)
if mergebool
f_LevelMerge(pricearray, labelarray, intrah_open, intrah_label, IntraColor)
//////////////////////////////////////////////////////////////////////////////////
//LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW
if can_draw_intral
intral_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
intral_time := get_limit_right(radistance)
intral_time
var intral_line = line.new(x1=intral_time, x2=intral_limit_right, y1=intral_open, y2=intral_open, color=IntraColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var intral_label = label.new(x=intral_limit_right, y=intral_open, text=piltext, style=DEFAULT_LABEL_STYLE, textcolor=IntraColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(intral_line, intral_time)
line.set_x2(intral_line, intral_limit_right)
line.set_y1(intral_line, intral_open)
line.set_y2(intral_line, intral_open)
label.set_x(intral_label, intral_limit_right)
label.set_y(intral_label, intral_open)
label.set_text(intral_label, piltext)
if mergebool
f_LevelMerge(pricearray, labelarray, intral_open, intral_label, IntraColor)
///////////////////////////////////////////////////////////////////////////////
if can_draw_intram
intram_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
intram_time = intrah_time
intram_open = (intral_open + intrah_open) / 2
if displayStyle == 'Right Anchored'
intram_time := get_limit_right(radistance)
intram_time
var intram_line = line.new(x1=intram_time, x2=intram_limit_right, y1=intram_open, y2=intram_open, color=IntraColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var intram_label = label.new(x=intram_limit_right, y=intram_open, text=pimtext, style=DEFAULT_LABEL_STYLE, textcolor=IntraColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(intram_line, intram_time)
line.set_x2(intram_line, intram_limit_right)
line.set_y1(intram_line, intram_open)
line.set_y2(intram_line, intram_open)
label.set_x(intram_label, intram_limit_right)
label.set_y(intram_label, intram_open)
label.set_text(intram_label, pimtext)
if mergebool
f_LevelMerge(pricearray, labelarray, intram_open, intram_label, IntraColor)
////////////////////////////////////////// MONDAY
if is_monday_enabled
monday_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
monday_time := get_limit_right(radistance)
monday_time
var monday_line = line.new(x1=monday_time, x2=monday_limit_right, y1=monday_high, y2=monday_high, color=MondayColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monday_label = label.new(x=monday_limit_right, y=monday_high, text=pmonhtext, style=DEFAULT_LABEL_STYLE, textcolor=MondayColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monday_line, monday_time)
line.set_x2(monday_line, monday_limit_right)
line.set_y1(monday_line, monday_high)
line.set_y2(monday_line, monday_high)
label.set_x(monday_label, monday_limit_right)
label.set_y(monday_label, monday_high)
label.set_text(monday_label, pmonhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, monday_high, monday_label, MondayColor)
if is_monday_enabled
monday_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
monday_time := get_limit_right(radistance)
monday_time
var monday_low_line = line.new(x1=monday_time, x2=monday_limit_right, y1=monday_low, y2=monday_low, color=MondayColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monday_low_label = label.new(x=monday_limit_right, y=monday_low, text=pmonltext, style=DEFAULT_LABEL_STYLE, textcolor=MondayColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monday_low_line, monday_time)
line.set_x2(monday_low_line, monday_limit_right)
line.set_y1(monday_low_line, monday_low)
line.set_y2(monday_low_line, monday_low)
label.set_x(monday_low_label, monday_limit_right)
label.set_y(monday_low_label, monday_low)
label.set_text(monday_low_label, pmonltext)
if mergebool
f_LevelMerge(pricearray, labelarray, monday_low, monday_low_label, MondayColor)
if is_monday_mid
mondaym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
mondaym_open = (monday_high + monday_low) / 2
if displayStyle == 'Right Anchored'
monday_time := get_limit_right(radistance)
monday_time
var mondaym_line = line.new(x1=monday_time, x2=mondaym_limit_right, y1=mondaym_open, y2=mondaym_open, color=MondayColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var mondaym_label = label.new(x=mondaym_limit_right, y=mondaym_open, text=pmonmtext, style=DEFAULT_LABEL_STYLE, textcolor=MondayColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(mondaym_line, monday_time)
line.set_x2(mondaym_line, mondaym_limit_right)
line.set_y1(mondaym_line, mondaym_open)
line.set_y2(mondaym_line, mondaym_open)
label.set_x(mondaym_label, mondaym_limit_right)
label.set_y(mondaym_label, mondaym_open)
label.set_text(mondaym_label, pmonmtext)
if mergebool
f_LevelMerge(pricearray, labelarray, mondaym_open, mondaym_label, MondayColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN
if is_daily_enabled
daily_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
daily_time := get_limit_right(radistance)
daily_time
var daily_line = line.new(x1=daily_time, x2=daily_limit_right, y1=daily_open, y2=daily_open, color=DailyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var daily_label = label.new(x=daily_limit_right, y=daily_open, text=dotext, style=DEFAULT_LABEL_STYLE, textcolor=DailyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(daily_line, daily_time)
line.set_x2(daily_line, daily_limit_right)
line.set_y1(daily_line, daily_open)
line.set_y2(daily_line, daily_open)
label.set_x(daily_label, daily_limit_right)
label.set_y(daily_label, daily_open)
label.set_text(daily_label, dotext)
if mergebool
f_LevelMerge(pricearray, labelarray, daily_open, daily_label, DailyColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH
if is_dailyrange_enabled
dailyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
dailyh_time := get_limit_right(radistance)
dailyh_time
// draw tails before lines for better visual
var dailyh_line = line.new(x1=dailyh_time, x2=dailyh_limit_right, y1=dailyh_open, y2=dailyh_open, color=DailyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var dailyh_label = label.new(x=dailyh_limit_right, y=dailyh_open, text=pdhtext, style=DEFAULT_LABEL_STYLE, textcolor=DailyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(dailyh_line, dailyh_time)
line.set_x2(dailyh_line, dailyh_limit_right)
line.set_y1(dailyh_line, dailyh_open)
line.set_y2(dailyh_line, dailyh_open)
label.set_x(dailyh_label, dailyh_limit_right)
label.set_y(dailyh_label, dailyh_open)
label.set_text(dailyh_label, pdhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, dailyh_open, dailyh_label, DailyColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW
if is_dailyrange_enabled
dailyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
dailyl_time := get_limit_right(radistance)
dailyl_time
var dailyl_line = line.new(x1=dailyl_time, x2=dailyl_limit_right, y1=dailyl_open, y2=dailyl_open, color=DailyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var dailyl_label = label.new(x=dailyl_limit_right, y=dailyl_open, text=pdltext, style=DEFAULT_LABEL_STYLE, textcolor=DailyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(dailyl_line, dailyl_time)
line.set_x2(dailyl_line, dailyl_limit_right)
line.set_y1(dailyl_line, dailyl_open)
line.set_y2(dailyl_line, dailyl_open)
label.set_x(dailyl_label, dailyl_limit_right)
label.set_y(dailyl_label, dailyl_open)
label.set_text(dailyl_label, pdltext)
if mergebool
f_LevelMerge(pricearray, labelarray, dailyl_open, dailyl_label, DailyColor)
//////////////////////////////////////////////////////////////////////////////// Daily MID
if is_dailym_enabled
dailym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
dailym_time = dailyh_time
dailym_open = (dailyl_open + dailyh_open) / 2
if displayStyle == 'Right Anchored'
dailym_time := get_limit_right(radistance)
dailym_time
var dailym_line = line.new(x1=dailym_time, x2=dailym_limit_right, y1=dailym_open, y2=dailym_open, color=DailyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var dailym_label = label.new(x=dailym_limit_right, y=dailym_open, text=pdmtext, style=DEFAULT_LABEL_STYLE, textcolor=DailyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(dailym_line, dailym_time)
line.set_x2(dailym_line, dailym_limit_right)
line.set_y1(dailym_line, dailym_open)
line.set_y2(dailym_line, dailym_open)
label.set_x(dailym_label, dailym_limit_right)
label.set_y(dailym_label, dailym_open)
label.set_text(dailym_label, pdmtext)
if mergebool
f_LevelMerge(pricearray, labelarray, dailym_open, dailym_label, DailyColor)
//////////////////////////////////////////////////////////////////////////////////
if is_weekly_enabled
weekly_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
cweekly_time = weekly_time
if displayStyle == 'Right Anchored'
cweekly_time := get_limit_right(radistance)
cweekly_time
var weekly_line = line.new(x1=cweekly_time, x2=weekly_limit_right, y1=weekly_open, y2=weekly_open, color=WeeklyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var weekly_label = label.new(x=weekly_limit_right, y=weekly_open, text=wotext, style=DEFAULT_LABEL_STYLE, textcolor=WeeklyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(weekly_line, cweekly_time)
line.set_x2(weekly_line, weekly_limit_right)
line.set_y1(weekly_line, weekly_open)
line.set_y2(weekly_line, weekly_open)
label.set_x(weekly_label, weekly_limit_right)
label.set_y(weekly_label, weekly_open)
label.set_text(weekly_label, wotext)
if mergebool
f_LevelMerge(pricearray, labelarray, weekly_open, weekly_label, WeeklyColor)
// the weekly open can be the daily open too (monday)
// only the weekly will be draw, in these case we update its label
// if is_weekly_open and can_show_daily
// label.set_text(weekly_label, "DO / WO ")
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// WEEKLY HIGH WEEKLY HIGH WEEKLY HIGH
if is_weeklyrange_enabled
weeklyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
weeklyh_time := get_limit_right(radistance)
weeklyh_time
var weeklyh_line = line.new(x1=weeklyh_time, x2=weeklyh_limit_right, y1=weeklyh_open, y2=weeklyh_open, color=WeeklyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var weeklyh_label = label.new(x=weeklyh_limit_right, y=weeklyh_open, text=pwhtext, style=DEFAULT_LABEL_STYLE, textcolor=WeeklyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(weeklyh_line, weeklyh_time)
line.set_x2(weeklyh_line, weeklyh_limit_right)
line.set_y1(weeklyh_line, weeklyh_open)
line.set_y2(weeklyh_line, weeklyh_open)
label.set_x(weeklyh_label, weeklyh_limit_right)
label.set_y(weeklyh_label, weeklyh_open)
label.set_text(weeklyh_label, pwhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, weeklyh_open, weeklyh_label, WeeklyColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// WEEKLY LOW WEEKLY LOW WEEKLY LOW
if is_weeklyrange_enabled
weeklyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
weeklyl_time := get_limit_right(radistance)
weeklyl_time
var weeklyl_line = line.new(x1=weeklyl_time, x2=weeklyl_limit_right, y1=weekly_open, y2=weekly_open, color=WeeklyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var weeklyl_label = label.new(x=weeklyl_limit_right, y=weeklyl_open, text=pwltext, style=DEFAULT_LABEL_STYLE, textcolor=WeeklyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(weeklyl_line, weeklyl_time)
line.set_x2(weeklyl_line, weeklyl_limit_right)
line.set_y1(weeklyl_line, weeklyl_open)
line.set_y2(weeklyl_line, weeklyl_open)
label.set_x(weeklyl_label, weeklyl_limit_right)
label.set_y(weeklyl_label, weeklyl_open)
label.set_text(weeklyl_label, pwltext)
if mergebool
f_LevelMerge(pricearray, labelarray, weeklyl_open, weeklyl_label, WeeklyColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// Weekly MID
if is_weekly_mid
weeklym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
weeklym_time = weeklyh_time
weeklym_open = (weeklyl_open + weeklyh_open) / 2
if displayStyle == 'Right Anchored'
weeklym_time := get_limit_right(radistance)
weeklym_time
var weeklym_line = line.new(x1=weeklym_time, x2=weeklym_limit_right, y1=weeklym_open, y2=weeklym_open, color=WeeklyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var weeklym_label = label.new(x=weeklym_limit_right, y=weeklym_open, text=pwmtext, style=DEFAULT_LABEL_STYLE, textcolor=WeeklyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(weeklym_line, weeklym_time)
line.set_x2(weeklym_line, weeklym_limit_right)
line.set_y1(weeklym_line, weeklym_open)
line.set_y2(weeklym_line, weeklym_open)
label.set_x(weeklym_label, weeklym_limit_right)
label.set_y(weeklym_label, weeklym_open)
label.set_text(weeklym_label, pwmtext)
if mergebool
f_LevelMerge(pricearray, labelarray, weeklym_open, weeklym_label, WeeklyColor)
////////////////////////////////////////////////////////////////////////////////// YEEEAARRLLYY LOW LOW LOW
if is_yearlyrange_enabled
yearlyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
yearlyl_time := get_limit_right(radistance)
yearlyl_time
var yearlyl_line = line.new(x1=yearlyl_time, x2=yearlyl_limit_right, y1=yearlyl_open, y2=yearlyl_open, color=YearlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var yearlyl_label = label.new(x=yearlyl_limit_right, y=yearlyl_open, text=cyltext, style=DEFAULT_LABEL_STYLE, textcolor=YearlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(yearlyl_line, yearlyl_time)
line.set_x2(yearlyl_line, yearlyl_limit_right)
line.set_y1(yearlyl_line, yearlyl_open)
line.set_y2(yearlyl_line, yearlyl_open)
label.set_x(yearlyl_label, yearlyl_limit_right)
label.set_y(yearlyl_label, yearlyl_open)
label.set_text(yearlyl_label, cyltext)
if mergebool
f_LevelMerge(pricearray, labelarray, yearlyl_open, yearlyl_label, YearlyColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// YEEEAARRLLYY HIGH HIGH HIGH
if is_yearlyrange_enabled
yearlyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
yearlyh_time := get_limit_right(radistance)
yearlyh_time
var yearlyh_line = line.new(x1=yearlyh_time, x2=yearlyh_limit_right, y1=yearlyh_open, y2=yearlyh_open, color=YearlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var yearlyh_label = label.new(x=yearlyh_limit_right, y=yearlyh_open, text=cyhtext, style=DEFAULT_LABEL_STYLE, textcolor=YearlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(yearlyh_line, yearlyh_time)
line.set_x2(yearlyh_line, yearlyh_limit_right)
line.set_y1(yearlyh_line, yearlyh_open)
line.set_y2(yearlyh_line, yearlyh_open)
label.set_x(yearlyh_label, yearlyh_limit_right)
label.set_y(yearlyh_label, yearlyh_open)
label.set_text(yearlyh_label, cyhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, yearlyh_open, yearlyh_label, YearlyColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// YEEEAARRLLYY OPEN
if is_yearly_enabled
yearly_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
yearly_time := get_limit_right(radistance)
yearly_time
var yearly_line = line.new(x1=yearly_time, x2=yearly_limit_right, y1=yearly_open, y2=yearly_open, color=YearlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var yearly_label = label.new(x=yearly_limit_right, y=yearly_open, text=yotext, style=DEFAULT_LABEL_STYLE, textcolor=YearlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(yearly_line, yearly_time)
line.set_x2(yearly_line, yearly_limit_right)
line.set_y1(yearly_line, yearly_open)
line.set_y2(yearly_line, yearly_open)
label.set_x(yearly_label, yearly_limit_right)
label.set_y(yearly_label, yearly_open)
label.set_text(yearly_label, yotext)
if mergebool
f_LevelMerge(pricearray, labelarray, yearly_open, yearly_label, YearlyColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// yearly MID
if is_yearly_mid
yearlym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
yearlym_time = yearlyh_time
yearlym_open = (yearlyl_open + yearlyh_open) / 2
if displayStyle == 'Right Anchored'
yearlym_time := get_limit_right(radistance)
yearlym_time
var yearlym_line = line.new(x1=yearlym_time, x2=yearlym_limit_right, y1=yearlym_open, y2=yearlym_open, color=YearlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var yearlym_label = label.new(x=yearlym_limit_right, y=yearlym_open, text=cymtext, style=DEFAULT_LABEL_STYLE, textcolor=YearlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(yearlym_line, yearlym_time)
line.set_x2(yearlym_line, yearlym_limit_right)
line.set_y1(yearlym_line, yearlym_open)
line.set_y2(yearlym_line, yearlym_open)
label.set_x(yearlym_label, yearlym_limit_right)
label.set_y(yearlym_label, yearlym_open)
label.set_text(yearlym_label, cymtext)
if mergebool
f_LevelMerge(pricearray, labelarray, yearlym_open, yearlym_label, YearlyColor)
////////////////////////////////////////////////////////////////////////////////// QUATERLLYYYYY OPEN
if is_quarterly_enabled
quarterly_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
quarterly_time := get_limit_right(radistance)
quarterly_time
var quarterly_line = line.new(x1=quarterly_time, x2=quarterly_limit_right, y1=quarterly_open, y2=quarterly_open, color=quarterlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var quarterly_label = label.new(x=quarterly_limit_right, y=quarterly_open, text=qotext, style=DEFAULT_LABEL_STYLE, textcolor=quarterlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(quarterly_line, quarterly_time)
line.set_x2(quarterly_line, quarterly_limit_right)
line.set_y1(quarterly_line, quarterly_open)
line.set_y2(quarterly_line, quarterly_open)
label.set_x(quarterly_label, quarterly_limit_right)
label.set_y(quarterly_label, quarterly_open)
label.set_text(quarterly_label, qotext)
if mergebool
f_LevelMerge(pricearray, labelarray, quarterly_open, quarterly_label, quarterlyColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// QUATERLLYYYYY High
if is_quarterlyrange_enabled
quarterlyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
quarterlyh_time := get_limit_right(radistance)
quarterlyh_time
var quarterlyh_line = line.new(x1=quarterlyh_time, x2=quarterlyh_limit_right, y1=quarterlyh_open, y2=quarterlyh_open, color=quarterlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var quarterlyh_label = label.new(x=quarterlyh_limit_right, y=quarterlyh_open, text=pqhtext, style=DEFAULT_LABEL_STYLE, textcolor=quarterlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(quarterlyh_line, quarterlyh_time)
line.set_x2(quarterlyh_line, quarterlyh_limit_right)
line.set_y1(quarterlyh_line, quarterlyh_open)
line.set_y2(quarterlyh_line, quarterlyh_open)
label.set_x(quarterlyh_label, quarterlyh_limit_right)
label.set_y(quarterlyh_label, quarterlyh_open)
label.set_text(quarterlyh_label, pqhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, quarterlyh_open, quarterlyh_label, quarterlyColor)
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// QUATERLLYYYYY Low
if is_quarterlyrange_enabled
quarterlyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
quarterlyl_time := get_limit_right(radistance)
quarterlyl_time
var quarterlyl_line = line.new(x1=quarterlyl_time, x2=quarterlyl_limit_right, y1=quarterlyl_open, y2=quarterlyl_open, color=quarterlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var quarterlyl_label = label.new(x=quarterlyl_limit_right, y=quarterlyl_open, text=pqltext, style=DEFAULT_LABEL_STYLE, textcolor=quarterlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(quarterlyl_line, quarterlyl_time)
line.set_x2(quarterlyl_line, quarterlyl_limit_right)
line.set_y1(quarterlyl_line, quarterlyl_open)
line.set_y2(quarterlyl_line, quarterlyl_open)
label.set_x(quarterlyl_label, quarterlyl_limit_right)
label.set_y(quarterlyl_label, quarterlyl_open)
label.set_text(quarterlyl_label, pqltext)
if mergebool
f_LevelMerge(pricearray, labelarray, quarterlyl_open, quarterlyl_label, quarterlyColor)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// QUATERLLYYYYY MID
if is_quarterly_mid
quarterlym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
quarterlym_time = quarterlyh_time
quarterlym_open = (quarterlyl_open + quarterlyh_open) / 2
if displayStyle == 'Right Anchored'
quarterlym_time := get_limit_right(radistance)
quarterlym_time
var quarterlym_line = line.new(x1=quarterlym_time, x2=quarterlym_limit_right, y1=quarterlym_open, y2=quarterlym_open, color=quarterlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var quarterlym_label = label.new(x=quarterlym_limit_right, y=quarterlym_open, text=pqmtext, style=DEFAULT_LABEL_STYLE, textcolor=quarterlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(quarterlym_line, quarterlym_time)
line.set_x2(quarterlym_line, quarterlym_limit_right)
line.set_y1(quarterlym_line, quarterlym_open)
line.set_y2(quarterlym_line, quarterlym_open)
label.set_x(quarterlym_label, quarterlym_limit_right)
label.set_y(quarterlym_label, quarterlym_open)
label.set_text(quarterlym_label, pqmtext)
if mergebool
f_LevelMerge(pricearray, labelarray, quarterlym_open, quarterlym_label, quarterlyColor)
////////////////////////////////////////////////////////////////////////////////// Monthly LOW LOW LOW
if is_monthlyrange_enabled
monthlyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
monthlyl_time := get_limit_right(radistance)
monthlyl_time
var monthlyl_line = line.new(x1=monthlyl_time, x2=monthlyl_limit_right, y1=monthlyl_open, y2=monthlyl_open, color=MonthlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monthlyl_label = label.new(x=monthlyl_limit_right, y=monthlyl_open, text=pmltext, style=DEFAULT_LABEL_STYLE, textcolor=MonthlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monthlyl_line, monthlyl_time)
line.set_x2(monthlyl_line, monthlyl_limit_right)
line.set_y1(monthlyl_line, monthlyl_open)
line.set_y2(monthlyl_line, monthlyl_open)
label.set_x(monthlyl_label, monthlyl_limit_right)
label.set_y(monthlyl_label, monthlyl_open)
label.set_text(monthlyl_label, pmltext)
if mergebool
f_LevelMerge(pricearray, labelarray, monthlyl_open, monthlyl_label, MonthlyColor)
// the weekly open can be the daily open too (monday)
// only the weekly will be draw, in these case we update its label
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////// MONTHLY HIGH HIGH HIGH
if is_monthlyrange_enabled
monthlyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
monthlyh_time := get_limit_right(radistance)
monthlyh_time
var monthlyh_line = line.new(x1=monthlyh_time, x2=monthlyh_limit_right, y1=monthlyh_open, y2=monthlyh_open, color=MonthlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monthlyh_label = label.new(x=monthlyh_limit_right, y=monthlyh_open, text=pmhtext, style=DEFAULT_LABEL_STYLE, textcolor=MonthlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monthlyh_line, monthlyl_time)
line.set_x2(monthlyh_line, monthlyh_limit_right)
line.set_y1(monthlyh_line, monthlyh_open)
line.set_y2(monthlyh_line, monthlyh_open)
label.set_x(monthlyh_label, monthlyh_limit_right)
label.set_y(monthlyh_label, monthlyh_open)
label.set_text(monthlyh_label, pmhtext)
if mergebool
f_LevelMerge(pricearray, labelarray, monthlyh_open, monthlyh_label, MonthlyColor)
// the weekly open can be the daily open too (monday)
// only the weekly will be draw, in these case we update its label
//////////////////////////////////////////////////////////////////////////////// MONTHLY MID
if is_monthly_mid
monthlym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
monthlym_time = monthlyh_time
monthlym_open = (monthlyl_open + monthlyh_open) / 2
if displayStyle == 'Right Anchored'
monthlym_time := get_limit_right(radistance)
monthlym_time
var monthlym_line = line.new(x1=monthlym_time, x2=monthlym_limit_right, y1=monthlym_open, y2=monthlym_open, color=MonthlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monthlym_label = label.new(x=monthlym_limit_right, y=monthlym_open, text=pmmtext, style=DEFAULT_LABEL_STYLE, textcolor=MonthlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monthlym_line, monthlym_time)
line.set_x2(monthlym_line, monthlym_limit_right)
line.set_y1(monthlym_line, monthlym_open)
line.set_y2(monthlym_line, monthlym_open)
label.set_x(monthlym_label, monthlym_limit_right)
label.set_y(monthlym_label, monthlym_open)
label.set_text(monthlym_label, pmmtext)
if mergebool
f_LevelMerge(pricearray, labelarray, monthlym_open, monthlym_label, MonthlyColor)
//////////////////////////////////////////////////////////////////////////////////
if is_monthly_enabled
monthly_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if displayStyle == 'Right Anchored'
monthly_time := get_limit_right(radistance)
monthly_time
var monthlyLine = line.new(x1=monthly_time, x2=monthly_limit_right, y1=monthly_open, y2=monthly_open, color=MonthlyColor, width=DEFAULT_LINE_WIDTH, xloc=xloc.bar_time, style=linestyles)
var monthlyLabel = label.new(x=monthly_limit_right, y=monthly_open, text=motext, style=DEFAULT_LABEL_STYLE, textcolor=MonthlyColor, size=DEFAULT_LABEL_SIZE, xloc=xloc.bar_time)
line.set_x1(monthlyLine, monthly_time)
line.set_x2(monthlyLine, monthly_limit_right)
line.set_y1(monthlyLine, monthly_open)
line.set_y2(monthlyLine, monthly_open)
label.set_x(monthlyLabel, monthly_limit_right)
label.set_y(monthlyLabel, monthly_open)
label.set_text(monthlyLabel, motext)
if mergebool
f_LevelMerge(pricearray, labelarray, monthly_open, monthlyLabel, MonthlyColor)
/////////////////////////////////////////////////////////////////////////////
// the monthly open can be the weekly open (monday 1st) and/or daily open too
// only the monthly will be draw, in these case we update its label
// if is_monthly_open
// if can_show_daily
// label.set_text(monthlyLabel, "DO / MO ")
// if is_weekly_open
// if can_show_weekly
// label.set_text(monthlyLabel, "WO / MO ")
// if can_show_daily and can_show_weekly
// label.set_text(monthlyLabel, "DO / WO / MO ")
// the start of the line is drew from the first week of the month
// if the first day of the weekly candle (monday) is the 2nd of the month
// we fix the start of the line position on the Prev weekly candle
if timeframe.isweekly and dayofweek(monthly_time) != dayofweek.monday
line.set_x1(monthlyLine, monthly_time - (weekly_time - weekly_time ))
BB Trend AvgBB Trend Avg – Probabilistic Trend Duration Dashboard
BB Trend Avg is a trend-analysis companion tool that estimates how long bullish and bearish moves typically last and compares them to the current trend in real time . Instead of trying to predict direction, this indicator focuses on context and probability by measuring how trends historically behave for each ticker.
The script identifies trend transitions using a momentum + trend-following framework, then tracks how many bars each bullish and bearish phase remains active. Over time, it builds rolling averages from prior market behavior and displays those values in a compact table overlay.
The result is a live dashboard that shows:
Current trend direction
How long the present trend has lasted
Historical average trend length for the same direction
A “probable” remaining trend duration based on prior cycles
This allows traders and investors to quickly answer:
“Is this move early, average, or extended?”
“Am I late to the trend or still inside its normal lifespan?”
“Do bullish or bearish moves usually run longer on this asset?”
BB Trend Avg does not provide buy or sell signals. It is designed for position management, expectation setting, and risk context , not entries. It is best used alongside your primary strategy to judge trend maturity and avoid chasing overextended moves or exiting too early from strong trends.
Markets repeat behavior more than price. This tool measures that behavior.
Fearless Trend IndicatorFearless Trend Indicator
Discover the optimal times to enter and exit the market with the Fearless Trend Indicator, exclusively designed for the daily time frame. This indicator simplifies your trading decisions by clearly highlighting market trends through intuitive color coding:
Green: Risk on trend - Ideal for considering long positions
Red: Risk off trend - Time to think about stepping back or securing positions
Amber: Trend shifting - Caution advised, assess the market for potential changes
Whether you're refining your current strategies or just starting out, the Fearless Trend Indicator is a vital tool for your trading arsenal.
Join our RoseTree Investing Community: skool.com/rosetree
Enhance your trading journey by joining our FREE community where you’ll gain access to exclusive content, live trading sessions, and advanced strategies from leading crypto experts.
Scalp Boost LONG✦ Overview
Scalp Boost LONG is a visual tool designed to highlight potential short-term upward impulses.
A signal is generated only when multiple market conditions align at the candle close, combining momentum dynamics, local probability shifts, and abnormal volume behavior.
The indicator does not repaint.
✦ Concept
The tool focuses on selective situations where the market shows signs of micro-breakout potential.
If all internal conditions are confirmed — a LONG event is displayed.
If not — the chart remains clean.
This builds a low-noise signal model, prioritizing quality over frequency.
✦ Signal Logic
The LONG signal requires confirmation of all core conditions:
• Local impulse dynamics
Identifies short-term acceleration suggesting a breakout from a compressed price structure.
• Probability beyond a statistical zone
Uses relative breakout probability instead of fixed levels, checking whether price exceeds expected local ranges.
• Abnormal volume activity
Highlights candles with monetary flow above a custom threshold, signaling increased market interest.
• Anti-overheat filter
Conditions avoiding exhausted or low-momentum phases where continuation is less likely.
Only when all filters are aligned a LONG marker appears.
✦ Visual Structure
The chart display is intentionally minimal:
• ROC Curve
Subdued line, showing short-term momentum without distraction.
• LONG Marker
Green triangle below the candle on confirmed events.
• Candle Highlight
Soft background highlight on the signal bar.
• Volume Marker
Small red dot at the bottom of candles with abnormal monetary flow.
All visual elements appear only on candle close.
✦ Alerts
A clean event structure is available for notifications:
LONG Signal
This allows receiving alerts during chart analysis or in automated workflows while keeping full control over decision-making.
✦ Notes & Guidelines
This tool:
is not a trading system,
does not provide targets or stops,
may trigger against the dominant trend,
should be combined with the user’s own methodology.
Signals are rare by design.
Do not interpret each event as a trend continuation — it highlights conditions, not outcomes.
✦ Suggested Use
-(Non-mandatory ideas for advanced users)
-identifying potential micro-breakouts,
-timing entries around volume spikes,
-adding context to scalping models,
-filtering impulsive moves from noise.
-suitable for a 5-minute timeframe
The indicator can be helpful as a confirmation layer, not a standalone decision tool.
Dynamic Breakout Odds [RayAlgo]█ OVERVIEW
Dynamic Breakout Odds is a probability-based breakout tool that uses ATR and pattern matching to estimate how likely price is to expand up or down from the current candle.
Instead of guessing, the indicator scans historical candles that look like the current one and measures how often price broke above or below by a volatility-based amount.
It then projects those probabilities forward as clean levels and a bias dashboard on your chart.
Use it to quickly answer:
• “Is the next move statistically more likely up or down?”
• “How far does price typically travel from here, in ATR terms?”
█ CONCEPTS
Candle Profile Matching
The script builds a “profile” of the current setup using two elements:
• The color of the previous candle (bullish close vs bearish close)
• The trend environment (above/below EMA, if the filter is enabled)
Only historical candles with the same profile are used for statistics. This keeps the probabilities specific to the current context instead of mixing all market conditions together.
ATR-Based Expansion
For every matching historical candle, the script checks how far price moved away from the open using ATR:
• Upward move thresholds
• Moderate expansion (≈ 0.5 ATR above the open)
• Stronger expansion (≈ 1.0 ATR above the open)
• Downward move thresholds
• Moderate expansion (≈ 0.5 ATR below the open)
• Stronger expansion (≈ 1.0 ATR below the open)
It counts how often each expansion happened, then converts those counts into probabilities.
Normalized Probability Scores
The indicator doesn’t just show raw percentages; it normalizes them so that all scenarios together form a consistent probability set.
Internally it tracks four outcomes for similar candles:
• Chance of a moderate move upward
• Chance of a strong move upward
• Chance of a moderate move downward
• Chance of a strong move downward
These are then normalized so the total is roughly 100%. From this, two main metrics are derived:
• Bullish Strength = combined normalized odds of upside moves
• Bearish Strength = combined normalized odds of downside moves
Whichever side has the higher score defines the current directional bias .
█ WHAT YOU SEE ON THE CHART
1. Breakout Projection Levels
Four horizontal levels are projected around the open of the current bar:
• Two upside levels
• Nearer upside expansion (~0.5 ATR above the open)
• Further upside expansion (~1.0 ATR above the open)
• Two downside levels
• Nearer downside expansion (~0.5 ATR below the open)
• Further downside expansion (~1.0 ATR below the open)
Each line extends a configurable number of bars into the future, so you visually see a breakout “corridor” above and below price.
2. Probability Labels
At the right edge of each line, you’ll see a label such as:
• “X% – near upside”
• “Y% – further downside”
These labels tell you how frequently similar candles in the chosen lookback reached that expansion. You immediately know which scenario has been more common historically.
3. Breakout Zones
Between the paired upside lines and the paired downside lines, shaded “probability zones” can be shown:
• The upper shaded band highlights the typical upside expansion range
• The lower shaded band highlights the typical downside expansion range
These zones visually group probable target areas instead of just single lines.
4. Background Tint
The background behind price is softly tinted towards:
• Bullish color when Bullish Strength > Bearish Strength
• Bearish color when Bearish Strength > Bullish Strength
The stronger the statistical imbalance between the two, the more pronounced the tint. This gives you an instant feel for whether conditions lean more Long, more Short, or are nearly Neutral.
5. Directional Bias Arrow
On the last bar the script can plot a clean arrow:
• Up-arrow below price when bullish odds dominate
• Down-arrow above price when bearish odds dominate
The arrow is positioned beyond all projection lines, making it easy to see even on cluttered charts and reminding you of the current statistical bias without text.
6. Origin Marker
A small horizontal mark is drawn at the open of the current candle.
This acts as the “starting point” from which all ATR-based expansions above and below are measured.
7. Dashboard Panel
A compact dashboard is drawn in a corner of the chart (location configurable). It displays:
• Bullish Strength – combined normalized probability for upside expansions
• Bearish Strength – combined normalized probability for downside expansions
• Bias – “Long Bias”, “Short Bias”, or “Neutral”
• Trend Filter – shows whether EMA-based filtering is ON or OFF and which length is used
This gives you a quick, text-based summary of the current statistical environment.
█ SETTINGS
Analysis Lookback Period
• Controls how many historical bars the script inspects when searching for similar candles.
• Larger values = more history, smoother statistics, slower adaptation.
• Smaller values = faster adaptation, but more noise and less stability.
ATR Length
• The period used to compute ATR volatility.
• Defines how “big” 0.5 ATR and 1.0 ATR moves are on your current symbol and timeframe.
Trend Filter (EMA)
• Filter by Trend?
• When ON, only historical candles in a similar trend regime are used.
• When OFF, all past candles with similar color are considered, regardless of trend.
• Trend EMA Length
• EMA period used to classify trend.
• Price above EMA → uptrend environment.
• Price below EMA → downtrend environment.
This filter helps you separate behavior in uptrends from downtrends, which can significantly change breakout dynamics.
Visual Settings
• Projection Width (bars)
• How far the lines and zones extend into the future.
• Show Probability Zones
• Toggle shaded bands between each pair of levels.
• Label Size
• Choose smaller or larger text for the probability labels on the right.
• Tint Background by Bias
• Turn the bias-based background on or off.
• Show Bias Marker on Last Candle
• Toggle the up/down arrow marker.
• Dashboard Location
• Select top/bottom left/right corner for the panel.
█ HOW TO USE IT
1. Start With the Dashboard
Look at Bullish Strength vs Bearish Strength:
• If bullish is clearly larger → environment statistically favors upside expansion.
• If bearish is clearly larger → environment statistically favors downside expansion.
• If they are close → treat the situation as Neutral; consider reducing position size or waiting for more clarity.
2. Use Levels as Dynamic Targets
The projected lines and zones can serve as:
• Profit targets based on typical expansion distance
• Logical regions for scaling out
• Areas where you expect price behavior to change (e.g., loss of momentum)
Short-term traders often focus on the nearer expansion levels, while swing traders may use the farther levels as extended targets.
3. Align With Trend (Optional)
With the trend filter ON:
• Prefer Long setups when price is above the EMA and bullish probabilities dominate.
• Prefer Short setups when price is below the EMA and bearish probabilities dominate.
With the filter OFF, you get pure color-plus-pattern statistics across the whole lookback, which can be useful if you deliberately trade counter-trend or range conditions.
4. Combine With Your Existing System
Dynamic Breakout Odds is best used as a confirmation and targeting layer :
• Combine it with structure (support/resistance, supply/demand, order blocks).
• Combine it with volume or orderflow tools if you use them.
• Use the probability zones to validate whether your planned target is realistic relative to recent volatility.
It is not designed to be a standalone “buy/sell” signal generator, but a statistical map around your entries.
█ PRACTICAL EXAMPLES
Example A – Bullish, Moderate Expansion Frequently Hit
• Bullish Strength significantly higher than Bearish Strength.
• The nearer upside level shows a strong historical hit rate.
Interpretation: similar setups often produce at least a moderate push upward before failing.
Use case: trade pullbacks in the direction of the bias, targeting the nearer upside projection as an initial take-profit.
Example B – Bearish, Deeper Downside Often Reached
• Bearish Strength clearly dominant.
• Both the nearer and farther downside levels show decent probabilities.
Interpretation: similar conditions historically saw follow-through to the downside.
Use case: use rallies against the direction of the bias to position into shorts, planning partial exits around the first downside projection and runners toward the second.
Example C – Neutral, Balanced Probabilities
• Bullish and Bearish Strength scores are close.
• Background tint is very light or absent.
Interpretation: the market is statistically indecisive; expansions up or down are similarly likely.
Use case: consider range trading tactics, mean-reversion ideas, or simply standing aside until a clearer skew develops.
█ BEST PRACTICES
• Use on liquid symbols and reasonable timeframes to avoid distorted ATR behavior.
• Don’t overfit lookback length to a single instrument; test across markets.
• Let the indicator provide context, not absolute certainty.
• Always combine with proper risk management (position sizing, max loss per trade, etc.).
• Be cautious with very small sample sizes (e.g., very short lookbacks on low-volume assets).
█ LIMITATIONS & NOTES
• All probabilities are based on historical behavior ; markets can change regime.
• ATR distances are relative to recent volatility and may shrink/expand over time.
• The script intentionally does not guarantee any direction or target; it only reports what has been most common in similar past situations.
█ DISCLAIMER
This tool is for educational and informational purposes only.
It does not constitute financial advice or a guarantee of performance.
Always do your own research, test on demo or historical data, and use appropriate risk management when trading live capital.
Yin and Yang Trading Strategy Yin and Yang Trading Strategy: An Educational Overview
The "Yin and Yang" trading strategy embodies the balance and duality of the yin-yang philosophy, representing both harmony and opposition within the market. In this strategy, like the two complementary forces of yin (bearish) and yang (bullish), opposing trends are monitored to create balance through careful entries and exits in trades. Let's break down how this strategy works and the key indicators involved.
1. The Yin and Yang Analogy
In the same way that yin and yang coexist to form a whole, this strategy seeks to balance two critical market elements: price momentum and volatility. The yin (bearish side) represents a slowing or declining market, while the yang (bullish side) symbolizes growth and upward movement. The strategy uses the market's inherent volatility and trend to guide entries and exits, ensuring that trades follow the flow, just as yin and yang flow into each other.
2. Key Indicators Involved
The Yin and Yang strategy is built around the following key technical indicators:
ATR (Average True Range): This measures market volatility. The higher the ATR, the greater the market's volatility. In this strategy, ATR helps define the range of movement the price can make before a position should be closed or opened. The input "ATR Period" sets the window for ATR calculation, allowing users to adjust the sensitivity to market movements.
Heikin Ashi Candles: These modified candlesticks smooth out price action, making it easier to identify trends. Instead of using traditional open-high-low-close data, Heikin Ashi candles are calculated differently to better capture the overall market direction, reducing noise. The user can switch between regular candles and Heikin Ashi candles based on preference.
EMA (Exponential Moving Average): The EMA helps smooth out price data to create a trend-following indicator. This is particularly useful in detecting crossovers with the ATR trailing stop, signaling potential buy and sell opportunities.
3. The Specific Strategy
The strategy revolves around using an ATR trailing stop to follow price movements and enter or exit trades based on volatility and trend strength. Here's how it works:
ATR Trailing Stop: The system calculates a trailing stop based on the ATR value multiplied by a user-defined key value (input "a"). This trailing stop adjusts dynamically as the market moves, providing a stop level that tracks the current trend.
Position Direction: When the price moves above the ATR trailing stop, the strategy signals a buy (long position). Conversely, when the price drops below the ATR trailing stop, the strategy signals a sell (short position). This ensures you're always trading with the trend, respecting the balance of yin and yang in the market.
Entry and Exit: Buy and sell conditions are determined by comparing the price to the ATR trailing stop. Additionally, crossovers between the ATR trailing stop and EMA further confirm trend reversals, providing clear signals for entering or exiting trades.
4. Best Practices for Trading the Yin and Yang Strategy
Tune the ATR Sensitivity: Adjust the "Key Value" input (a) to control how sensitive the ATR trailing stop is to market movements. A higher value will result in a wider trailing stop, suitable for high-volatility markets, while a lower value tightens the stop for low-volatility conditions.
Use Heikin Ashi for Clarity: If the market seems noisy, use Heikin Ashi candles to smooth out price action and get a clearer view of trends. This can be particularly useful in choppy or sideways markets.
Align with Market Volatility: Monitor the ATR closely. In periods of high volatility, expect larger price swings, and adjust your trailing stop accordingly to avoid being prematurely stopped out.
Stick to the Plan: As with any strategy, consistency is key. The Yin and Yang strategy works best when you adhere to the buy and sell signals without second-guessing, just like maintaining balance in the philosophy of yin and yang.
This strategy offers a clear framework for balancing market trends and volatility, helping traders find harmony in their trading decisions.
Join our RoseTree Investing Community: skool.com/rosetree
Enhance your trading journey by joining our FREE community where you’ll gain access to exclusive content, live trading sessions, and advanced strategies from leading crypto experts.
RSI MACD Proportional ComboThis indicator combines two of the most widely used momentum tools in the market:
RSI and MACD into a single proportional framework.
MACD values are normalized so they can be displayed together with RSI on the same 0–100 scale. This allows both signals to be compared directly and interpreted more intuitively.
In this structure, RSI’s 50 midline effectively functions like MACD’s zero line, helping traders quickly identify momentum shifts without needing to view separate panels or raw MACD values. The result is a clean, unified momentum indicator that simplifies trend direction, overbought/oversold conditions, and MACD-style crossovers within one combined visual tool.
KING Super Trend Hull (Multi MA)super trende ortalamalar eklendi. alexander ma degisken ortalama gibi..
Trend with ADX, multiple EMAs - Buy & Sell✔ Trend Direction
Via DI+ > DI–
✔ Trend Strength
Via ADX
✔ Fast Entry Signals
5/8 EMA crossovers
✔ Larger Trend Confirmation
13/48 EMA crossovers
✔ Macro Trend
EMA 200
✔ Intraday Bias
VWAP
✔ Visual Trend (background)
✔ Alerts for signals + trend shifts
TraderForge - Genesis Daily ATR HistoryMaps today’s ATR range plus historical days.
Genesis Daily ATR History projects Open Plus ATR and Open Minus ATR for the current session and prior sessions, giving you a clear view of how price reacts to volatility boundaries across multiple days. Perfect for spotting recurring reversal zones, volatility shifts, and range behavior at a glance.
TraderForge – Simple indicators. Powerful results.
TraderForge - Genesis Daily ATR Opening RangeClean, current-day ATR projection only.
Genesis Daily ATR Opening Range draws today’s Open ± ATR as two flat, full-session lines using a dynamic line.new() logic. No historical overlays, just a sharp, focused volatility envelope for intraday setups, PCS/CCS planning, and scalp zones.
TraderForge – Simple indicators. Powerful results.
TraderForge - Everest Auto Top & BottomEverest is a price action tool designed to help traders instantly spot market structure by automatically plotting swing highs and lows. It detects key reversal points using built-in pivot logic and visually marks each top and bottom on your chart with clean labels and connecting lines.
Customizable sensitivity lets you fine-tune the indicator to match any timeframe or asset. Clean visual markers and dashed swing connectors help you quickly recognize market direction and key reversal zones.
Everest works across all assets — from SPX and futures to crypto and stocks — making it a versatile companion for intraday scalpers or swing traders alike.
Whether you’re tracking higher highs and lower lows or identifying fresh support and resistance, Everest keeps your structure clear and your chart clean.
TraderForge – Simple indicators. Powerful results.
Stock Relative Strength Rotation Graph🔄 Visualizing Market Rotation & Momentum (Stock RSRG)
This tool visualizes the sector rotation of your watchlist on a single graph. Instead of checking 40 different charts, you can see the entire market cycle in one view. It plots Relative Strength (Trend) vs. Momentum (Velocity) to identify which assets are leading the market and which are lagging.
📜 Credits & Disclaimer
Original Code: Adapted from the open-source " Relative Strength Scatter Plot " by LuxAlgo.
Trademark: This tool is inspired by Relative Rotation Graphs®. Relative Rotation Graphs® is a registered trademark of JOOS Holdings B.V. This script is neither endorsed, nor sponsored, nor affiliated with them.
📊 How It Works (The Math)
The script calculates two metrics for every symbol against a benchmark (Default: SPX):
X-Axis (RS-Ratio): Is the trend stronger than the benchmark? (>100 = Yes)
Y-Axis (RS-Momentum): Is the trend accelerating? (>100 = Yes)
🧩 The 4 Market Quadrants
🟩 Leading (Top-Right): Strong Trend + Accelerating. (Best for holding).
🟦 Improving (Top-Left): Weak Trend + Accelerating. (Best for entries).
⬜ Weakening (Bottom-Right): Strong Trend + Decelerating. (Watch for exits).
🟥 Lagging (Bottom-Left): Weak Trend + Decelerating. (Avoid).
✨ Significant Improvements
This open-source version adds unique features not found in standard rotation scripts:
📝 Quick-Input Engine: Paste up to 40 symbols as a single comma-separated list (e.g., NVDA, AMD, TSLA). No more individual input boxes.
🎯 Quadrant Filtering: You can now hide specific quadrants (like "Lagging") to clear the noise and focus only on actionable setups.
🐛 Trajectory Trails: Visualizes the historical path of the rotation so you can see the direction of momentum.
🛠️ How to Use
Paste Watchlist: Go to settings and paste your symbols (e.g., US Sectors: XLK, XLF, XLE...).
Find Entries: Look for tails moving from Improving ➔ Leading.
Find Exits: Be cautious when tails move from Leading ➔ Weakening.
Zoom: Use the "Scatter Plot Resolution" setting to zoom in or out if dots are bunched up.
HOKO,PSPHOKO is a multifunctional chart-overlay designed to display clean market context and detect PSP (Price-Structure Projection) signals based on candle-body direction differences between the main symbol and two reference indices.
The indicator provides two core features:
1. Header Display (Symbol / Timeframe / Date / Mode System)
HOKO allows full customization of on-chart informational headers, including:
Symbol name
Timeframe (auto-formatted)
Indicator name (HOKO)
Date (Pretty or Numeric)
Multiple layout modes (6 total)
Adjustable text size, alignment, padding, row spacing, and screen position
Dynamic rendering using table objects
This creates a clean and professional display suitable for screenshots, analysis, and multi-chart layouts.
2. PSP Logic (Price Structure Projection)
The PSP engine compares the main chart’s candle direction to two reference symbols (default: ES1! and YM1!).
A violation occurs when the main candle is bullish while the reference candle is bearish, or vice-versa.
The script:
Calculates ATR-based dynamic marker offsets
Stores the last 3 bars
Detects Swing High PSP and Swing Low PSP based on a 3-candle swing structure
Confirms signals only if the middle candle contains a violation
Draws markers above/below the swing point with fully customizable shapes, colors, and sizes
Supports two symbols independently (Symbol 1 / Symbol 2)
Automatically deletes old labels based on a user-defined max-bar limit
This makes PSP easy to visualize and helps identify inflection points where internal weakness or strength appears before price shifts.
Key Features
Clean customizable chart header
Pretty or numeric date formats
Multiple layout modes (vertical or one-line display)
PSP detection from ES/YM divergence logic
Swing-based confirmation for higher-quality signals
Dynamic ATR offset for accurate visual spacing
Lightweight and optimized with automatic cleanup
Works on any market and any timeframe
Purpose
HOKO helps traders quickly understand market context while highlighting potential turning points caused by structural divergence between major indices. It is ideal for intraday traders using ICT-style logic, smart money concepts, or divergence-based confirmation models.
DarkPool FlowDarkPool Flow is a professional-grade technical analysis tool designed to align retail traders with the dominant "smart money" flow. Unlike standard moving average crossovers that often generate false signals during consolidation, this script employs a multi-layered filtering engine to isolate high-probability trends.
The core philosophy of this indicator is that Trends are fractal. A sustainable move on a lower timeframe must be supported by momentum on a higher timeframe. By comparing a "Fast Signal Trend" against a "Slow Anchor Trend" (e.g., Daily vs. Weekly), the script identifies the market bias used by institutional algorithms.
This edition features a Smart Recovery Engine, ensuring that valid trends are not missed simply because momentum started slowly, and a Dynamic Cloud that visually represents the strength of the trend spread.
Key Features
1. Auto-Adaptive Timeframe Logic
The script eliminates the guesswork of Multi-Timeframe (MTF) selection. By enabling "Auto-Adapt," the indicator detects your current chart timeframe and automatically maps it to the mathematically correct institutional pairings:
Scalping (<15m): Uses 15-Minute Trend vs. 1-Hour Anchor.
Day Trading (15m - 1H): Uses 4-Hour Trend vs. Daily Anchor.
Swing Trading (4H - Daily): Uses Daily Trend vs. Weekly Anchor (The classic "Golden" setup).
Investing (Weekly): Uses 21-Week EMA vs. 50-Week SMA (Bull Market Support Band logic).
2. Smart Recovery Signal Engine
Standard crossover scripts often miss major moves if the specific breakout candle has low volume or weak ADX. This script utilizes a state-machine logic that "remembers" the trend direction. If a trend begins during low volatility (gray candles), the script waits. The moment volatility and momentum confirm the move, a Smart Recovery Signal is triggered, allowing you to enter an existing trend safely.
3. Chop Protection (Gray Candles)
Preservation of capital is the priority. The script analyzes the Average Directional Index (ADX) and Volatility (ATR).
Colored Candles (Green/Red): The market is trending with sufficient strength. Trading is permitted.
Gray Candles: The market is in a low-energy chop or consolidation (ADX < 20). Trading is discouraged.
4. Dynamic Trend Cloud
The space between the Fast and Slow trends is filled with a dynamic cloud.
Darker/Opaque Cloud: Indicates a widening spread, suggesting accelerating momentum.
Lighter/Transparent Cloud: Indicates a narrowing spread, suggesting the trend may be weakening or consolidating.
5. Pullback & Retest Signals (+)
While triangles mark the start of a trend, the Plus (+) signs mark low-risk opportunities to add to a position. These appear when price dips into the cloud, finds support at the "Fair Value" zone, and closes back in the direction of the trend with confirmed momentum.
User Guide & Strategy
Setup
Add the indicator to your chart.
For Beginners: Enable "Auto-Adaptive Timeframes" in the settings.
For Advanced Users: Disable Auto-Adapt and manually configure your Fast/Slow pairings (Default is Daily 50 EMA / Weekly 50 EMA).
Signal Mode: Choose "First Breakout Only" for a cleaner chart, or "All Signals" if you wish to see re-entry points during choppy starts.
Long Entry Criteria (Buy)
Trend: The Cloud must be Green (Fast Trend > Slow Trend).
Signal: A Green Triangle appears below the bar.
Confirmation: The signal candle must not be Gray.
Re-Entry: A small Green (+) sign appears, indicating a successful test of the cloud support.
Short Entry Criteria (Sell)
Trend: The Cloud must be Red (Fast Trend < Slow Trend).
Signal: A Red Triangle appears above the bar.
Confirmation: The signal candle must not be Gray.
Re-Entry: A small Red (+) sign appears, indicating a successful test of the cloud resistance.
Stop Loss & Risk Management
Stop Loss: A standard institutional stop loss is placed just beyond the Slow Trend Line (the outer edge of the cloud). If price closes beyond the Slow Trend, the macro thesis is invalid.
Take Profit: Target liquidity pools or use a trailing stop based on the Fast Trend line.
Settings Overview
Mode Selection: Toggle between Auto-Adaptive logic or Manual control.
Manual Configuration: Define the specific Timeframe, Length, and Type (EMA, SMA, WMA) for both Fast and Slow trends.
Signal Logic: Toggle "Show Pullback Signals" on/off. Switch between "First Breakout" or "All Signals."
Quality Filters: Toggle individual filters (ATR, RSI, ADX) to adjust sensitivity. Turning these off makes the script more responsive but increases false signals.
Visual Style: Customize colors for Bullish, Bearish, and Neutral (Gray) states. Adjust cloud transparency.
Disclaimer
Risk Warning: Trading financial markets involves a high degree of risk and is not suitable for all investors. You could lose some or all of your initial investment.
Educational Use Only: This script and the information provided herein are for educational and informational purposes only. They do not constitute financial advice, investment advice, trading advice, or any other recommendation.
No Guarantee: Past performance of any trading system or methodology is not necessarily indicative of future results. The "Institutional Trend" indicator is a tool to assist in technical analysis, not a crystal ball. The creators of this script assume no responsibility or liability for any trading losses or damages incurred as a result of using this tool. Always perform your own due diligence and consult with a qualified financial advisor before making investment decisions.
Periodis ProIntroduction
The Algorion Periodis Pro represents a paradigm shift in professional trend analysis. Unlike traditional indicators that force the market to fit into rigid, pre-defined settings (like a 14-period MA), this system allows the market to dictate its own parameters.
By combining a Proprietary Anchored Framework with specific temporal resets, Algorion Periodis Pro captures the "natural rhythm" of price action, offering a view of the market that is mathematically synchronized with the current trading session, day, or week.
Core Methodology: The "Zero-Parameter" Philosophy
The true power of Algorion Periodis Pro lies in its unique approach to signal generation. It does not rely on arbitrary user inputs. Instead, it features two distinct, self-adaptive lines that construct themselves in real-time:
1. The Self-Constructing Inertia Line (Adaptive EMA): This line is not calculated using a fixed lookback period. Instead, it builds itself from the ground up starting at each reset point. It accepts the market’s raw price action as its sole instruction set, naturally deriving its own smoothing coefficients based on the speed and flow of the current trend. It represents the market’s "Inertia."
2. The Proprietary Efficiency Filter: The second line utilizes a highly advanced, parameter-free algorithm. It "listens" to the market's noise and volatility levels to determine its own sensitivity. When price is clean, it tightens; when price is chaotic, it relaxes.
The Result: Two lines that are not imposed on the market, but are born from the market. Their interaction reveals the true fair value without the lag caused by human bias.
Features & Functionality
The "Heartbeat" of Volatility (Heatmap Bands): Standard deviation bands often lag. Algorion Periodis Pro, however, calculates the Accumulated Volatility from the anchor point.
These bands represent the "breathing room" the market requires for the current period.
Info Box Dashboard: The panel in the corner displays the Base Volatility State. This value (measured in Ticks/Pips/Points) is the precise distance between the Main Line and the first Deviation Band. This is the current "Volatility Unit" of the asset.
Dual-Set Chronology:
Set 1 (Tactical): Captures the immediate, intraday pulse (Default: 600 Minutes).
Set 2 (Strategic): Captures the broader structural intent (Default: Weekly).
Smart Confluence Coloring: Bars are painted Green or Red only when a "Council of Factors"—including the slopes of both adaptive lines and internal trend metrics—agree on the direction. This filters out weak, non-committal price action.
Strategic Usage: Volatility-Synchronized Trading
Because the Deviation Bands are derived from the market's natural volatility accumulation, they serve as the perfect coordinate system for Risk Management:
Risk (Stop Loss): Use the Base Volatility Unit (the distance of one band) as your natural stop-loss distance. This places your stop outside the current "noise floor" of the market.
Reward (Targets): Target the outer bands.
Band 1-2: High-probability scalping targets during standard moves.
Band 3+: Targets for expansion moves.
Level-to-Level Trading: In a trending market, price often climbs the "ladder" of these bands. A breakout above Band 1 often targets Band 2. When price extends to the outer limits (Band 6 or 7), it often signals a statistical exhaustion, offering a mean-reversion opportunity back to the Main Line.
Configuration
Main Line Switches: Toggle the Main and Secondary lines On/Off for both sets to suit your visual preference.
Reset Frequency: Define the life-cycle of the calculation (Minutes, Daily, Weekly).
Confluence Threshold: Adjust the strictness of the Bar Coloring (voting factors).
Signal Markers: Toggle discrete Buy/Sell shapes based on the structural trend.
Disclaimer
This tool is for informational purposes only. The proprietary algorithms contained herein calculate derived values from past price action and cannot predict future market movements with certainty. Past performance is not indicative of future results. Always manage risk.
YM Ultimate SNIPER v8.1# YM Ultimate SNIPER v8.1 - SNIPER STRICT EDITION
## 🎯 CHANGELOG: What's New in v8.1
### The Problem We Fixed
**GOD MODE was handing out awards like participation trophies.** Too many wicky, indecisive candles were getting GOD MODE status just because they had enough confluence points. A GOD MODE candle should show **CLEAR DOMINANCE** - fat body, minimal adverse wick, consistent pressure throughout formation.
---
## 🔥 MAJOR CHANGES
### 1. CANDLE DOMINANCE INDEX (CDI) - NEW METRIC
The CDI quantifies "who won the candle" on a 0-10 scale:
```
CDI COMPONENTS:
├── Body Score (0-4 pts): How fat is the body?
├── Adverse Wick Score (0-3 pts): How small is the wick against direction?
├── Favorable Wick Score (0-2 pts): Clean entry side?
└── Closing Strength (0-1 pt): Did it close near the extreme?
CDI RATINGS:
├── 8.0+ = 🔥 DOMINANT (ideal for GOD MODE)
├── 6.0-7.9 = ✓✓ STRONG
├── 4.0-5.9 = ✓ ACCEPTABLE
└── <4.0 = WEAK (not GOD MODE worthy)
```
### 2. STRICT GOD MODE GATES (6 GATES)
**Score alone no longer qualifies for GOD MODE.** Now a candle must pass ALL 6 gates:
| Gate | Requirement | Default |
|------|-------------|---------|
| **1. Score** | Must meet GOD MODE threshold | ≥9.0 |
| **2. Body** | Body ratio must be "fat" | ≥70% |
| **3. Adverse Wick** | Wick against direction must be small | ≤20% |
| **4. Delta** | Buy/sell dominance must be strong | ≥70% |
| **5. Session** | Must be in active session (configurable) | LDN/NY/PWR |
| **6. Pressure** | Intrabar pressure must be consistent | Same side dominated early AND late |
**If ANY gate fails, GOD MODE is DENIED** - even with a 10/10 score!
### 3. 30-BAR SIGNAL DISPLAY LIMIT
**Past signals are now hidden.** Only the last 30 bars show tier markers, sweeps, and absorption signals. This keeps the chart clean and focused on recent action.
```
WHAT'S HIDDEN AFTER 30 BARS:
├── Tier signals (S/A/B/Z)
├── GOD MODE markers
├── Liquidity sweep diamonds
├── Absorption crosses
└── Stop/Target lines
WHAT ALWAYS SHOWS:
├── FVG/IFVG zones (structural)
├── Order Blocks (structural)
├── Session markers (context)
└── Session background colors
```
**Configurable:** Change "Show Signals: Last N Bars" in settings (10-100)
### 4. PRESSURE CONSISTENCY TRACKING
New intrabar analysis that tracks if the **same side dominated throughout the candle**:
```
CANDLE FORMATION ANALYSIS:
├── First Half: Who dominated? (earlyBuyVol vs earlySellVol)
├── Second Half: Who dominated? (lateBuyVol vs lateSellVol)
└── Consistent? = Same side won BOTH halves
PRESSURE CONSISTENT = Buyers dominated early AND late
OR Sellers dominated early AND late
PRESSURE MIXED = Buyers dominated early, sellers late
OR Sellers dominated early, buyers late
```
**GOD MODE requires consistent pressure** when intrabar analysis is enabled.
### 5. GOD MODE DENIAL REASON IN TABLE
When a candle scores 9.0+ but fails a gate, the table now shows **WHY**:
```
DENIAL REASONS:
├── "DENIED: WICK" = Adverse wick too large (>20%)
├── "DENIED: DELTA" = Delta dominance too weak (<70%)
├── "DENIED: SESSION" = Not in active session
├── "DENIED: VOLUME" = Volume below 1.5x
└── "DENIED: PRESSURE" = Mixed pressure during formation
```
---
## 📊 NEW TABLE SECTIONS
### CANDLE QUALITY Section (NEW)
```
══ CANDLE QUALITY ══
Body | 78% | FAT
Adv Wick | 12% | CLEAN
CDI | 8.2/10 | 🔥
```
### INTRABAR Section (UPDATED)
```
══ INTRABAR ══
IB Data | 12 bars | ✓
IB Delta | 74% BUY | 🔥
Pressure | CONSISTENT | ✓ ← NEW
```
---
## ⚙️ NEW SETTINGS
### CANDLE DOMINANCE (v8.1) Group
```
GOD MODE: Min Body Ratio = 0.70 (body must be 70%+ of range)
GOD MODE: Max Adverse Wick = 0.20 (wick against direction ≤20%)
GOD MODE: Min Delta Dominance = 0.70 (70%+ buy/sell dominance)
GOD MODE: Min Intrabar Delta = 0.68 (intrabar delta ≥68%)
GOD MODE: Require Active Session = ON
GOD MODE: Require 1.5x+ Volume = ON
```
### SIGNAL DISPLAY (v8.1) Group
```
Show Signals: Last N Bars = 30
Show Historical FVG/OB Zones = ON (zones always visible)
```
---
## 🎯 PRACTICAL IMPACT
### Before v8.1 (Too Many False GOD MODE)
```
Candle: 35 point move, score 9.2, BUT:
- Body only 55% of range (thin)
- Upper wick 35% (buyers got pushed back hard)
- Intrabar showed mixed pressure
RESULT: GOD MODE ⚡ (WRONG!)
```
### After v8.1 (Strict GOD MODE)
```
Same candle: Score 9.2, but:
- Gate 2 FAILED: Body 55% < 70% required
- Gate 3 FAILED: Wick 35% > 20% allowed
- Gate 6 FAILED: Pressure inconsistent
RESULT: DENIED: WICK (Correct - this was a fake-out candle)
```
---
## 🏆 THE NEW GOD MODE STANDARD
A TRUE GOD MODE candle must show:
1. **HIGH SCORE** (≥9.0) - Multiple confluence factors aligned
2. **FAT BODY** (≥70%) - Clear directional commitment
3. **CLEAN WICKS** (≤20% adverse) - Minimal pushback
4. **STRONG DELTA** (≥70%) - One side clearly dominated
5. **IN SESSION** - Institutional participation
6. **CONSISTENT PRESSURE** - Same side controlled throughout
**Translation:** *"Institutions stepped in with size, pushed hard in one direction, and never let up. No hesitation, no give-back. This is a candle that means business."*
---
## 📈 YM/MYM OPTIMIZATION NOTES
The default settings are tuned for YM's characteristics:
- Lower volatility than NQ/GC/BTC → Tighter gates work better
- 50 pts for S-Tier is already conservative
- 70% body ratio filters out the indecisive noise
- Session requirement is crucial - YM moves on institutional flow
### Low Volume Conditions
The strict gates actually **help** in low volume:
- Wicky candles (common in low vol) get filtered
- Pressure consistency catches fake moves
- CDI prevents thin-body noise from triggering
---
## 🚀 QUICK START
1. Apply v8.1 to your 5-minute YM chart
2. Set intrabar to "1" (1-minute) or "100T" (tick)
3. Watch the CANDLE QUALITY section in the table
4. GOD MODE will now be RARE - but TRUSTWORTHY
5. Check the DENIAL reason if score is 9+ but no ⚡
---
*v8.1 SNIPER STRICT EDITION - "Fat Candles Only"*
*© Alexandro Disla*
DXY Volatility Ranges TableThe Dollar Index (DXY) measures the US dollar's value against a basket of six major currencies, including the Euro, Japanese Yen, British Pound, Canadian Dollar, Swedish Krona, and Swiss Franc. Here are some key ranges for the DXY:
- Historical Highs and Lows:
- All-time high: 164.720 in February 1985
- All-time low: 70.698 on March 16, 2008
- Recent Trends:
- Current value: around 99.603 (as of December 5, 2025)
- 52-week high: 129.670 (November 8, 1985)
- 52-week low: 94.650 (projected target by some analysts)
- Volatility Ranges:
- Low volatility: DXY < 95
- Moderate volatility: DXY between 95-105
- High volatility: DXY > 105
- Support and Resistance Levels:
- Support: around 94.650 and 90.00
- Resistance: around 100.15/35 and 105.00






















