10 EMA -1.5*ATRHelps identify potential support zones below the EMA by subtracting market volatility (ATR) from the EMA.
Useful for trend-following traders and pullback strategies to estimate dynamic entry zones.
Can act as a volatility-adjusted trailing level.
Indikator dan strategi
CODEX#33CODEX#33 is a dynamic EMA-based system designed to visualize trend strength, volatility, and key market zones. It includes:
5 customizable EMAs (13, 21, 50, 200, 800)
Optional labels with future offset to keep charts clean
An EMA 50-based volatility cloud using standard deviation
Full control over visibility, colors, and label display
Built for clean execution and easy visual tracking of momentum shifts across all timeframes.
Simplicity is key!
ALMA Trend-boxThis indicator uses the ALMA (Arnaud Legoux Moving Average) – a special type of moving average that provides a smoother and more responsive trend line. Based on the slope (angle) of the ALMA line and the price position relative to it, the indicator:
Colors candles in three different ways (to reflect market structure),
Plots the ALMA line on the chart,
Detects consolidation and highlights it with blue candles, background shading, and horizontal "box" lines.
📘 Candle Colors – How to Interpret Them
Candle Color Meaning Interpretation
🟩 Green Uptrend ALMA is sloping upward and price is above ALMA – look for buying opportunities.
🟥 Red Downtrend ALMA is sloping downward and price is below ALMA – look for selling opportunities.
🔵 Blue Sideways (Consolidation) Weak or neutral trend – market is moving sideways or accumulating.
🔵 What Do Blue Candles and the “Trend-box” Mean?
Blue candles represent consolidation periods, which occur when:
The slope of the ALMA line is less than ±40°, indicating a lack of strong trend,
The price behavior is not consistent with the direction of the slope (e.g., price is below ALMA even though ALMA is pointing upward).
During this time:
Blue candles and a blue background appear to visually highlight the consolidation,
Two dashed horizontal lines (a “box”) are drawn at the high and low of the consolidation range.
📌 The Trend-box helps you visually spot ranging markets, which often precede strong breakouts.
📈 How to Use This Indicator in Practice
Trend Following Strategy:
When candles are green → consider long trades.
When candles are red → consider short trades.
Use additional indicators (like RSI, MACD, or volume) to confirm entries.
Breakout Trading:
When blue candles and the box appear, wait for the price to:
Break above the box → potential long breakout.
Break below the box → potential short breakout.
You can set pending orders (buy stop/sell stop) just outside the box range.
Avoiding Choppy Entries:
Blue candles signal uncertainty – avoid entering impulsively during this time. Wait for trend confirmation.
⚙️ Adjustable Settings
ALMA Length – controls how quickly the moving average reacts.
Slope Threshold – determines the minimum angle required to define a trend.
Candle Colors – fully customizable (green/red/blue by default).
✅ Conclusion
ALMA Trend-box is a powerful visual tool for identifying:
Trending conditions (bullish or bearish),
Sideways markets (consolidation),
Breakout setups with clearly marked zones.
It works well on its own or as part of a larger trading system. Blue candles tell you to be patient, while transitions into green/red candles indicate developing trends.
Forex Session Levels + Dashboard (AEST)This is the only indicator you will EVER need for the breakthrough and retest strategy.
Follow me on IG for more trading tips!
@LiviuPircalabu10
Forex Session Levels + Dashboard (AEST)This is the only indicator you will EVER need on the breakout and retest strategy.
Follow me on IG:
@liviupircalabu10
Forex Session Levels + Dashboard (AEST)This is a script showing all the key levels you will ever need for the breakout and retest strategy.
Follow my IG:
@liviupircalabu10
Forex Session Levels + Dashboard (AEST)Forex Session Indicators for Breakout and Retest Strategy (AEST)
Triple Moving Average Custom v2EMA SMA cross for better confirmation I personally using with Key Level.
Customizable Alligator (Pane)Trend indicators that give you best signal. After Crossing indicated short term trend change.
Time//@version=5
indicator('Time', overlay=true, max_bars_back=1000, max_labels_count=500, max_lines_count=500, max_boxes_count=500)
// Asia
var GRP1 = "Asian Session"
extendLines = true
rangeTime = '1705-0101'
boxLineColor = input(color.new(color.rgb(212, 129, 4), int(80)), 'Line color', group=GRP1)
backgroundColor = input(color.new(color.rgb(221, 133, 0), int(90)), "Background color", group=GRP1)
// A session
inSession1 = not na(time(timeframe.period, rangeTime))
inExtend = not na(time(timeframe.period, "0100-0801"))
startTime = 0
startTime := inSession1 and not inSession1 ? time : startTime
var line lowHLine = na
var line topHLine = na
var line leftVLine = na
var line rightVLine = na
var line middleHLine = na
var box bgBox = na
var low_val = float(0.0)
var high_val = 0.0
if inSession1 and not inSession1
low_val := low
high_val := high
high_val
if inSession1 and timeframe.isintraday
if inSession1
line.delete(lowHLine)
line.delete(topHLine)
line.delete(middleHLine)
box.delete(bgBox)
if low < low_val
low_val := low
low_val
if high > high_val
high_val := high
high_val
if true and timeframe.multiplier <= 60
bgBox := box.new(startTime, high_val, time, low_val, xloc=xloc.bar_time, bgcolor=backgroundColor, border_width=0)
if true and timeframe.multiplier <= 60
lowHLine := line.new(startTime, low_val, time, low_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
topHLine := line.new(startTime, high_val, time, high_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
if true and timeframe.multiplier <= 60
middleHLine := line.new(startTime, (high_val + low_val) / 2, time, (high_val + low_val) / 2, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
else
if inExtend and extendLines and not inSession1 and timeframe.isintraday
time1 = line.get_x1(lowHLine)
time2 = line.get_x2(lowHLine)
price = line.get_y1(lowHLine)
line.delete(lowHLine)
lowHLine := line.new(time1, price, time, price, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
time1 := line.get_x1(topHLine)
time2 := line.get_x2(topHLine)
price := line.get_y1(topHLine)
line.delete(topHLine)
topHLine := line.new(time1, price, time, price, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
time1 := line.get_x1(middleHLine)
time2 := line.get_x2(middleHLine)
price := line.get_y1(middleHLine)
line.delete(middleHLine)
middleHLine := line.new(time1, price, time, price, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=1)
middleHLine
// LDN & NY
remove(str, pos, length) =>
arr = str.split(str, "")
len = array.size(arr)
pos1 = pos >= 0 ? pos : len + pos
length_ = length >= 0 ? length : len - pos1
pos2 = pos1 + length_
if len > 0 and length_ > 0 and pos1 >= 0 and pos2 <= len
for i = 0 to length_ - 1
array.remove(arr, pos1)
res = array.join(arr, "")
CalcOffs(timeStr) =>
hourStartStr = remove(timeStr, 2, 7)
hourStart = str.tonumber(hourStartStr)
minStartTemp = remove(timeStr, 0, 2)
minStartStr = remove(minStartTemp, 2, 5)
minStart = str.tonumber(minStartStr)
timeEndStr = remove(timeStr, 0, 5)
hourEndStr = remove(timeEndStr, 2, 2)
hourEnd = str.tonumber(hourEndStr)
minEndStr = remove(timeEndStr, 0, 2)
minEnd = str.tonumber(minEndStr)
time_diff_minutes = str.tostring(math.abs((hourEnd * 60 + minEnd) - (hourStart * 60 + minStart)))
// Settings
isLondon = true
loSessionTime = input.session("0300-0400", title="Session", group = "London Session")
loBoxColor = input.color(color.new(#2962ff, 80), title="Background color", group = "London Session")
isNewYorkTrap = true
nytrapSessionTime = input.session("0900-1000", title="Session", group ="New York Trap Session")
nytrapBoxColor = input.color(color.new(#2962ff, 80), title="Background color", group = "New York Trap Session")
loOffs = math.round(str.tonumber(CalcOffs(loSessionTime)))
nytrapOffs = math.round(str.tonumber(CalcOffs(nytrapSessionTime)))
dayOffs = 1440
if timeframe.period == "S"
loOffs := loOffs * 60
nytrapOffs := nytrapOffs * 60
dayOffs := dayOffs * 60
if timeframe.period == "5S"
loOffs := loOffs * 60 / 5
nytrapOffs := nytrapOffs * 60/5
dayOffs := dayOffs * 60 / 5
if timeframe.period == "15S"
loOffs := loOffs * 60 / 15
nytrapOffs := nytrapOffs *60 / 15
dayOffs := dayOffs * 60 / 15
if timeframe.period == "30S"
loOffs := loOffs * 60 / 30
nytrapOffs := nytrapOffs *60 / 30
dayOffs := dayOffs * 60 / 30
if timeframe.period == "3"
loOffs := loOffs / 3
nytrapOffs := nytrapOffs /3
dayOffs := dayOffs / 3
if timeframe.period == "5"
loOffs := loOffs / 5
nytrapOffs := nytrapOffs / 5
dayOffs := dayOffs / 5
if timeframe.period == "15"
loOffs := loOffs / 15
nytrapOffs := nytrapOffs / 15
dayOffs := dayOffs / 15
if timeframe.period == "30"
loOffs := loOffs / 30
nytrapOffs := nytrapOffs / 30
dayOffs := dayOffs / 30
if timeframe.period == "45"
loOffs := loOffs / 45
nytrapOffs := nytrapOffs / 45
dayOffs := dayOffs / 45
if timeframe.period == "60"
loOffs := loOffs / 60
nytrapOffs := nytrapOffs / 60
dayOffs := dayOffs / 60
if timeframe.period == "120"
loOffs := loOffs / 120
nytrapOffs := nytrapOffs / 120
dayOffs := dayOffs / 120
if timeframe.period == "180"
loOffs := loOffs / 180
nytrapOffs := nytrapOffs / 180
dayOffs := dayOffs / 180
if timeframe.period == "240"
loOffs := loOffs / 240
nytrapOffs := nytrapOffs / 240
dayOffs := dayOffs / 240
if true and timeframe.multiplier <= 60
if isLondon
var sessionHighPrice = 0.0
var sessionLowPrice = 0.0
var sessionOpenPrice = 0.0
var box sessionBox = na
var line sessionTopLine = na
var line sessionLowLine = na
inSession = not na(time(timeframe.period, loSessionTime)) and timeframe.isintraday
sessionStart = inSession and not inSession
if sessionStart
sessionHighPrice := high
sessionLowPrice := low
sessionOpenPrice := open
else if inSession
sessionHighPrice := math.max(sessionHighPrice, high)
sessionLowPrice := math.min(sessionLowPrice, low)
if sessionStart
sessionBox := box.new(left=bar_index, top=na, right=bar_index+loOffs, bottom=na, border_color = color.new(#ffffff, 100), bgcolor=loBoxColor)
sessionTopLine := line.new(x1=bar_index, y1=na, x2=bar_index+loOffs, y2=na, style=line.style_solid, width=0)
sessionLowLine := line.new(x1=bar_index, y1=na, x2=bar_index+loOffs, y2=na, style=line.style_solid, width=0)
if inSession
box.set_top(sessionBox, sessionHighPrice)
box.set_bottom(sessionBox, sessionLowPrice)
if isNewYorkTrap
var sessionHighPrice = 0.0
var sessionLowPrice = 0.0
var sessionOpenPrice = 0.0
var box sessionBox = na
var line sessionTopLine = na
var line sessionLowLine = na
inSession = not na(time(timeframe.period, nytrapSessionTime)) and timeframe.isintraday
sessionStart = inSession and not inSession
if sessionStart
sessionHighPrice := high
sessionLowPrice := low
sessionOpenPrice := open
else if inSession
sessionHighPrice := math.max(sessionHighPrice, high)
sessionLowPrice := math.min(sessionLowPrice, low)
if sessionStart
sessionBox := box.new(left=bar_index, top=na, right=bar_index+nytrapOffs, bottom=na, border_color = color.new(#ffffff, 100), bgcolor=nytrapBoxColor)
sessionTopLine := line.new(x1= bar_index, y1=na, x2=bar_index+nytrapOffs, y2=na, style=line.style_solid, width=0)
sessionLowLine := line.new(x1= bar_index, y1=na, x2=bar_index+nytrapOffs, y2=na, style=line.style_solid, width=0)
if inSession
box.set_top(sessionBox, sessionHighPrice)
box.set_bottom(sessionBox, sessionLowPrice)
box.set_top(sessionBox, sessionHighPrice)
box.set_bottom(sessionBox, sessionLowPrice)
var GRPFF = 'Frankfurt Session'
ffsession = '0200-0201'
ffcolor = input.color(color.new(#787b86, 70), title='Line color', group=GRPFF)
var GRPMMM1 = 'Magic Manipulation Minute 1'
mmm1time = '0430-0431'
mmm1color = input.color(color.new(#787b86, 70), title="Line color",group=GRPMMM1)
var GRPMMM2 = 'Magic Manipulation Minute 2'
mmm2time = '0630-0631'
mmm2color = input.color(color.new(#787b86, 70), title="Line color", group=GRPMMM2)
var GRPNYO = 'New York Open'
nyosession = '0800-0801'
nyocolor = input.color(color.new(#787b86, 70),title="Line color", group=GRPNYO)
var GRPLC = 'London Close'
lcsession = '1100-1101'
lccolor = input.color(color.new(#787b86, 0),title="Line color", group=GRPLC)
asiansize = (high_val-low_val)/4
in_session_ff = time(timeframe.period, ffsession)
sessionffActive = in_session_ff and timeframe.multiplier <= 15
var line ff = na
if sessionffActive and sessionffActive == false
ff := line.new(bar_index, high+asiansize, bar_index, low-asiansize, color=ffcolor, style=line.style_solid)
in_session_mmm1 = time(timeframe.period, mmm1time)
sessionmmm1Active = in_session_mmm1 and timeframe.multiplier <= 15
var line mmm1 = na
if sessionmmm1Active and sessionmmm1Active == false
mmm1 := line.new(bar_index, high+asiansize, bar_index, low-asiansize, color=mmm1color, style=line.style_solid)
in_session_mmm2 = time(timeframe.period, mmm2time)
sessionmmm2Active = in_session_mmm2 and timeframe.multiplier <= 15
var line mmm2 = na
if sessionmmm2Active and sessionmmm2Active == false
mmm2 := line.new(bar_index, high+asiansize, bar_index, low-asiansize, color=mmm2color, style=line.style_solid)
in_session_nyo = time(timeframe.period, nyosession)
sessionnyoActive = in_session_nyo and timeframe.multiplier <= 15
var line nyo = na
if sessionnyoActive and sessionnyoActive == false
nyo := line.new(bar_index, high+asiansize, bar_index, low-asiansize, color=nyocolor, style=line.style_solid)
in_session_lc = time(timeframe.period, lcsession)
sessionlcActive = in_session_lc and timeframe.multiplier <= 15
var line lc = na
if sessionlcActive and sessionlcActive == false
lc := line.new(bar_index, high+asiansize, bar_index, low-asiansize, color=lccolor, style=line.style_solid)
Position Size CalculatorIt is a position size calculation with 0.05% buffer to take swift entry on either sides with 0.5% risk on your overall capital
Patrick BTC Exponential ModelA test of an exp reversion model, WIP
BTC(t) = a × e^(r × t)
Where:
- BTC(t) = Bitcoin price at time t
- a = Anchor coefficient (fitted parameter)
- r = Growth rate per year (fitted parameter)
- t = Years since anchor date
- e = Euler's number (2.71828...)
Credit to @GallantCryptoYT (but based on, no implication of endorsement either way)
Supply & Demand Zones - [RealFact]Supply & Demand Zones -
This indicator automatically detects potential Supply and Demand Zones based on price action characteristics such as imbalance, engulfing patterns, and structural shifts. It’s designed to help traders identify key areas of interest where price is likely to react.
🔍 Features:
• Auto-detection of Demand (support) and Supply (resistance) zones
• Adjustable zone length
• Color-coded: Green for Demand zones, Red for Supply zones
🧠 Ideal For:
• Price Action Traders
• Order Block and Smart Money Strategy Users
• Those trading using FVG or structural break models
⚠️ Note:
This tool is intended for visual aid and market context analysis, not as a direct buy/sell signal. Always use it alongside your trading system and risk management plan.
✅ Created by
HMA 6/12 Crossover Strategy with 0.1% SL & Reverse on SLBest Strategy for BTCUSD works best with 3 min time frame
Enhanced MFI Divergence with Pivot SignalsEnhanced MFI Divergence with Pivot Signals
This custom Pine Script indicator identifies bullish and bearish divergences between price action and the Money Flow Index (MFI), enhancing the trader's ability to spot potential reversal zones with visual clarity and optional confirmation filters.
📊 Key Features:
🔹 MFI Divergence Detection
The script detects:
Bullish divergence when price forms a lower low but MFI forms a higher low.
Bearish divergence when price forms a higher high but MFI forms a lower high.
🔹 Pivot-Based Logic
To ensure high-confidence signals, the script uses pivot point logic to mark local highs and lows on both price and MFI. This avoids noise and focuses only on meaningful swing points.
🔹 Optional Confirmation Filter
You can enable a filter that checks if MFI is above 50 during bullish divergence (implying buying pressure) and below 50 for bearish divergence (implying selling pressure), adding an extra layer of confirmation.
🔹 Signal Markers
Signals are visually displayed on the chart using colored triangles:
Green triangle up for bullish divergence
Red triangle down for bearish divergence
🔹 Background Color Shading
The background is optionally shaded green or red based on MFI’s relationship to its smoothed WMA, helping you visually interpret trend bias.
🔹 Pivot Point Debugging Tools
Circles and crosses mark pivot points on price and MFI for debugging and visual clarity.
🔹 Alerts Ready
Real-time alerts notify you instantly when a bullish or bearish MFI divergence occurs, allowing for quick decision-making.
⚙️ How It Helps
This indicator is designed to help traders:
Anticipate price reversals by identifying hidden strength or weakness in momentum,
Avoid false breakouts,
Confirm entries or exits based on volume-weighted momentum divergence.
It works especially well when used alongside trend-following tools like moving averages, support/resistance zones, or additional volume indicators.
Golden Key: Opening Channel DashboardGolden Key: Opening Channel Dashboard
Complementary to the original Golden Key – The Frequency
Upgrade of 10 Monday's 1H Avg Range + 30-Day Daily Range
This indicator provides a structured dashboard to monitor the opening channel range and related metrics on 15m and 5m charts. Built to work alongside the Golden Key methodology, it focuses on pip precision, average volatility, and SL sizing.
What It Does
Detects first 4 candles of the session:
15m chart → first 4 Monday candles (1 hour)
5m chart → first 4 candles of each day (20 minutes)
Calculates pip range of the opening move
Stores and averages the last 10 such ranges
Calculates daily range average over 10 or 30 days
Generates SL size based on your multiplier setting
Auto-adjusts for FX, JPY, and XAUUSD pip sizes
Displays all values in a clean table in the top-right
How to Use It
Add to a 15m or 5m chart
Compare the current opening range to the average
Use the daily average to assess broader volatility
Define SL size using the opening range x multiplier
Customize display colors per table row
About This Script
This is not a visual box-style indicator. It is designed to complement the original “Golden Key – The Frequency” by focusing on metric output. It is also an upgraded version of the earlier "10 Monday’s 1H Avg Range" script, now supporting multi-timeframe logic and additional customization.
Disclaimer
This is a technical analysis tool. It does not provide trading advice. Use it in combination with your own research and strategy.
VWAP Supply & Demand Zones PRO**Overview:**
This script represents a major evolution of the original "VWAP Supply and Demand Zones" indicator. Initially created to explore price interaction with VWAP, it has now matured into a robust and feature-rich tool for identifying high-probability zones of institutional buying and selling pressure. The update introduces volume and momentum validation, dynamic zone management, alert logic, and a visual dashboard (HUD) — all designed for improved precision and clarity. The structural improvements, anti-repainting logic, and significant added utility warranted releasing this as a new script rather than a minor update.
---
### What It Does:
This indicator dynamically detects **supply and demand zones** using VWAP-based logic combined with **volume** and **momentum confirmation**. When price crosses VWAP with strength, it identifies the potential zone of excess demand (below VWAP) or supply (above VWAP), marking it visually with colored regions on the chart.
Each zone is extended for a user-defined duration, monitored for touch interactions (tests), and tracked for possible breaks. The script helps traders interpret price behavior around these institutional zones as either **reversal** opportunities or **continuation** confirmation depending on context and strategy preference.
---
### How It Works:
* **VWAP Basis**: Zones are anchored at VWAP at the time of a significant cross.
* **Volume & Momentum Filters**: Crosses are only considered valid if backed by above-average volume and notable price momentum.
* **Zone Drawing**: Validated supply and demand zones are drawn as boxes on the chart. Each is extended forward for a customizable number of bars.
* **Touch Counting**: Zones track the number of price touches. Alerts are issued after a user-defined number of tests.
* **Break Detection**: If price closes significantly beyond a zone boundary, the zone is marked as broken and visually dimmed.
* **Visual Dashboard (HUD)**: A compact real-time HUD displays VWAP value, active zone counts, and current market bias.
---
### How to Use It:
**Reversal Trading:**
* Look for price **rejecting** a zone after touching it.
* Use rejection candles or secondary indicators (e.g., RSI divergence) to confirm.
* These setups may offer low-risk entries when price respects the zone.
**Continuation Trading:**
* A **break of a zone** suggests strong directional bias.
* Use confirmed zone breaks to enter in the direction of momentum.
* Ideal in trending environments, especially with high volume and ATR movement.
---
### Key Inputs:
* **VWAP Length**: Moving VWAP period (default: 20)
* **Zone Width %**: Percentage size of zone buffer (default: 0.5%)
* **Min Touches**: How many times price must test a zone before alerts trigger
* **Zone Extension**: How far into the future zones are projected
* **Volume & ATR Filters**: Ensure only strong, valid crossovers create zones
---
### Alerts:
You can enable alerts for:
* **New zone creation**
* **Zone tests (after minimum touch count)**
* **Zone breaks**
* **VWAP crosses**
* **Active presence inside a zone (entry conditions)**
These alerts help automate market monitoring, making it suitable for discretionary or systematic workflows.
---
### Why It's a New Script:
This is not a cosmetic update. The internal logic, signal generation, filtering methodology, visual engine, and UX framework have been entirely rebuilt from the ground up. The result is a highly adaptive, precision-oriented tool — appropriate for intraday scalpers and swing traders alike. It goes far beyond the original in terms of functionality and reliability, justifying a fresh release.
---
### Suitable Markets and Timeframes:
* Works across all liquid markets (crypto, equities, futures, forex)
* Best used on timeframes where volume data is stable (5m and above recommended)
* Recalibrate inputs for optimal detection across instruments
HTF 3rd Weekly High/LowThis indicator plots horizontal lines for the high and low of a selected past weekly candle, allowing traders to visualize higher time frame (HTF) structure on lower time frame charts (e.g., 1H, 4H, etc.).
Features:
Custom Weekly Range Selection: Use the dropdown to choose which weekly candle to reference — from the current week (0) to up to five weeks back.
Clean Horizontal Lines: High and low levels of the selected week are drawn as persistent horizontal lines.
Automatic Text Labels: Labels like Week-3H and Week-3L are shown on the right side of the chart, matching the week selected.
Customization:
Line colors
Line width and style (solid, dotted, dashed)
Text label offset
Automatic Refresh: Levels and labels are redrawn at the start of each new week to stay current with your selection.