🐬TSI_ShadowAdded the following features to the original TSI Shadow indicator by Daveatt
- Candle color on/off
=> Displays the current trend status by coloring the chart candles.
- Background color on/off
=> Displays the current trend status by coloring the chart background.
- Conservative signal processing based on the zero line on/off
=> When calculating the trend with the TSI, a bullish trend is only confirmed above the zero line, and a bearish trend is only confirmed below the zero line.
- Conservative signal processing based on full signal alignment on/off
=> This enhances the original trend calculation (bullish when TSI and Fast MA are above Slow MA). With this option, the trend is determined by the specific alignment of all three lines: TSI, Fast MA, and Slow MA.
기존 Daveatt 유저가 개발한 TSI Shadow 에서 아래 기능을 추가 하였습니다.
- 캔들 색상 on/off
=> 캔들에 추세의 상태를 색상으로 나타냅니다.
- 배경 색상 on/off
=> 배경에 추세의 상태를 색상으로 나타냅니다.
- 0선 기준으로 신호 발생 보수적 처리 on/off
=> TSI로 추세를 계산할 때 0선 위에서는 매수추세, 0선 아래서는 매도추세를 계산합니다.
- 전체 배열 신호 발생 보수적 처리 on/off
=> TSI선과, FastMA 선이 SlowMA 위에 있을때 상승추세, 반대면 하락추세를 나타내 주던 계산식에서 TSI-FastMA-SlowMA 세가지 선의 배열 상태로 추세를 나타냅니다.
Indikatoren und Strategien
Fractal Strength OscillatorThe Fractal Strength Oscillator Indicator combines the Relative Strength Index (RSI) and Fractal Dimension Index (FDI) to identify market momentum and trend direction. By integrating RSI's momentum signals with FDI's fractal-based trend analysis, this indicator provides clear visual cues for bullish and bearish conditions through colored plots and price bars.
How It Works
RSI Calculation: Computes RSI based on a user-selected price source (default: Close) over a configurable period. Optional smoothing with various moving average types (e.g., SMA, EMA, ALMA) enhances signal clarity.
FDI Calculation: Measures market complexity using a fractal dimension over a user-defined period (default: 20). A threshold (default: 1.45) determines trend strength.
Trend Logic
Bullish Signal: RSI > 55 or FDI < threshold indicates upward momentum
Bearish Signal: RSI < 45 or FDI > threshold indicates downward momentum
Customization & Parameters
RSI Parameters: RSI length, smoothing option , MA type, MA length, ALMA sigma
FDI Parameters: FDI length, trend threshold.
Trading Applications
Momentum Trading: Use RSI and FDI signals for entry/exit points.
Trend Confirmation: Bar coloring aligns with trend signals.
Reversal Detection: Identify shifts when RSI or FDI crosses thresholds
Final Note
The Fractal Strength Oscillator Indicator is a straightforward tool for traders seeking momentum and trend insights. Its combination of RSI, FDI, and visual cues supports informed trading decisions. Backtest thoroughly and use within a broader strategy. This indicator is for educational purposes and not financial advice.
Multi-Timeframe MACD ConfluenceMulti-Timeframe MACD Confluence Indicator
This indicator plots Buy and Sell signals based on the confluence of MACD histogram direction across three different timeframes. When the MACD histogram is bullish (above zero) on all selected timeframes, a Buy signal is triggered. When it's bearish (below zero) on all, a Sell signal is shown.
🧠 Key Features:
Customizable timeframes (default: 5min, 15min, 1hr)
Uses traditional MACD: 12/26/9 EMA
Works on any asset or timeframe
Provides visual plot signals and built-in alerts
📈 This tool is ideal for traders who rely on multi-timeframe analysis to validate trend momentum before taking entries.
MGG_FX//@version=5
indicator('MGG_FX', overlay=true, max_bars_back=1000, max_labels_count=500, max_lines_count=500, max_boxes_count=500)
var GRP1 = "ASIAN RANGE"
showLines = input(title='Show Lines', defval=true, group=GRP1)
showBackground = input(title='Show Background', defval=true, group=GRP1)
showMiddleLine = input(title='Show Middle Line', defval=true, group=GRP1)
extendLines = input(title='Extend Line', defval=true, group=GRP1)
rangeTime = input.session(title='Session Time', defval='1700-0100', group=GRP1)
extendTime = input.session(title='Extend Until', defval='0100-0500', group=GRP1)
linesWidth = input.int(1, 'Box And Lines Width', minval=1, maxval=4, group=GRP1)
boxLineColor = input(color.new(#434651,50), 'Box Line Color', group=GRP1)
middleLineColor = input(color.new(#434651,50), 'Middle Line Color', group=GRP1)
backgroundColor = input(color.new(#9598a1,90), 'Box Background Color', group=GRP1)
var GRP5 = "LONDON"
showLines4 = input(title='Show Lines', defval=true, group=GRP5)
showBackground4 = input(title='Show Background', defval=true, group=GRP5)
rangeTime4 = input.session(title='Session Time', defval='0300-0400', group=GRP5)
linesWidth4 = input.int(1, 'Box And Lines Width', minval=1, maxval=4, group=GRP5)
boxLineColor4 = input(color.new(#b2b5be, 95), 'Box Line Color', group=GRP5)
backgroundColor4 = input(color.new(#b2b5be, 90), 'Box Background Color', group=GRP5)
var GRP6 = "NEWYORK"
showLines5 = input(title='Show Lines', defval=true, group=GRP6)
showBackground5 = input(title='Show Background', defval=true, group=GRP6)
rangeTime5 = input.session(title='Session Time', defval='0900-1000', group=GRP6)
linesWidth5 = input.int(1, 'Box And Lines Width', minval=1, maxval=4, group=GRP6)
boxLineColor5 = input(color.new(#b2b5be, 95), 'Box Line Color', group=GRP6)
backgroundColor5 = input(color.new(#b2b5be, 90), 'Box Background Color', group=GRP6)
////////////////////////////////////////////
inSession = not na(time(timeframe.period, rangeTime))
inExtend = not na(time(timeframe.period, extendTime))
startTime = 0
startTime := inSession and not inSession ? time : startTime
//Box lines
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 = 0.0
var high_val = 0.0
if inSession and not inSession
low_val := low
high_val := high
high_val
// Plot lines
if inSession and timeframe.isintraday
if inSession
line.delete(lowHLine)
line.delete(topHLine)
line.delete(leftVLine)
line.delete(rightVLine)
line.delete(middleHLine)
box.delete(bgBox)
if low < low_val
low_val := low
low_val
if high > high_val
high_val := high
high_val
//Create Box
//x1, y1, x2, y2
if showBackground
bgBox := box.new(startTime, high_val, time, low_val, xloc=xloc.bar_time, bgcolor=backgroundColor, border_width=0)
if showLines
lowHLine := line.new(startTime, low_val, time, low_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=linesWidth)
topHLine := line.new(startTime, high_val, time, high_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=linesWidth)
leftVLine := line.new(startTime, high_val, startTime, low_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=linesWidth)
rightVLine := line.new(time, high_val, time, low_val, xloc=xloc.bar_time, color=boxLineColor, style=line.style_solid, width=linesWidth)
//Create Middle line
if showMiddleLine
middleHLine := line.new(startTime, (high_val + low_val) / 2, time, (high_val + low_val) / 2, xloc=xloc.bar_time, color=middleLineColor, style=line.style_solid, width=linesWidth)
else
if inExtend and extendLines and not inSession 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=linesWidth)
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=linesWidth)
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=middleLineColor, style=line.style_solid, width=linesWidth)
middleHLine
////////////////////////////////////////////
inSession4 = not na(time(timeframe.period, rangeTime4))
startTime4 = 0
startTime4 := inSession4 and not inSession4 ? time : startTime4
//Box lines
var line lowHLine4 = na
var line topHLine4 = na
var line leftVLine4 = na
var line rightVLine4 = na
var line middleHLine4 = na
var box bgBox4 = na
var low_val4 = 0.0
var high_val4 = 0.0
if inSession4 and not inSession4
low_val4 := low
high_val4 := high
high_val4
// Plot lines
if inSession4 and timeframe.isintraday
if inSession4
line.delete(lowHLine4)
line.delete(topHLine4)
line.delete(leftVLine4)
line.delete(rightVLine4)
line.delete(middleHLine4)
box.delete(bgBox4)
if low < low_val4
low_val4 := low
low_val4
if high > high_val4
high_val4 := high
high_val4
//Create Box
//x1, y1, x2, y2
if showBackground4
bgBox4 := box.new(startTime4, high_val4, time, low_val4, xloc=xloc.bar_time, bgcolor=backgroundColor4, border_width=0)
if showLines4
lowHLine4 := line.new(startTime4, low_val4, time, low_val4, xloc=xloc.bar_time, color=boxLineColor4, style=line.style_solid, width=linesWidth4)
topHLine4 := line.new(startTime4, high_val4, time, high_val4, xloc=xloc.bar_time, color=boxLineColor4, style=line.style_solid, width=linesWidth4)
leftVLine4 := line.new(startTime4, high_val4, startTime4, low_val4, xloc=xloc.bar_time, color=boxLineColor4, style=line.style_solid, width=linesWidth4)
rightVLine4 := line.new(time, high_val4, time, low_val4, xloc=xloc.bar_time, color=boxLineColor4, style=line.style_solid, width=linesWidth4)
////////////////////////////////////////////
inSession5 = not na(time(timeframe.period, rangeTime5))
startTime5 = 0
startTime5 := inSession5 and not inSession5 ? time : startTime5
//Box lines
var line lowHLine5 = na
var line topHLine5 = na
var line leftVLine5 = na
var line rightVLine5 = na
var line middleHLine5 = na
var box bgBox5 = na
var low_val5 = 0.0
var high_val5 = 0.0
if inSession5 and not inSession5
low_val5 := low
high_val5 := high
high_val5
// Plot lines
if inSession5 and timeframe.isintraday
if inSession5
line.delete(lowHLine5)
line.delete(topHLine5)
line.delete(leftVLine5)
line.delete(rightVLine5)
line.delete(middleHLine5)
box.delete(bgBox5)
if low < low_val5
low_val5 := low
low_val5
if high > high_val5
high_val5 := high
high_val5
//Create Box
//x1, y1, x2, y2
if showBackground5
bgBox5 := box.new(startTime5, high_val5, time, low_val5, xloc=xloc.bar_time, bgcolor=backgroundColor5, border_width=0)
if showLines5
lowHLine5 := line.new(startTime5, low_val5, time, low_val5, xloc=xloc.bar_time, color=boxLineColor5, style=line.style_solid, width=linesWidth5)
topHLine5 := line.new(startTime5, high_val5, time, high_val5, xloc=xloc.bar_time, color=boxLineColor5, style=line.style_solid, width=linesWidth5)
leftVLine5 := line.new(startTime5, high_val5, startTime5, low_val5, xloc=xloc.bar_time, color=boxLineColor5, style=line.style_solid, width=linesWidth5)
rightVLine5 := line.new(time, high_val5, time, low_val5, xloc=xloc.bar_time, color=boxLineColor5, style=line.style_solid, width=linesWidth5)
///////////////////////////////////////////////
//INPUTS
ffRange = input.session(title='Time: ', defval='0200-0201', inline='a', group='FF')
ffcolor = input.color(color.new(#b2b5be,20),title="Color:",inline="s_1",group="FF")
ffStyle = input.string(title="-", defval=line.style_solid, options= ,inline="s_1",group="FF")
mmm1Range = input.session(title='Time: ', defval='0430-0431', inline='a', group='MMM1')
mmm1color = input.color(color.new(#b2b5be,20),title="Color:",inline="s_1",group="MMM1")
mmm1Style = input.string(title="-", defval=line.style_solid, options= ,inline="s_1",group="MMM1")
mmm2Range = input.session(title='Time: ', defval='0630-0631', inline='a', group='MMM2')
mmm2color = input.color(color.new(#b2b5be,20),title="Color:",inline="s_1",group="MMM2")
mmm2Style = input.string(title="-", defval=line.style_solid, options= ,inline="s_1",group="MMM2")
mmm3Range = input.session(title='Time: ', defval='0800-0801', inline='a', group='MMM3')
mmm3color = input.color(color.new(#b2b5be,20),title="Color:",inline="s_1",group="mmm3")
mmm3Style = input.string(title="-", defval=line.style_solid, options= ,inline="s_1",group="MMM3")
lcRange = input.session(title='Time: ', defval='1100-1101', inline='a', group='LC')
lccolor = input.color(color.new(#b2b5be,20),title="Color:",inline="s_1",group="LC")
lcStyle = input.string(title="-", defval=line.style_solid, options= ,inline="s_1",group="LC")
//Plot lines
in_session_ff = time(timeframe.period, ffRange)
sessionffActive = in_session_ff and timeframe.multiplier <= 240
var line ff = na
if sessionffActive and sessionffActive == false
ff := line.new(bar_index,high+0.001,bar_index,low-0.001,color=ffcolor, style=ffStyle)
in_session_mmm1 = time(timeframe.period, mmm1Range)
sessionmmm1Active = in_session_mmm1 and timeframe.multiplier <= 240
var line mmm1 = na
if sessionmmm1Active and sessionmmm1Active == false
mmm1 := line.new(bar_index,high+0.001,bar_index,low-0.001,color=mmm1color, style=mmm1Style)
in_session_mmm2 = time(timeframe.period, mmm2Range)
sessionmmm2Active = in_session_mmm2 and timeframe.multiplier <= 240
var line mmm2 = na
if sessionmmm2Active and sessionmmm2Active == false
mmm2 := line.new(bar_index,high+0.001,bar_index,low-0.001,color=mmm2color, style=mmm2Style)
in_session_mmm3 = time(timeframe.period, mmm3Range)
sessionmmm3Active = in_session_mmm3 and timeframe.multiplier <= 240
var line mmm3 = na
if sessionmmm3Active and sessionmmm3Active == false
mmm3 := line.new(bar_index,high+0.001,bar_index,low-0.001,color=mmm3color, style=mmm3Style)
in_session_lc = time(timeframe.period, lcRange)
sessionlcActive = in_session_lc and timeframe.multiplier <= 240
var line lc = na
if sessionlcActive and sessionlcActive == false
lc := line.new(bar_index,high+0.001,bar_index,low-0.001,color=lccolor, style=lcStyle)
//////////////////////////////////////////////////////////////////////
// Inputs
var GRP10 = "Daily Open"
daily = input.string(title='View', defval='Daily Open', group=GRP10)
_offset = input.int(0, title='Offset', minval=0, maxval=2)
o_color = input.color(color.new(#000000, 0), "Open Color", inline="1", group = GRP10)
// FUNCTIONS
t = time
isNewbar = not na(t) and (na(t ) or t > t )
tfInMinutes(simple string tf = "") =>
float chartTf =
timeframe.multiplier * (
timeframe.isseconds ? 1. / 60 :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 60. * 24 :
timeframe.isweekly ? 60. * 24 * 7 :
timeframe.ismonthly ? 60. * 24 * 30.4375 : na)
float result = tf == "" ? chartTf : request.security(syminfo.tickerid, tf, chartTf)
inTimeframe(_t) => tfInMinutes(_t) > tfInMinutes(timeframe.period)
// Range
reso(exp, res) => request.security(syminfo.tickerid, res, exp, lookahead=barmerge.lookahead_on)
getData(_t, _var) =>
o = reso(open , _t)
show = _var != "Off" and inTimeframe(_t)
_time = time(_t)
newbar = na(_time ) or _time > _time
oc = _var == 'Daily Open'
// ---------- Daily ----------
= getData("D", daily)
if d_newbar
if d_oc
line.new(x1=time, y1=d_o, x2=time_close("D"), y2=d_o, xloc=xloc.bar_time, style=line.style_dotted, color=o_color)
//-------------------- WATERMARK--------------------
////////////////////////////////////////////////////
//text inputs
title = input.string("JDVID_FX", "Tittle", group = "NICK NAME")
subtitle = input.string("𝗖𝗬𝗖𝗟𝗘 | 𝗧𝗜𝗠𝗜𝗡𝗚 | 𝗣𝗥𝗘𝗖𝗜𝗦𝗜𝗢𝗡", "Subtitle", group = "text")
//symbol info
symInfoCheck = input.bool(title="Show Symbol Info", defval=true, group = "watermark position")
symInfo = syminfo.ticker + " | " + timeframe.period + (timeframe.isminutes ? "M" : na)
date = str.format("{0}/{1}/{2}", dayofmonth(time_close), month(time_close), year(time_close))
//text positioning
textVPosition = input.string("top", "Vertical Position", options = , group = "watermark position")
textHPosition = input.string("center", "Horizontal Position", options = , group = "watermark position")
//symbol info positioning
symVPosition = input.string("bottom", "Vertical Position", options = , group = "symbol position")
symHPosition = input.string("center", "Horizontal Position", options = , group = "symbol position")
//cell size
cellWidthPercent = input.float(0, "Cell Width (%)", minval = 0, maxval = 100, tooltip = "The width of the cell as a % of the indicator's visual space. Optional. By default, auto-adjusts the width based on the text inside the cell. Value 0 has the same effect.", group = "cell size")
cellHeightPercent = input.float(0, "Cell Height (%)", minval = 0, maxval = 100, tooltip = "The height of the cell as a % of the indicator's visual space. Optional. By default, auto-adjusts the height based on the text inside of the cell. Value 0 has the same effect.", group = "cell size")
//title settings
c_title = input(color.new(color.black, 0), "Title Color", group = "title settings")
s_title = input.string("large", "Title Size", options = , group = "title settings")
a_title = input.string("center","Title Alignment", options = , group = "title settings")
//subtitle settings
c_subtitle = input(color.new(color.black, 30), "Subtitle Color", group = "subtitle settings")
s_subtitle = input.string("small", "Subtitle Size", options = , group = "subtitle settings")
a_subtitle = input.string("center","Subtitle Alignment", options = , group = "subtitle settings")
//symbol settings
c_symInfo = input(color.new(color.black, 30), "Subtitle Color", group = "symbol settings")
s_symInfo = input.string("normal", "Subtitle Size", options = , group = "symbol settings")
a_symInfo = input.string("center","Subtitle Alignment", options = , group = "symbol settings")
c_bg = input(color.new(color.blue, 100), "Background", group = "background")
//text watermark creation
var table textWatermark = table.new(textVPosition + "_" + textHPosition, 1, 3)
table.cell(textWatermark, 0, 0, title, width = cellWidthPercent, height = cellHeightPercent, text_color = c_title, text_halign = a_title, text_size = s_title, bgcolor = c_bg)
table.cell(textWatermark, 0, 1, subtitle, width = cellWidthPercent, height = cellHeightPercent, text_color = c_subtitle, text_halign = a_subtitle, text_size= s_subtitle, bgcolor = c_bg)
//symbol info watermark creation
var table symWatermark = table.new(symVPosition + "_" + symHPosition, 5, 5)
if symInfoCheck
table.cell(symWatermark, 0, 1, symInfo, width = cellWidthPercent, height = cellHeightPercent, text_color = c_symInfo, text_halign = a_symInfo, text_size = s_symInfo, bgcolor = c_bg)
table.cell(symWatermark, 0, 0, date, width = cellWidthPercent, height = cellHeightPercent, text_color = c_symInfo, text_halign = a_symInfo, text_size = s_symInfo, bgcolor = c_bg)
Dominance Signal Apex [CHE]]Dominance Signal Apex — Triple-confirmed entry markers with stateful guardrails
Summary
This indicator focuses on entry timing by plotting markers only when three conditions align: a closed-bar Heikin-Ashi bias, a monotonic stack of super-smoother filters, and the current HMA slope. A compact state machine provides guardrails: it starts a directional state on closed-bar Heikin-Ashi bias, maintains it only while the smoother stack remains ordered, and renders a marker only if HMA slope agrees. This design aims for selective signals and reduces isolated prints during mixed conditions. Markers fade over time to visualize the age and persistence of the current state.
Motivation: Why this design?
Common triggers flip frequently in noise or react late when regimes shift. The core idea is to gate entry markers through a closed-bar state plus independent filter alignment. The state machine limits premature prints, removes markers when alignment breaks, and uses the HMA as a final directional gate. The result is fewer mixed-context entries and clearer clusters during sustained trends.
What’s different vs. standard approaches?
Reference baseline: Single moving-average slope or classic MA cross signals.
Architecture differences:
Multi-length two-pole super-smoother stack with strict ordering checks.
Closed-bar Heikin-Ashi bias to start a directional state.
HMA slope as a final gate for rendering markers.
Time-based alpha fade to surface state age.
Practical effect: Entry markers appear in clusters during aligned regimes and are suppressed when conditions diverge, improving selectivity.
How it works (technical)
Measurements: Four recursive super-smoother series on price at short to medium horizons. Up regime means each shorter smoother sits below the next longer one; down regime is the inverse.
State machine: On bar close, positive Heikin-Ashi bias starts a bull state and negative bias starts a bear state. The state terminates the moment the smoother ordering breaks relative to the prior bar.
Rendering gate: A marker prints only if the active state agrees with the current HMA slope. The HMA is plotted and colored by slope for context.
Normalization and clamping: Marker transparency transitions from a starting to an ending alpha across a fixed number of bars, clamped within the allowed range.
Initialization: Persistent variables track state and bar-count since state start; Heikin-Ashi open is seeded on the first valid bar.
HTF/security: None used. State updates are closed-bar, which reduces repaint paths.
Bands: Smoothed high, low, centerline, and offset bands are computed but not rendered.
Parameter Guide
Show Markers — Toggle rendering — Default: true — Hides markers without changing logic.
Bull Color / Bear Color — Visual colors — Defaults: bright green / red — Aesthetic only.
Start Alpha / End Alpha — Transparency range — Defaults: one hundred / fifty, within zero to one hundred — Controls initial visibility and fade endpoint.
Steps — Fade length in bars — Default: eight, minimum one — Longer values extend the visual memory of a state.
Smoother Length — Internal band smoothing — Default: twenty-one, minimum two — Affects computed bands only; not drawn.
Band Multiplier — Internal band offset — Default: one point zero — No impact on markers.
Source — Input for HMA — Default: close — Align with your workflow.
Length — HMA length — Default: fifty, minimum one — Larger values reduce flips; smaller values react faster.
Reading & Interpretation
Entry markers:
Bull marker (below bar): Closed-bar Heikin-Ashi bias is positive, smoother stack remains aligned for up regime, and HMA slope is rising.
Bear marker (above bar): Closed-bar Heikin-Ashi bias is negative, smoother stack remains aligned for down regime, and HMA slope is falling.
Fade: Transparency progresses over the configured steps, indicating how long the current state has persisted.
Practical Workflows & Combinations
Trend following: Focus on marker clusters aligned with HMA color. Add structure filters such as higher highs and higher lows or lower highs and lower lows to avoid counter-trend entries.
Exits/Stops: Consider exiting or reducing risk when smoother ordering breaks, when HMA color flips, or when marker cadence thins out.
Multi-asset/Multi-TF: Suitable for liquid crypto, FX, indices, and equities. On lower timeframes, shorten HMA length and fade steps for faster response.
Behavior, Constraints & Performance
Repaint/confirmation: State transitions and marker eligibility are decided on closed bars; live bars do not commit state changes until close.
security()/HTF: Not used.
Resources: Declared max bars back of one thousand five hundred; recursive filters and persistent states; no explicit loops.
Known limits: Some delay around sharp turns; brief states may start in noisy phases but are quickly revoked when alignment fails; HMA gating can miss very early reversals.
Sensible Defaults & Quick Tuning
Start here: Keep defaults.
Too many flips: Increase HMA length and raise fade steps.
Too sluggish: Decrease HMA length and reduce fade steps.
Markers too faint/bold: Adjust start and end alpha toward lower or higher opacity.
What this indicator is—and isn’t
A selective entry-marker layer that prints only under triple confirmation with stateful guardrails. It is not a full system, not predictive, and does not handle risk. Combine with market structure, risk controls, and position management.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Best regards and happy trading
Chervolino
Dynamic Support ResistanceDynamic Support Resistance By Harpreet Daulatpuria.
Marking Support and Resistance for every time frame automatically.
MACD-V MomentumThe MACD-V (Moving Average Convergence Divergence – Volatility Normalized) is an award-winning momentum indicator created by Alex Spiroglou, CFTe, DipTA (ATAA). It improves on the traditional MACD by normalizing momentum with volatility, solving several well-known limitations of classic indicators:
✅ Time stability – readings are consistent across history
✅ Cross-market comparability – works equally on stocks, crypto, forex, and commodities
✅ Objective momentum framework – universal thresholds at +150 / -150, +50 / -50
✅ Cleaner signals – reduces false signals in ranges and lag in high momentum
By dividing the MACD spread by ATR, the indicator expresses momentum in volatility units, allowing meaningful comparison across timeframes and markets.
MACD-V defines seven objective momentum states:
Risk (Oversold): below -150
Rebounding: -150 to +50 and above signal
Rallying: +50 to +150 and above signal
Risk (Overbought): above +150
Retracing: above -50 and below signal
Reversing: -150 to -50 and below signal
Ranging: between -50 and +50 for N bars
Optional background tints highlight the active regime (Bull above 200-MA, Bear below 200-MA).
Rare extremes (e.g., MACD-V < -100 in a bull regime) are tagged for additional context.
Use Cases
Identify and track momentum lifecycles across any market
Spot rare extremes for potential reversal opportunities
Filter out low-momentum whipsaws in ranging conditions
Compare momentum strength across multiple symbols
Support systematic and rule-based strategy development
Buyer/Seller DominanceBuyer/Seller Dominance Indicator
The Buyer/Seller Dominance indicator is a sophisticated market analysis tool that combines Market Profile methodology with volume analysis to identify which side of the market is in control. It analyzes price distribution across a higher timeframe by calculating the Point of Control (POC) and Value Area, then evaluates where the current price sits relative to these key levels. The indicator processes Time Price Opportunity (TPO) data across 20 price channels to build a comprehensive volume profile of each trading session.
The dominance score is calculated using multiple factors including price position relative to POC, Value Area boundaries, volume imbalance between upper and lower profile sections, price momentum, and volume trends. This multi-factor approach provides a robust measure of market sentiment, smoothed using an EMA to filter out noise. The resulting dominance histogram visually represents whether buyers (positive values) or sellers (negative values) are controlling the market.
The indicator generates clear buy and sell signals when dominance crosses key threshold levels, with additional visual aids including background coloring to show market state (buyer/seller/neutral), overbought/oversold levels at ±50, and an information table displaying current market conditions. It's fully customizable with adjustable timeframes, sensitivity settings, Value Area percentages, and color schemes to suit different trading styles and preferences.RetryClaude can make mistakes. Please double-check responses.
FVG + FIBONACCIThe FVG + FIBONACCI indicator is a sophisticated trading tool that combines Fair Value Gap (FVG) detection with Fibonacci analysis across multiple timeframes. It automatically identifies bullish and bearish Fair Value Gaps - price areas where there is no overlap between consecutive candles, creating "gaps" that often act as significant support and resistance zones. The indicator works on any selected higher timeframe while displaying results on the current chart, making it versatile for various trading strategies and timeframe analyses.
What sets this indicator apart is its integration of Fibonacci retracement levels within each detected FVG zone. Once a Fair Value Gap is identified, the indicator automatically draws key Fibonacci levels (23.6%, 38.2%, 50%, 61.8%, and optionally 78.6%) within the gap, providing precise entry and exit points for traders. Additionally, it offers Fibonacci extensions (127.2%, 161.8%, and 261.8%) that project potential price targets beyond the FVG boundaries, helping traders plan their profit-taking strategies more effectively.
The indicator includes comprehensive customization options, allowing users to control the appearance of FVG zones, Fibonacci levels, and extension lines with different colors and styles. It features intelligent zone management with configurable maximum counts and extension lengths, automatic validity checking that grays out filled gaps, and multiple alert conditions for when price enters FVG zones or touches Fibonacci levels. The tool is designed for both swing and intraday traders who want to combine the powerful concepts of Fair Value Gaps with precise Fibonacci-based entry and exit strategies.
Cheap/Expensive Zone Highlighter V.2 Publicindicator Cheap/Expensive Zone Highlighter Ver2
Uptrend = Based on price> EMA200 (O+H+L+C)/4
Cheap zone = RSI<45
Dowtrend = Based on price< EMA200 (O+H+L+C)/4
Expensive Zone= RSI>55
RSI Divergence (CompactFX)You can now display divergences in the RSI.
In addition, the following features have been added:
- You can change the color of the RSI value when it crosses 50.
- You can display pivots for any period.
- You can display RSI for higher or lower time frames.
- You can change the color of various parts of the chart, so you can customize it to your liking and avoid boring charts.
Cheap/Expensive Zone Highlighter V.2 indicator Cheap/Expensive Zone Highlighter Ver2
Uptrend = Based on price> EMA200 (O+H+L+C)/4
Cheap zone = RSI<45
Dowtrend = Based on price< EMA200 (O+H+L+C)/4
Expensive Zone= RSI>55
Volume Based TradingYou will never seek another Indicator if practice on this one.
Volume Based Trading Indicator
Key Highlights:
🎯 Multi-EMA Setup: Dynamic 3 EMA overlays (customizable lengths and visibility) for trend analysis
📊 Opening Range Detection: Visual first candle range with selectable timeframes and sessions for breakout filtering
📈 VWAP Integration: Option to plot VWAP line with customizable style to gauge intraday average price
🌟 Supertrend Filter: ATR-based supertrend line to identify strong trending phases for signals
🔔 Flexible Buy/Sell Signals: Choose from EMA crossovers, VWAP breaks, or price vs supertrend for trade triggers
💥 Volume*Price Spike Detection: Detects significant volume-price moves with customizable threshold and chart labels
📝 Live Spike Table: Displays recent high-impact volume spike events with type, time, price, and volume details
💹 Mini Risk Management Table: Side-by-side buy and sell position calculators showing capital, stop loss, quantity, and dual profit targets — dynamically updated
🚨 Alerts & Labels: User-configurable buy/sell labels and breakout alerts enhance clarity
🎨 Customizable Visuals: Full color, font, transparency, and label text options for tailored clarity
Designed for intraday & swing traders seeking a comprehensive volume and price action toolset with integrated advanced risk management.
ATR Trailing SL FibonacciATR Trailing SL Fibonacci Indicator
This indicator combines ZigZag pattern detection with Fibonacci analysis to identify potential support and resistance levels for setting trailing stop losses.
Core Components:
ZigZag Pattern Detection
Uses imported ZigZag library to identify significant price swings
Configurable parameters:
depth: Minimum price movement threshold
deviation: Minimum deviation between swing points
backstep: Number of bars required for reversal confirmation
Fibonacci Analysis
Two display modes:
Retracements: Horizontal Fibonacci levels between ZigZag points
Timezone: Vertical Fibonacci time projections
Customizable Fibonacci levels with individual color settings
Customizable Fibonacci Levels:
Fib 0 (0%) - White
Fib A (23.6%) - Blue
Fib B (38.2%) - Green
Fib C (50%) - Gray (Default: ON)
Fib D (61.8%) - Orange
Fib E (78.6%) - Red
Fib F (100%) - White (Default: ON)
Display Features:
Visual Elements:
ZigZag line connecting swing points (toggleable)
Fibonacci level lines with colored labels
Price level labels at each Fibonacci line
Background color indicating trend direction
Customization Options:
Adjustable label sizes for Fibonacci levels and price labels
Timeframe selection for analysis
Source price selection (High/Low)
Technical Implementation:
Dynamic Updates: Automatically redraws Fibonacci levels when new ZigZag points are detected
Memory Management: Cleans up previous lines and labels to maintain chart cleanliness
Multi-timeframe Analysis: Uses request.security() for higher timeframe analysis
Trading Applications:
Stop Loss Placement: Use Fibonacci levels as dynamic trailing stop levels
Support/Resistance Identification: Key Fibonacci levels act as potential reversal zones
Trend Analysis: ZigZag direction helps identify overall market structure
Risk Management: ATR-based approach to setting stop losses relative to volatility
Usage Tips:
The 50% and 100% levels are enabled by default as they represent key psychological levels
Combine with other indicators for confirmation of Fibonacci level reactions
Use the background color as a quick visual reference for trend direction
Adjust the ZigZag parameters based on market volatility and timeframe
This indicator is particularly useful for traders who employ Fibonacci-based trading strategies and want a systematic approach to setting trailing stop losses based on market structure and key retracement levels.
FVG (Fair Value Gaps)The FVG (Fair Value Gaps) indicator is a sophisticated technical analysis tool designed to identify and display fair value gaps on trading charts across multiple timeframes. Fair value gaps represent price inefficiencies that occur when there's a complete separation between consecutive candles, creating an unfilled price zone. The indicator detects these gaps by analyzing three consecutive candles: it identifies bullish FVGs when a green middle candle creates a gap where the high of the left candle is below the low of the right candle, and bearish FVGs when a red middle candle creates a gap where the low of the left candle is above the high of the right candle.
The indicator offers comprehensive customization options and intelligent filtering capabilities. Users can select any higher timeframe for FVG detection while viewing on lower timeframes, choose to display only bullish or bearish gaps, and optionally filter for large candles only to focus on more significant market inefficiencies. The system includes automatic management features such as limiting the maximum number of displayed FVGs to prevent chart clutter, customizable extension lengths for forward projection, and a validation system that continuously monitors whether gaps remain unfilled or have been invalidated by subsequent price action.
Visually, the indicator represents FVGs as colored rectangular boxes with dashed border lines, using green for bullish gaps and red for bearish gaps with full transparency control. When FVGs become invalid (filled by price), they automatically change to gray coloring to indicate their status. The indicator includes real-time alert functionality that triggers when price enters or touches FVG zones, making it valuable for both manual trading decisions and automated trading strategies. Additionally, it features a built-in Telegram channel reference for community support and educational resources.
icreature RSI Divergence + OB/OSThis script simply showing all divergences and fill in colours when ob or os . Enjoy!
Gamma Exposure Levels by OMG (Oh My Gamma)OMG (Oh My Gamma) - Daily GEX Levels
An operational framework for Gamma analysis with daily data.
Indicator's Purpose & Demo Data
This indicator plots key strategic levels derived from Gamma Exposure (GEX) analysis. It showcases the operational logic of OhMyGamma analytical engine.
IMPORTANT: The levels plotted by this public script are based on a past date's snapshot for demonstration purposes. They are not valid for live trading and will not update automatically.
The real edge comes from using the fresh data structure provided daily.
How to Read the Levels
This indicator is designed to provide actionable intelligence, not just data. Here's how to read it:
The Levels: Each line represents a key strategic zone (Zero Gamma, Call/Put Walls, etc.) where a market reaction is statistically probable due to dealer hedging flows.
Line Thickness = Strategic Importance: The thickness of each line directly corresponds to its strategic rating. Thicker, solid lines represent higher-conviction zones.
Labels & Tooltips: Hover over a level's label on your chart to see its full description, confluences, and strategic rating.
Pro Tip: The Power of Confluence
This indicator is not a standalone "system". It's an institutional-grade intelligence layer. Its predictive power increases exponentially when used to find confluence with your own analysis.
The highest-probability trades occur when a key Gamma level aligns with:
Price Action: Key support/resistance zones, order blocks, or liquidity pools.
Volumetric Indicators: High/Low Volume Nodes (HVN/LVN) from Volume Profile, VWAP, and Anchored VWAP.
Use these levels to confirm your setups and gain the conviction to act.
How to Get the Daily Updated Script
This indicator requires a new Pine Script code each day to load the current session's data.
To get the daily updated code feel free to visit www.ohmygamma.com
Feedback & Suggestions
This tool is built for the community. Suggestions for improvements and new features are highly welcome and help the project evolve. Feel free to get in touch via the contact form on the website.
Disclaimer: This tool is for informational and educational purposes only. Trading involves significant risk. The authors assume no responsibility for any trading decisions.
Order Block TraderThe Order Block (HTF) indicator automatically detects and plots higher timeframe order blocks directly onto your chart. Order blocks represent zones of institutional buying or selling pressure that often act as powerful support or resistance levels when revisited. This tool is designed for traders who want to align their lower timeframe entries with higher timeframe structure, helping to filter noise and focus on the most meaningful price levels.
What This Indicator Does
Scans a higher timeframe of your choice to identify potential bullish and bearish order blocks.
Draws the blocks on your current chart, extending them forward in time as reference zones.
Highlights trade signals when price returns to and reacts at these order blocks.
Optionally triggers alerts so that you never miss a potential opportunity.
How It Can Be Used Successfully
Bullish Setup: A bullish order block may serve as a demand zone. When price revisits it, look for bullish confirmation such as a bounce from the block low and a close back above it. This can be used as a long entry point, with stops placed just below the block.
Bearish Setup: A bearish order block may serve as a supply zone. When price revisits it, watch for rejection at the block high followed by a close back below it. This can be used as a short entry point, with stops placed just above the block.
Multi-Timeframe Trading: Use order blocks from larger timeframes (e.g., 4H or Daily) as key zones, then drill down to shorter timeframes (e.g., 5m, 15m) to refine entries.
Confluence with Other Tools: Combine order block signals with your existing strategy—trend indicators, Fibonacci levels, moving averages, or candlestick patterns—for stronger confirmation and improved win probability.
Trade Management: Treat order blocks as zones rather than single price levels. Position sizing, stop placement, and risk-to-reward management remain essential for long-term success.
This indicator is not a standalone trading system but a framework for identifying high-probability supply and demand zones. Traders who apply it consistently—alongside proper risk management and confirmation methods—can improve their ability to catch trend continuations and reversals at structurally important levels.
Daily EMA21 — Step LineIndicator: Daily EMA-21 Step Line
A lightweight tool that brings the Daily EMA-21 onto any timeframe chart as a clean, flat “step” line. It helps you see where price is in relation to a key higher-timeframe moving average, without cluttering your chart.
What It Does
Daily EMA Overlay: Fetches the Daily EMA-21 value and plots it on your chart, no matter what timeframe you’re viewing.
Step-Style Line: Drawn as a horizontal “step” line that only updates once per daily bar, keeping levels crisp and stable.
Repaint Control: Option to use the prior day’s EMA (stable, no intraday repaint) or today’s live-updating EMA.
Alerts: Optional alerts when price crosses above or below the Daily EMA-21.
How It Works
Daily Data Pull: Uses request.security to pull the Daily EMA-21 into any chart.
Flat Within Day: The value stays constant intraday and only “steps” at the next daily open.
Toggle Live/Prior: Choose between a repaint-free prior day close or an intraday-updating live EMA.
Configuration Settings
EMA Length: Default 21 (can be adjusted).
Live vs Prior: Toggle between today’s live EMA or yesterday’s confirmed EMA.
Line Color & Width: Fully customizable.
Alerts: Cross-up and cross-down alerts can be enabled via TradingView’s alert system.
Notes
Built in Pine v5 for reliability and compatibility.
Minimal by design — no tables, no clutter, just a higher-timeframe reference line.
Ideal for swing traders who want the Daily EMA-21 visible on intraday charts (e.g., 65m or 195m).
Not trade advice: this is a context tool to support your own strategy and risk management.
AI Agent PRIMEFLOW v1AI Agent PRIMEFLOW v1 — Trend + Breakout + Smart Stops
*By AI Agent Community*
## Overview
PRIMEFLOW v1 is a clean, rules-based signal tool that fires only when **trend + regime + market structure** align.
It combines a **baseline trend**, a **volatility regime filter** (ATR z-score), and **Donchian breakouts**, with **ATR bands** and **Chandelier-style stops** for risk control. Optional **HTF confirmation** keeps entries in sync with higher-timeframe bias.
> Built from public trading concepts (EMA/KAMA/HMA baselines, Donchian breakout, ATR trailing). No proprietary code used.
---
## What it does (3-Layer Confirmation)
1. **Trend** – EMA50/200 relationship + user-selectable baseline (EMA/HMA/KAMA).
2. **Regime** – ATR% z-score filter reduces chop; “Conservative/Balanced/Aggressive” modes adjust threshold.
3. **Structure** – Donchian breakout confirms momentum beyond recent range.
Only when all three align do BUY/SELL labels appear. ATR bands and dynamic stops are plotted for exits and trailing.
---
## Signals & Risk
* **Long**: Trend up (EMA50>EMA200), regime trending, price crosses above baseline **and** breaks the prior Donchian high.
* **Short**: Mirror conditions to the downside.
* **Stops**: Auto-plotted **Long/Short Stop** (ATR-based, Chandelier-style).
* **Targets**: Consider 1.5–2× ATR or ATR bands; keep a runner with trailing stop.
---
## Inputs (key)
* **Signal Mode**: Conservative / Balanced / Aggressive (regime threshold).
* **Use Heikin Ashi Source** (optional smoothing).
* **Structure Lookback (Donchian)**.
* **Volatility Lookback** (for ATR z-score).
* **Baseline Type & Length**: EMA / HMA / KAMA.
* **Trend Filter EMAs**: Fast (default 50) vs Slow (default 200).
* **HTF Confirmation**: set a higher TF (blank = off).
* **ATR Length & Multiplier** (bands & stops).
* **Style toggles**: Bands, regime background, labels.
---
## Recommended Presets
**XAUUSD – M15 (scalping/intraday)**
* Mode: *Balanced* · Baseline: *EMA 50* · Donchian: *20* · ATR: *10 × 2.5* · HTF: *H1*.
**XAUUSD – H1 (intraday)**
* Baseline: *KAMA 50* · Donchian: *25* · ATR: *14 × 2.5* · HTF: *H4*.
**BTCUSDT – H1 (crypto)**
* Baseline: *EMA 100* · Donchian: *30* · ATR: *14 × 2.0* · HTF: *H4* · Mode: *Conservative* in chop.
---
## Alerts (ready)
Create alerts **Once Per Bar Close**:
* **PRIMEFLOW Long** – long entry condition met.
* **PRIMEFLOW Short** – short entry condition met.
* **Trail Flip (Long)** – long trailing stop flips (exit/trim).
* **Trail Flip (Short)** – short trailing stop flips.
Tip: Route alerts to your bot/Telegram/WA webhook. Include placeholders (e.g., `{{ticker}} | {{interval}} | {{close}} | LONG/SHORT | SL: {{plot("Long Stop")}}`).
---
## Best Practices
* Avoid taking breakouts that are **>1.5× ATR** away from baseline (overextended).
* Re-enter on pullbacks while trend & regime remain valid.
* Around high-impact news (NFP/FOMC), wait 15–30 minutes after release.
* Use **HTF 4×** your chart TF (e.g., M15→H1, H1→H4).
---
## Who it’s for
Swing/scalp traders who want higher-quality trend entries with **built-in structure confirmation** and **clear risk lines**, especially on **XAUUSD** and **BTC**.
---
## Notes
* This is an **indicator** (not a strategy). A strategy/backtest version can be provided.
* Educational purposes only. Not financial advice. Trading involves risk.
**Tags:** trend, breakout, ATR, Donchian, chandelier stop, regime filter, XAUUSD, BTC, scalping, intraday, multi-timeframe, heikin ashi
**Changelog**
v1.0 – Initial release: 3-Layer Confirmation, ATR bands/stops, HTF bias, 4 alerts.
Regression Channel (ShareScope-style, parallel)What it does
Replicates ShareScope’s Trend of displayed data look: a single straight linear-regression line (dashed) across a chosen window with parallel, constant-width bands above and below, plus optional shading.
Use it to see the overall trend gradient for a period and a statistically sized channel based on the fit’s residual error.
How it works (math, short)
Computes an OLS regression once over the analysis window.
Residual standard error s is derived from SSE and degrees of freedom (n−2).
Band half-width is constant across the window:
Mean CI (narrower): half = z * s / √n
Prediction (wider): half = z * s * √(1 + 1/n)
Three straight, parallel lines are drawn from the regression endpoints; midline is dashed.
This is intentionally not a tapered CI (which widens at the ends). It matches the visual behaviour of ShareScope’s shaded trend line channel.
Inputs
Source – Price series (Close, High, Low, HL2, etc.).
Use last N bars / N (bars) – Rolling window length.
From / To (date mode) – Alternative fixed date window.
Confidence (%) – 90 / 95 / 99 / Custom (uses z≈t).
Custom Z (t) – Override the quantile if desired.
Prediction bands – Use wider prediction envelope instead of mean CI.
Shade region + colors / opacity / line width.
Usage
To mimic ShareScope exactly, pick the same date span (use date mode) and set Confidence 99%.
Choose Prediction OFF for a tighter “confidence” look; ON for a wider, more permissive channel.
If ShareScope used High as source, set Source = High here as well.
Notes & limitations
TradingView does not expose the visible viewport to Pine. The script cannot auto-read “displayed data.” Use last N bars or date range.
Bands are parallel by design. Prices may close outside; the channel does not bend.
Window capped at 5,000 bars for performance. No alerts are emitted.
Differences vs TV’s native tools
Linear Regression (drawing) – manual object; no statistical sizing or shading.
Linear Regression Channel (indicator) – uses price standard deviations around the regression; width is a user stdev multiple.
This script – uses residual error of the OLS fit and a z/t quantile to size a statistically meaningful parallel channel.
Changelog
r3.1 – Guard fix (no return at top level), minor refactor, stable line updates.
r3 – Switched to single-fit OLS with parallel constant-width bands (ShareScope look).
(Earlier experimental builds r1–r2.2 implemented rolling/tapered CI; superseded.)
Disclaimer: Educational use only. Not investment advice.
FVG + FIBONACCIThe FVG + FIBONACCI indicator is a sophisticated trading tool that combines Fair Value Gap (FVG) detection with Fibonacci analysis across multiple timeframes. It automatically identifies bullish and bearish Fair Value Gaps - price areas where there is no overlap between consecutive candles, creating "gaps" that often act as significant support and resistance zones. The indicator works on any selected higher timeframe while displaying results on the current chart, making it versatile for various trading strategies and timeframe analyses.
What sets this indicator apart is its integration of Fibonacci retracement levels within each detected FVG zone. Once a Fair Value Gap is identified, the indicator automatically draws key Fibonacci levels (23.6%, 38.2%, 50%, 61.8%, and optionally 78.6%) within the gap, providing precise entry and exit points for traders. Additionally, it offers Fibonacci extensions (127.2%, 161.8%, and 261.8%) that project potential price targets beyond the FVG boundaries, helping traders plan their profit-taking strategies more effectively.
The indicator includes comprehensive customization options, allowing users to control the appearance of FVG zones, Fibonacci levels, and extension lines with different colors and styles. It features intelligent zone management with configurable maximum counts and extension lengths, automatic validity checking that grays out filled gaps, and multiple alert conditions for when price enters FVG zones or touches Fibonacci levels. The tool is designed for both swing and intraday traders who want to combine the powerful concepts of Fair Value Gaps with precise Fibonacci-based entry and exit strategies.