Trader Criptom4N//@version=5
indicator("Trader Criptom4N", "🐳Criptom4N®🐳"
, overlay = true
, max_labels_count = 500
, max_lines_count = 500
, max_boxes_count = 500
, max_bars_back = 500)
//INICIA MODULO SUPERTREND
// Get user input
//INICIA MODULO SUPERTREND
// Get user input
// Instead of inputs, define constants or variables directly
// Instead of inputs, define constants or variables directly
var float nsensitivity = 1
nbuysell = input.bool(true, 'Buy/Sell Signal', inline = "BSNM",group='BUY/SELL SIGNAL')
// SMA
sma4_strong = ta.sma(close, 8)
sma5_strong = ta.sma(close, 9)
// Signal Generation
// Signal Generation Function
supertrend(_src, factor, atrLen) =>
atr = ta.atr(atrLen)
upperBand = _src + factor * atr
lowerBand = _src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close > prevUpperBand ? upperBand : prevUpperBand
var int direction = na
var float superTrend = na
prevSuperTrend = nz(superTrend )
if na(atr )
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
= supertrend(close, nsensitivity*7,10)
//señales
bull = ta.crossover(close, supertrend)
bear = ta.crossunder(close, supertrend)
//FIN MODULO SUPERTREND
// Risk Management
levels2 = input.bool(true, "Show TP/SL Levels2" , group = "Risk Management" , inline = "MMDB2")
lvlLines = input.bool(true, "Show Lines ", inline="levels2", group = "Risk Management")
linesStyle = input.string("SOLID", "", , inline="levels2", group = "Risk Management")
lvlDistance = input.int(40, "Distance", 1, inline="levels2", group = "Risk Management")
lvlDecimals = input.int(4, " Decimals", 1, 8, inline="levels2", group = "Risk Management")
atrRisk = input.int(3, "Risk % ", 1, group = "Risk Management" , inline="levels3")
atrLen = input.int(14, " ATR Length", 1, group = "Risk Management" , inline="levels3")
decimals = lvlDecimals == 1 ? "#.#" : lvlDecimals == 2 ? "#.##" : lvlDecimals == 3 ? "#.###" : lvlDecimals == 4 ? "#.####" : lvlDecimals == 5 ? "#.#####" : lvlDecimals == 6 ? "#.######" : lvlDecimals == 7 ? "#.#######" : "#.########"
CirrusCloud = input(true, 'Cirrus Cloud', group='TREND FEATURES')
// Plots
windowsize = 100
offset = 0.9
sigma = 6
//plot(ta.alma(source, windowsize, offset, sigma))
windowsize2 = 310
offset2 = 0.85
sigma2 = 32
//plot(ta.alma(source, windowsize2, offset2, sigma2))
// Chart Features
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x ), t)
smoothrng = ta.ema(avrng, wper) * m
smoothrng
smrng = smoothrng(close, 22, 6)
rngfilt(x, r) =>
rngfilt = x
rngfilt := x > nz(rngfilt ) ? x - r < nz(rngfilt ) ? nz(rngfilt ) : x - r : x + r > nz(rngfilt ) ? nz(rngfilt ) : x + r
rngfilt
filt = rngfilt(close, smrng)
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
upward = 0.0
upward := filt > filt ? nz(upward ) + 1 : filt < filt ? 0 : nz(upward )
downward = 0.0
downward := filt < filt ? nz(downward ) + 1 : filt > filt ? 0 : nz(downward )
filtcolor = upward > 0 ? color.new(#00e2ff, 50) : downward > 0 ? color.new(#fe0100, 50) : color.new(#56328f, 0)
// Trend Cloud
tclength = 600
hullma = ta.wma(2*ta.wma(close, tclength/2)-ta.wma(close, tclength), math.floor(math.sqrt(tclength)))
// Chart Features
x1 = 22
x2 = 9
x3 = 15
x4 = 5
smoothrngX1(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x ), t)
smoothrngX1 = ta.ema(avrng, wper) * m
smoothrngX1
smrngx1x = smoothrngX1(close, x1, x2)
smrngx1x2 = smoothrngX1(close, x3, x4)
rngfiltx1x1(x, r) =>
rngfiltx1x1 = x
rngfiltx1x1 := x > nz(rngfiltx1x1 ) ? x - r < nz(rngfiltx1x1 ) ? nz(rngfiltx1x1 ) : x - r : x + r > nz(rngfiltx1x1 ) ? nz(rngfiltx1x1 ) : x + r
rngfiltx1x1
filtx1 = rngfiltx1x1(close, smrngx1x)
filtx12 = rngfiltx1x1(close, smrngx1x2)
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
upwardx1 = 0.0
upwardx1 := filtx1 > filtx1 ? nz(upwardx1 ) + 1 : filtx1 < filtx1 ? 0 : nz(upwardx1 )
downwardx1 = 0.0
downwardx1 := filtx1 < filtx1 ? nz(downwardx1 ) + 1 : filtx1 > filtx1 ? 0 : nz(downwardx1 )
filtx1colorx1 = color.rgb(0, 187, 212, 100)
xxx1 = plot(CirrusCloud ? filtx1 : na, color=filtx1colorx1, linewidth=1, title='Trend Tracer', editable = false)
xxx2 = plot(CirrusCloud ? filtx12 : na, color=filtx1colorx1, linewidth=1, title='Trend Tracer', editable = false)
fill(xxx1, xxx2, color= filtx1 > filtx12 ? color.rgb(254, 0, 0, 86) : color.rgb(21, 255, 0, 86))
trigger2 = bull ? 1 : 0
countBull = ta.barssince(bull)
countBear = ta.barssince(bear)
trigger = nz(countBull, bar_index) < nz(countBear, bar_index) ? 1 : 0
atrBand = ta.atr(atrLen) * atrRisk
atrStop = trigger == 1 ? low - atrBand : high + atrBand
// Colors
green = #2BBC4D, green2 = color.rgb(0, 221, 0, 27)
red = #C51D0B, red2 = #c51d0b
adxlen = 15
dilen = 15
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
adx(dilen, adxlen) =>
= dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
adx
sig = adx(dilen, adxlen)
// range ADX threshold
sidewaysThreshold = input.int(title='ADX Sideways Threshold (10-30)', minval=2, defval=15)
// boolean expression to see if the ADX is below tehe sideways threshold
bool isSideways = sig < sidewaysThreshold
// adding the option to color the bars when in a trading range
useBarColor = true
bColor = isSideways ? #b102fc : na
barcolor(useBarColor ? bColor : na)
barcolor(close > supertrend ? #3cff00 : #fe0100)
percentStop = input.float(1, "Stop Loss % (0 to Disable)", 0, group="BUY & SELL SIGNALS")
srcStop = close
lastTrade(src) => ta.valuewhen(bull or bear, src, 0)
entry_y = lastTrade(srcStop)
stop_y = lastTrade(atrStop)
tp1_y = (entry_y - lastTrade(atrStop)) * 1 + entry_y
tp2_y = (entry_y - lastTrade(atrStop)) * 2 + entry_y
tp3_y = (entry_y - lastTrade(atrStop)) * 3 + entry_y
labelTpSl(y, txt, color) =>
label labelTpSl = percentStop != 0 ? label.new(bar_index + 1, y, txt, xloc.bar_index, yloc.price, color, label.style_label_left, #000000, size.normal) : na
label.delete(labelTpSl )
if (levels2)
labelTpSl(entry_y, " Entry -- " + str.tostring(entry_y, decimals), color.gray)
labelTpSl(stop_y , " Stop Loss -- " + str.tostring(stop_y, decimals), #f90808)
labelTpSl(tp1_y, " TP 1 -- " + str.tostring(tp1_y, decimals), #00ff08)
labelTpSl(tp2_y, " TP 2 -- " + str.tostring(tp2_y, decimals), #00ff08)
labelTpSl(tp3_y, " TP 3 -- " + str.tostring(tp3_y, decimals), #00ff08)
style2 = linesStyle == "SOLID" ? line.style_solid : linesStyle == "DASHED" ? line.style_dashed : line.style_dotted
lineTpSl(y, color) =>
line lineTpSl = percentStop != 0 ? line.new(bar_index - (trigger ? countBull : countBear) + 4, y, bar_index + 1, y, xloc.bar_index, extend.none, color, style2) : na
line.delete(lineTpSl )
if (lvlLines)
lineTpSl(entry_y, color.green)
lineTpSl(stop_y, color.red)
lineTpSl(tp1_y, color.green)
lineTpSl(tp2_y, color.green)
lineTpSl(tp3_y, color.green)
y1 = low - (ta.atr(30) * 2), y1B = low - ta.atr(30)
y2 = high + (ta.atr(30) * 2), y2B = high + ta.atr(30)
buy = bull and nbuysell ? label.new(bar_index, y1, sma4_strong >= sma5_strong ? "🚀" : "🚀", xloc.bar_index, yloc.price, color.rgb(10, 247, 18, 60), label.style_label_up, #000000, size.normal) : na
sell = bear and nbuysell ? label.new(bar_index, y2, sma4_strong <= sma5_strong ? "🐻" : "🐻", xloc.bar_index, yloc.price, color.rgb(239, 12, 12, 66), label.style_label_down, #000000, size.normal) : na
int volSen = 3
plotchar(volSen, "volSen", "", location.top)
// Get Components
ema1 = ta.ema(ohlc4, 5*volSen)
ema2 = ta.ema(ohlc4, 9*volSen)
ema3 = ta.ema(ohlc4, 13*volSen)
ema4 = ta.ema(ohlc4, 34*volSen)
ema5 = ta.ema(ohlc4, 50*volSen)
alertcondition(bull, title='Buy Signal', message = "BUY")
alertcondition(bear, title='sell Signal', message = "BUY")
//-----------------------------------------------------------------------------{
//Constants
//-----------------------------------------------------------------------------{
color TRANSP_CSS = #ffffff00
//Tooltips
string MODE_TOOLTIP = 'Allows to display historical Structure or only the recent ones'
string STYLE_TOOLTIP = 'Indicator color theme'
string COLOR_CANDLES_TOOLTIP = 'Display additional candles with a color reflecting the current trend detected by structure'
string SHOW_INTERNAL = 'Display internal market structure'
string CONFLUENCE_FILTER = 'Filter non significant internal structure breakouts'
string SHOW_SWING = 'Display swing market Structure'
string SHOW_SWING_POINTS = 'Display swing point as labels on the chart'
string SHOW_SWHL_POINTS = 'Highlight most recent strong and weak high/low points on the chart'
string INTERNAL_OB = 'Display internal order blocks on the chart Number of internal order blocks to display on the chart'
string SWING_OB = 'Display swing order blocks on the chart Number of internal swing blocks to display on the chart'
string FILTER_OB = 'Method used to filter out volatile order blocks It is recommended to use the cumulative mean range method when a low amount of data is available'
string SHOW_EQHL = 'Display equal highs and equal lows on the chart'
string EQHL_BARS = 'Number of bars used to confirm equal highs and equal lows'
string EQHL_THRESHOLD = 'Sensitivity threshold in a range (0, 1) used for the detection of equal highs & lows Lower values will return fewer but more pertinent results'
string SHOW_FVG = 'Display fair values gaps on the chart'
string AUTO_FVG = 'Filter out non significant fair value gaps'
string FVG_TF = 'Fair value gaps timeframe'
string EXTEND_FVG = 'Determine how many bars to extend the Fair Value Gap boxes on chart'
string PED_ZONES = 'Display premium, discount, and equilibrium zones on chart'
//-----------------------------------------------------------------------------{
//Settings
//-----------------------------------------------------------------------------{
//General
//----------------------------------------{
mode = input.string('Historical'
, options =
, group = 'Smart Money Concepts'
, tooltip = MODE_TOOLTIP)
style = input.string('Colored'
, options =
, group = 'Smart Money Concepts'
, tooltip = STYLE_TOOLTIP)
show_trend = input(false, 'Color Candles'
, group = 'Smart Money Concepts'
, tooltip = COLOR_CANDLES_TOOLTIP)
//----------------------------------------}
//Internal Structure
//----------------------------------------{
show_internals = input(false, 'Show Internal Structure'
, group = 'Real Time Internal Structure'
, tooltip = SHOW_INTERNAL)
show_ibull = input.string('All', 'Bullish Structure'
, options =
, inline = 'ibull'
, group = 'Real Time Internal Structure')
swing_ibull_css = input(#089981, ''
, inline = 'ibull'
, group = 'Real Time Internal Structure')
//Bear Structure
show_ibear = input.string('All', 'Bearish Structure'
, options =
, inline = 'ibear'
, group = 'Real Time Internal Structure')
swing_ibear_css = input(#f23645, ''
, inline = 'ibear'
, group = 'Real Time Internal Structure')
ifilter_confluence = input(false, 'Confluence Filter'
, group = 'Real Time Internal Structure'
, tooltip = CONFLUENCE_FILTER)
internal_structure_size = input.string('Tiny', 'Internal Label Size'
, options =
, group = 'Real Time Internal Structure')
//----------------------------------------}
//Swing Structure
//----------------------------------------{
show_Structure = input(true, 'Show Swing Structure'
, group = 'Real Time Swing Structure'
, tooltip = SHOW_SWING)
//Bull Structure
show_bull = input.string('All', 'Bullish Structure'
, options =
, inline = 'bull'
, group = 'Real Time Swing Structure')
swing_bull_css = input(color.rgb(0, 0, 0), ''
, inline = 'bull'
, group = 'Real Time Swing Structure')
//Bear Structure
show_bear = input.string('All', 'Bearish Structure'
, options =
, inline = 'bear'
, group = 'Real Time Swing Structure')
swing_bear_css = input(#000000, ''
, inline = 'bear'
, group = 'Real Time Swing Structure')
swing_structure_size = input.string('Small', 'Swing Label Size'
, options =
, group = 'Real Time Swing Structure')
//Swings
show_swings = input(false, 'Show Swings Points'
, inline = 'swings'
, group = 'Real Time Swing Structure'
, tooltip = SHOW_SWING_POINTS)
length = input.int(50, ''
, minval = 10
, inline = 'swings'
, group = 'Real Time Swing Structure')
show_hl_swings = input(true, 'Show Strong/Weak High/Low'
, group = 'Real Time Swing Structure'
, tooltip = SHOW_SWHL_POINTS)
//----------------------------------------}
//Order Blocks
//----------------------------------------{
show_iob = input(false, 'Internal Order Blocks'
, inline = 'iob'
, group = 'Order Blocks'
, tooltip = INTERNAL_OB)
iob_showlast = input.int(5, ''
, minval = 1
, inline = 'iob'
, group = 'Order Blocks')
show_ob = input(true, 'Swing Order Blocks'
, inline = 'ob'
, group = 'Order Blocks'
, tooltip = SWING_OB)
ob_showlast = input.int(5, ''
, minval = 1
, inline = 'ob'
, group = 'Order Blocks')
ob_filter = input.string('Atr', 'Order Block Filter'
, options =
, group = 'Order Blocks'
, tooltip = FILTER_OB)
ibull_ob_css = input.color(#ffdd0033, 'Internal Bullish OB'
, group = 'Order Blocks')
ibear_ob_css = input.color(#ffdd0033, 'Internal Bearish OB'
, group = 'Order Blocks')
bull_ob_css = input.color(color.rgb(255, 255, 255, 80), 'Bullish OB'
, group = 'Order Blocks')
bear_ob_css = input.color(color.rgb(255, 255, 255, 80), 'Bearish OB'
, group = 'Order Blocks')
//----------------------------------------}
//EQH/EQL
//----------------------------------------{
show_eq = input(false, 'Equal High/Low'
, group = 'EQH/EQL'
, tooltip = SHOW_EQHL)
eq_len = input.int(3, 'Bars Confirmation'
, minval = 1
, group = 'EQH/EQL'
, tooltip = EQHL_BARS)
eq_threshold = input.float(0.1, 'Threshold'
, minval = 0
, maxval = 0.5
, step = 0.1
, group = 'EQH/EQL'
, tooltip = EQHL_THRESHOLD)
eq_size = input.string('Tiny', 'Label Size'
, options =
, group = 'EQH/EQL')
//----------------------------------------}
//Fair Value Gaps
//----------------------------------------{
show_fvg = input(true, 'Fair Value Gaps'
, group = 'Fair Value Gaps'
, tooltip = SHOW_FVG)
fvg_auto = input(true, "Auto Threshold"
, group = 'Fair Value Gaps'
, tooltip = AUTO_FVG)
fvg_tf = input.timeframe('', "Timeframe"
, group = 'Fair Value Gaps'
, tooltip = FVG_TF)
bull_fvg_css = input.color(#ddff006f, 'Bullish FVG'
, group = 'Fair Value Gaps')
bear_fvg_css = input.color(#f2ff0060, 'Bearish FVG'
, group = 'Fair Value Gaps')
fvg_extend = input.int(10, "Extend FVG"
, minval = 0
, group = 'Fair Value Gaps'
, tooltip = EXTEND_FVG)
//----------------------------------------}
//Previous day/week high/low
//----------------------------------------{
//Daily
show_pdhl = input(false, 'Daily'
, inline = 'daily'
, group = 'Highs & Lows MTF')
pdhl_style = input.string('⎯⎯⎯', ''
, options =
, inline = 'daily'
, group = 'Highs & Lows MTF')
pdhl_css = input(#2157f3, ''
, inline = 'daily'
, group = 'Highs & Lows MTF')
//Weekly
show_pwhl = input(false, 'Weekly'
, inline = 'weekly'
, group = 'Highs & Lows MTF')
pwhl_style = input.string('⎯⎯⎯', ''
, options =
, inline = 'weekly'
, group = 'Highs & Lows MTF')
pwhl_css = input(#2157f3, ''
, inline = 'weekly'
, group = 'Highs & Lows MTF')
//Monthly
show_pmhl = input(false, 'Monthly'
, inline = 'monthly'
, group = 'Highs & Lows MTF')
pmhl_style = input.string('⎯⎯⎯', ''
, options =
, inline = 'monthly'
, group = 'Highs & Lows MTF')
pmhl_css = input(#2157f3, ''
, inline = 'monthly'
, group = 'Highs & Lows MTF')
//----------------------------------------}
//Premium/Discount zones
//----------------------------------------{
show_sd = input(false, 'Premium/Discount Zones'
, group = 'Premium & Discount Zones'
, tooltip = PED_ZONES)
premium_css = input.color(#f23645, 'Premium Zone'
, group = 'Premium & Discount Zones')
eq_css = input.color(#b2b5be, 'Equilibrium Zone'
, group = 'Premium & Discount Zones')
discount_css = input.color(#089981, 'Discount Zone'
, group = 'Premium & Discount Zones')
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
n = bar_index
atr = ta.atr(200)
cmean_range = ta.cum(high - low) / n
//HL Output function
hl() =>
//Get ohlc values function
get_ohlc()=> [close , open , high, low, high , low ]
//Display Structure function
display_Structure(x, y, txt, css, dashed, down, lbl_size)=>
structure_line = line.new(x, y, n, y
, color = css
, style = dashed ? line.style_dashed : line.style_solid)
structure_lbl = label.new(int(math.avg(x, n)), y, txt
, color = TRANSP_CSS
, textcolor = css
, style = down ? label.style_label_down : label.style_label_up
, size = lbl_size)
if mode == 'Present'
line.delete(structure_line )
label.delete(structure_lbl )
//Swings detection/measurements
swings(len)=>
var os = 0
upper = ta.highest(len)
lower = ta.lowest(len)
os := high > upper ? 0 : low < lower ? 1 : os
top = os == 0 and os != 0 ? high : 0
btm = os == 1 and os != 1 ? low : 0
//Order block coordinates function
ob_coord(use_max, loc, target_top, target_btm, target_left, target_type)=>
min = 99999999.
max = 0.
idx = 1
ob_threshold = ob_filter == 'Atr' ? atr : cmean_range
//Search for highest/lowest high within the structure interval and get range
if use_max
for i = 1 to (n - loc)-1
if (high - low ) < ob_threshold * 2
max := math.max(high , max)
min := max == high ? low : min
idx := max == high ? i : idx
else
for i = 1 to (n - loc)-1
if (high - low ) < ob_threshold * 2
min := math.min(low , min)
max := min == low ? high : max
idx := min == low ? i : idx
array.unshift(target_top, max)
array.unshift(target_btm, min)
array.unshift(target_left, time )
array.unshift(target_type, use_max ? -1 : 1)
//Set order blocks
display_ob(boxes, target_top, target_btm, target_left, target_type, show_last, swing, size)=>
for i = 0 to math.min(show_last-1, size-1)
get_box = array.get(boxes, i)
box.set_lefttop(get_box, array.get(target_left, i), array.get(target_top, i))
box.set_rightbottom(get_box, array.get(target_left, i), array.get(target_btm, i))
box.set_extend(get_box, extend.right)
color css = na
if swing
if style == 'Monochrome'
css := array.get(target_type, i) == 1 ? color.new(#b2b5be, 80) : color.new(#5d606b, 80)
border_css = array.get(target_type, i) == 1 ? #b2b5be : #5d606b
box.set_border_color(get_box, border_css)
else
css := array.get(target_type, i) == 1 ? bull_ob_css : bear_ob_css
box.set_border_color(get_box, css)
box.set_bgcolor(get_box, css)
else
if style == 'Monochrome'
css := array.get(target_type, i) == 1 ? color.new(#b2b5be, 80) : color.new(#5d606b, 80)
else
css := array.get(target_type, i) == 1 ? ibull_ob_css : ibear_ob_css
box.set_border_color(get_box, css)
box.set_bgcolor(get_box, css)
//Line Style function
get_line_style(style) =>
out = switch style
'⎯⎯⎯' => line.style_solid
'----' => line.style_dashed
'····' => line.style_dotted
//Set line/labels function for previous high/lows
phl(h, l, tf, css)=>
var line high_line = line.new(na,na,na,na
, xloc = xloc.bar_time
, color = css
, style = get_line_style(pdhl_style))
var label high_lbl = label.new(na,na
, xloc = xloc.bar_time
, text = str.format('P{0}H', tf)
, color = TRANSP_CSS
, textcolor = css
, size = size.small
, style = label.style_label_left)
var line low_line = line.new(na,na,na,na
, xloc = xloc.bar_time
, color = css
, style = get_line_style(pdhl_style))
var label low_lbl = label.new(na,na
, xloc = xloc.bar_time
, text = str.format('P{0}L', tf)
, color = TRANSP_CSS
, textcolor = css
, size = size.small
, style = label.style_label_left)
hy = ta.valuewhen(h != h , h, 1)
hx = ta.valuewhen(h == high, time, 1)
ly = ta.valuewhen(l != l , l, 1)
lx = ta.valuewhen(l == low, time, 1)
if barstate.islast
ext = time + (time - time )*20
//High
line.set_xy1(high_line, hx, hy)
line.set_xy2(high_line, ext, hy)
label.set_xy(high_lbl, ext, hy)
//Low
line.set_xy1(low_line, lx, ly)
line.set_xy2(low_line, ext, ly)
label.set_xy(low_lbl, ext, ly)
//-----------------------------------------------------------------------------}
//Global variables
//-----------------------------------------------------------------------------{
var trend = 0, var itrend = 0
var top_y = 0., var top_x = 0
var btm_y = 0., var btm_x = 0
var itop_y = 0., var itop_x = 0
var ibtm_y = 0., var ibtm_x = 0
var trail_up = high, var trail_dn = low
var trail_up_x = 0, var trail_dn_x = 0
var top_cross = true, var btm_cross = true
var itop_cross = true, var ibtm_cross = true
var txt_top = '', var txt_btm = ''
//Alerts
bull_choch_alert = false
bull_bos_alert = false
bear_choch_alert = false
bear_bos_alert = false
bull_ichoch_alert = false
bull_ibos_alert = false
bear_ichoch_alert = false
bear_ibos_alert = false
bull_iob_break = false
bear_iob_break = false
bull_ob_break = false
bear_ob_break = false
eqh_alert = false
eql_alert = false
//Structure colors
var bull_css = style == 'Monochrome' ? #b2b5be
: swing_bull_css
var bear_css = style == 'Monochrome' ? #b2b5be
: swing_bear_css
var ibull_css = style == 'Monochrome' ? #b2b5be
: swing_ibull_css
var ibear_css = style == 'Monochrome' ? #b2b5be
: swing_ibear_css
//Labels size
var internal_structure_lbl_size = internal_structure_size == 'Tiny'
? size.tiny
: internal_structure_size == 'Small'
? size.small
: size.normal
var swing_structure_lbl_size = swing_structure_size == 'Tiny'
? size.tiny
: swing_structure_size == 'Small'
? size.small
: size.normal
var eqhl_lbl_size = eq_size == 'Tiny'
? size.tiny
: eq_size == 'Small'
? size.small
: size.normal
//Swings
= swings(length)
= swings(5)
//-----------------------------------------------------------------------------}
//Pivot High
//-----------------------------------------------------------------------------{
var line extend_top = na
var label extend_top_lbl = label.new(na, na
, color = TRANSP_CSS
, textcolor = bear_css
, style = label.style_label_down
, size = size.tiny)
if top
top_cross := true
txt_top := top > top_y ? 'HH' : 'LH'
if show_swings
top_lbl = label.new(n-length, top, txt_top
, color = TRANSP_CSS
, textcolor = bear_css
, style = label.style_label_down
, size = swing_structure_lbl_size)
if mode == 'Present'
label.delete(top_lbl )
//Extend recent top to last bar
line.delete(extend_top )
extend_top := line.new(n-length, top, n, top
, color = bear_css)
top_y := top
top_x := n - length
trail_up := top
trail_up_x := n - length
if itop
itop_cross := true
itop_y := itop
itop_x := n - 5
//Trailing maximum
trail_up := math.max(high, trail_up)
trail_up_x := trail_up == high ? n : trail_up_x
//Set top extension label/line
if barstate.islast and show_hl_swings
line.set_xy1(extend_top, trail_up_x, trail_up)
line.set_xy2(extend_top, n + 20, trail_up)
label.set_x(extend_top_lbl, n + 20)
label.set_y(extend_top_lbl, trail_up)
label.set_text(extend_top_lbl, trend < 0 ? 'Strong High' : 'Weak High')
//-----------------------------------------------------------------------------}
//Pivot Low
//-----------------------------------------------------------------------------{
var line extend_btm = na
var label extend_btm_lbl = label.new(na, na
, color = TRANSP_CSS
, textcolor = bull_css
, style = label.style_label_up
, size = size.tiny)
if btm
btm_cross := true
txt_btm := btm < btm_y ? 'LL' : 'HL'
if show_swings
btm_lbl = label.new(n - length, btm, txt_btm
, color = TRANSP_CSS
, textcolor = bull_css
, style = label.style_label_up
, size = swing_structure_lbl_size)
if mode == 'Present'
label.delete(btm_lbl )
//Extend recent btm to last bar
line.delete(extend_btm )
extend_btm := line.new(n - length, btm, n, btm
, color = bull_css)
btm_y := btm
btm_x := n-length
trail_dn := btm
trail_dn_x := n-length
if ibtm
ibtm_cross := true
ibtm_y := ibtm
ibtm_x := n - 5
//Trailing minimum
trail_dn := math.min(low, trail_dn)
trail_dn_x := trail_dn == low ? n : trail_dn_x
//Set btm extension label/line
if barstate.islast and show_hl_swings
line.set_xy1(extend_btm, trail_dn_x, trail_dn)
line.set_xy2(extend_btm, n + 20, trail_dn)
label.set_x(extend_btm_lbl, n + 20)
label.set_y(extend_btm_lbl, trail_dn)
label.set_text(extend_btm_lbl, trend > 0 ? 'Strong Low' : 'Weak Low')
//-----------------------------------------------------------------------------}
//Order Blocks Arrays
//-----------------------------------------------------------------------------{
var iob_top = array.new_float(0)
var iob_btm = array.new_float(0)
var iob_left = array.new_int(0)
var iob_type = array.new_int(0)
var ob_top = array.new_float(0)
var ob_btm = array.new_float(0)
var ob_left = array.new_int(0)
var ob_type = array.new_int(0)
//-----------------------------------------------------------------------------}
//Pivot High BOS/CHoCH
//-----------------------------------------------------------------------------{
//Filtering
var bull_concordant = true
if ifilter_confluence
bull_concordant := high - math.max(close, open) > math.min(close, open - low)
//Detect internal bullish Structure
if ta.crossover(close, itop_y) and itop_cross and top_y != itop_y and bull_concordant
bool choch = na
if itrend < 0
choch := true
bull_ichoch_alert := true
else
bull_ibos_alert := true
txt = choch ? 'CHoCH' : 'BOS'
if show_internals
if show_ibull == 'All' or (show_ibull == 'BOS' and not choch) or (show_ibull == 'CHoCH' and choch)
display_Structure(itop_x, itop_y, txt, ibull_css, true, true, internal_structure_lbl_size)
itop_cross := false
itrend := 1
//Internal Order Block
if show_iob
ob_coord(false, itop_x, iob_top, iob_btm, iob_left, iob_type)
//Detect bullish Structure
if ta.crossover(close, top_y) and top_cross
bool choch = na
if trend < 0
choch := true
bull_choch_alert := true
else
bull_bos_alert := true
txt = choch ? 'CHoCH' : 'BOS'
if show_Structure
if show_bull == 'All' or (show_bull == 'BOS' and not choch) or (show_bull == 'CHoCH' and choch)
display_Structure(top_x, top_y, txt, bull_css, false, true, swing_structure_lbl_size)
//Order Block
if show_ob
ob_coord(false, top_x, ob_top, ob_btm, ob_left, ob_type)
top_cross := false
trend := 1
//-----------------------------------------------------------------------------}
//Pivot Low BOS/CHoCH
//-----------------------------------------------------------------------------{
var bear_concordant = true
if ifilter_confluence
bear_concordant := high - math.max(close, open) < math.min(close, open - low)
//Detect internal bearish Structure
if ta.crossunder(close, ibtm_y) and ibtm_cross and btm_y != ibtm_y and bear_concordant
bool choch = false
if itrend > 0
choch := true
bear_ichoch_alert := true
else
bear_ibos_alert := true
txt = choch ? 'CHoCH' : 'BOS'
if show_internals
if show_ibear == 'All' or (show_ibear == 'BOS' and not choch) or (show_ibear == 'CHoCH' and choch)
display_Structure(ibtm_x, ibtm_y, txt, ibear_css, true, false, internal_structure_lbl_size)
ibtm_cross := false
itrend := -1
//Internal Order Block
if show_iob
ob_coord(true, ibtm_x, iob_top, iob_btm, iob_left, iob_type)
//Detect bearish Structure
if ta.crossunder(close, btm_y) and btm_cross
bool choch = na
if trend > 0
choch := true
bear_choch_alert := true
else
bear_bos_alert := true
txt = choch ? 'CHoCH' : 'BOS'
if show_Structure
if show_bear == 'All' or (show_bear == 'BOS' and not choch) or (show_bear == 'CHoCH' and choch)
display_Structure(btm_x, btm_y, txt, bear_css, false, false, swing_structure_lbl_size)
//Order Block
if show_ob
ob_coord(true, btm_x, ob_top, ob_btm, ob_left, ob_type)
btm_cross := false
trend := -1
//-----------------------------------------------------------------------------}
//Order Blocks
//-----------------------------------------------------------------------------{
//Set order blocks
var iob_boxes = array.new_box(0)
var ob_boxes = array.new_box(0)
//Delete internal order blocks box coordinates if top/bottom is broken
for element in iob_type
index = array.indexof(iob_type, element)
if close < array.get(iob_btm, index) and element == 1
array.remove(iob_top, index)
array.remove(iob_btm, index)
array.remove(iob_left, index)
array.remove(iob_type, index)
bull_iob_break := true
else if close > array.get(iob_top, index) and element == -1
array.remove(iob_top, index)
array.remove(iob_btm, index)
array.remove(iob_left, index)
array.remove(iob_type, index)
bear_iob_break := true
//Delete internal order blocks box coordinates if top/bottom is broken
for element in ob_type
index = array.indexof(ob_type, element)
if close < array.get(ob_btm, index) and element == 1
array.remove(ob_top, index)
array.remove(ob_btm, index)
array.remove(ob_left, index)
array.remove(ob_type, index)
bull_ob_break := true
else if close > array.get(ob_top, index) and element == -1
array.remove(ob_top, index)
array.remove(ob_btm, index)
array.remove(ob_left, index)
array.remove(ob_type, index)
bear_ob_break := true
iob_size = array.size(iob_type)
ob_size = array.size(ob_type)
if barstate.isfirst
if show_iob
for i = 0 to iob_showlast-1
array.push(iob_boxes, box.new(na,na,na,na, xloc = xloc.bar_time))
if show_ob
for i = 0 to ob_showlast-1
array.push(ob_boxes, box.new(na,na,na,na, xloc = xloc.bar_time))
if iob_size > 0
if barstate.islast
display_ob(iob_boxes, iob_top, iob_btm, iob_left, iob_type, iob_showlast, false, iob_size)
if ob_size > 0
if barstate.islast
display_ob(ob_boxes, ob_top, ob_btm, ob_left, ob_type, ob_showlast, true, ob_size)
//-----------------------------------------------------------------------------}
//EQH/EQL
//-----------------------------------------------------------------------------{
var eq_prev_top = 0.
var eq_top_x = 0
var eq_prev_btm = 0.
var eq_btm_x = 0
if show_eq
eq_top = ta.pivothigh(eq_len, eq_len)
eq_btm = ta.pivotlow(eq_len, eq_len)
if eq_top
max = math.max(eq_top, eq_prev_top)
min = math.min(eq_top, eq_prev_top)
if max < min + atr * eq_threshold
eqh_line = line.new(eq_top_x, eq_prev_top, n-eq_len, eq_top
, color = bear_css
, style = line.style_dotted)
eqh_lbl = label.new(int(math.avg(n-eq_len, eq_top_x)), eq_top, 'EQH'
, color = #00000000
, textcolor = bear_css
, style = label.style_label_down
, size = eqhl_lbl_size)
if mode == 'Present'
line.delete(eqh_line )
label.delete(eqh_lbl )
eqh_alert := true
eq_prev_top := eq_top
eq_top_x := n-eq_len
if eq_btm
max = math.max(eq_btm, eq_prev_btm)
min = math.min(eq_btm, eq_prev_btm)
if min > max - atr * eq_threshold
eql_line = line.new(eq_btm_x, eq_prev_btm, n-eq_len, eq_btm
, color = bull_css
, style = line.style_dotted)
eql_lbl = label.new(int(math.avg(n-eq_len, eq_btm_x)), eq_btm, 'EQL'
, color = #00000000
, textcolor = bull_css
, style = label.style_label_up
, size = eqhl_lbl_size)
eql_alert := true
if mode == 'Present'
line.delete(eql_line )
label.delete(eql_lbl )
eq_prev_btm := eq_btm
eq_btm_x := n-eq_len
//-----------------------------------------------------------------------------}
//Fair Value Gaps
//-----------------------------------------------------------------------------{
var bullish_fvg_max = array.new_box(0)
var bullish_fvg_min = array.new_box(0)
var bearish_fvg_max = array.new_box(0)
var bearish_fvg_min = array.new_box(0)
float bullish_fvg_avg = na
float bearish_fvg_avg = na
bullish_fvg_cnd = false
bearish_fvg_cnd = false
=
request.security(syminfo.tickerid, fvg_tf, get_ohlc())
if show_fvg
delta_per = (src_c1 - src_o1) / src_o1 * 100
change_tf = timeframe.change(fvg_tf)
threshold = fvg_auto ? ta.cum(math.abs(change_tf ? delta_per : 0)) / n * 2
: 0
//FVG conditions
bullish_fvg_cnd := src_l > src_h2
and src_c1 > src_h2
and delta_per > threshold
and change_tf
bearish_fvg_cnd := src_h < src_l2
and src_c1 < src_l2
and -delta_per > threshold
and change_tf
//FVG Areas
if bullish_fvg_cnd
array.unshift(bullish_fvg_max, box.new(n-1, src_l, n + fvg_extend, math.avg(src_l, src_h2)
, border_color = bull_fvg_css
, bgcolor = bull_fvg_css))
array.unshift(bullish_fvg_min, box.new(n-1, math.avg(src_l, src_h2), n + fvg_extend, src_h2
, border_color = bull_fvg_css
, bgcolor = bull_fvg_css))
if bearish_fvg_cnd
array.unshift(bearish_fvg_max, box.new(n-1, src_h, n + fvg_extend, math.avg(src_h, src_l2)
, border_color = bear_fvg_css
, bgcolor = bear_fvg_css))
array.unshift(bearish_fvg_min, box.new(n-1, math.avg(src_h, src_l2), n + fvg_extend, src_l2
, border_color = bear_fvg_css
, bgcolor = bear_fvg_css))
for bx in bullish_fvg_min
if low < box.get_bottom(bx)
box.delete(bx)
box.delete(array.get(bullish_fvg_max, array.indexof(bullish_fvg_min, bx)))
for bx in bearish_fvg_max
if high > box.get_top(bx)
box.delete(bx)
box.delete(array.get(bearish_fvg_min, array.indexof(bearish_fvg_max, bx)))
//-----------------------------------------------------------------------------}
//Previous day/week high/lows
//-----------------------------------------------------------------------------{
//Daily high/low
= request.security(syminfo.tickerid, 'D', hl()
, lookahead = barmerge.lookahead_on)
//Weekly high/low
= request.security(syminfo.tickerid, 'W', hl()
, lookahead = barmerge.lookahead_on)
//Monthly high/low
= request.security(syminfo.tickerid, 'M', hl()
, lookahead = barmerge.lookahead_on)
//Display Daily
if show_pdhl
phl(pdh, pdl, 'D', pdhl_css)
//Display Weekly
if show_pwhl
phl(pwh, pwl, 'W', pwhl_css)
//Display Monthly
if show_pmhl
phl(pmh, pml, 'M', pmhl_css)
//-----------------------------------------------------------------------------}
//Premium/Discount/Equilibrium zones
//-----------------------------------------------------------------------------{
var premium = box.new(na, na, na, na
, bgcolor = color.new(premium_css, 80)
, border_color = na)
var premium_lbl = label.new(na, na
, text = 'Premium'
, color = TRANSP_CSS
, textcolor = premium_css
, style = label.style_label_down
, size = size.small)
var eq = box.new(na, na, na, na
, bgcolor = color.rgb(120, 123, 134, 80)
, border_color = na)
var eq_lbl = label.new(na, na
, text = 'Equilibrium'
, color = TRANSP_CSS
, textcolor = eq_css
, style = label.style_label_left
, size = size.small)
var discount = box.new(na, na, na, na
, bgcolor = color.new(discount_css, 80)
, border_color = na)
var discount_lbl = label.new(na, na
, text = 'Discount'
, color = TRANSP_CSS
, textcolor = discount_css
, style = label.style_label_up
, size = size.small)
//Show Premium/Discount Areas
if barstate.islast and show_sd
avg = math.avg(trail_up, trail_dn)
box.set_lefttop(premium, math.max(top_x, btm_x), trail_up)
box.set_rightbottom(premium, n, .95 * trail_up + .05 * trail_dn)
label.set_xy(premium_lbl, int(math.avg(math.max(top_x, btm_x), n)), trail_up)
box.set_lefttop(eq, math.max(top_x, btm_x), .525 * trail_up + .475*trail_dn)
box.set_rightbottom(eq, n, .525 * trail_dn + .475 * trail_up)
label.set_xy(eq_lbl, n, avg)
box.set_lefttop(discount, math.max(top_x, btm_x), .95 * trail_dn + .05 * trail_up)
box.set_rightbottom(discount, n, trail_dn)
label.set_xy(discount_lbl, int(math.avg(math.max(top_x, btm_x), n)), trail_dn)
//-----------------------------------------------------------------------------}
//Trend
//-----------------------------------------------------------------------------{
var color trend_css = na
if show_trend
if style == 'Colored'
trend_css := itrend == 1 ? bull_css : bear_css
else if style == 'Monochrome'
trend_css := itrend == 1 ? #b2b5be : #5d606b
plotcandle(open, high, low, close
, color = trend_css
, wickcolor = trend_css
, bordercolor = trend_css
, editable = false)
//-----------------------------------------------------------------------------}
//Alerts
//-----------------------------------------------------------------------------{
//Internal Structure
alertcondition(bull_ibos_alert, 'Internal Bullish BOS', 'Internal Bullish BOS formed')
alertcondition(bull_ichoch_alert, 'Internal Bullish CHoCH', 'Internal Bullish CHoCH formed')
alertcondition(bear_ibos_alert, 'Internal Bearish BOS', 'Internal Bearish BOS formed')
alertcondition(bear_ichoch_alert, 'Internal Bearish CHoCH', 'Internal Bearish CHoCH formed')
//Swing Structure
alertcondition(bull_bos_alert, 'Bullish BOS', 'Internal Bullish BOS formed')
alertcondition(bull_choch_alert, 'Bullish CHoCH', 'Internal Bullish CHoCH formed')
alertcondition(bear_bos_alert, 'Bearish BOS', 'Bearish BOS formed')
alertcondition(bear_choch_alert, 'Bearish CHoCH', 'Bearish CHoCH formed')
//order Blocks
alertcondition(bull_iob_break, 'Bullish Internal OB Breakout', 'Price broke bullish internal OB')
alertcondition(bear_iob_break, 'Bearish Internal OB Breakout', 'Price broke bearish internal OB')
alertcondition(bull_ob_break, 'Bullish Swing OB Breakout', 'Price broke bullish swing OB')
alertcondition(bear_ob_break, 'Bearish Swing OB Breakout', 'Price broke bearish swing OB')
//EQH/EQL
alertcondition(eqh_alert, 'Equal Highs', 'Equal highs detected')
alertcondition(eql_alert, 'Equal Lows', 'Equal lows detected')
//FVG
alertcondition(bullish_fvg_cnd, 'Bullish FVG', 'Bullish FVG formed')
alertcondition(bearish_fvg_cnd, 'Bearish FVG', 'Bearish FVG formed')
//-----------------------------------------------------------------------------}
Cycles
Order Block Forex Trading 4.0Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0-Order Block Forex Trading 4.0
MainFX session indicatorINDICATOR Plot line on the open and close of all session its is only visible for 1min for Horc user << if it was useful to you >> consider praying for me to find profitability in trading BY OLAMIDE SIYANBOLA AKA MainFX
Fibonacci Cycle Finder🟩 Fibonacci Cycle Finder is an indicator designed to explore Fibonacci-based waves and cycles through visualization and experimentation, introducing a trigonometric approach to market structure analysis. Unlike traditional Fibonacci tools that rely on static horizontal levels, this indicator incorporates the dynamic nature of market cycles, using adjustable wavelength, phase, and amplitude settings to visualize the rhythm of price movements. By applying a sine function, it provides a structured way to examine Fibonacci relationships in a non-linear context.
Fibonacci Cycle Finder unifies Fibonacci principles with a wave-based method by employing adjustable parameters to align each wave with real-time price action. By default, the wave begins with minimal curvature, preserving the structural familiarity of horizontal Fibonacci retracements. By adjusting the input parameters, the wave can subtly transition from a horizontal line to a more pronounced cycle,visualizing cyclical structures within price movement. This projective structure extends potential cyclical outlines on the chart, opening deeper exploration of how Fibonacci relationships may emerge over time.
Fibonacci Cycle Finder further underscores a non-linear representation of price by illustrating how wave-based logic can uncover shifts that are missed by static retracement tools. Rather than imposing immediate oscillatory behavior, the indicator encourages a progressive approach, where the parameters may be incrementally modified to align wave structures with observed price action. This refinement process deepens the exploration of Fibonacci relationships, offering a systematic way to experiment with non-linear price dynamics. In doing so, it revisits fundamental Fibonacci concepts, demonstrating their broader adaptability beyond fixed horizontal retracements.
🌀 THEORY & CONCEPT 🌀
What if Fibonacci relationships could be visualized as dynamic waves rather than confined to fixed horizontal levels? Fibonacci Cycle Finder introduces a trigonometric approach to market structure analysis, offering a different perspective on Fibonacci-based cycles. This tool provides a way to visualize market fluctuations through cyclical wave motion, opening the door to further exploration of Fibonacci’s role in non-linear price behavior.
Traditional Fibonacci tools, such as retracements and extensions, have long been used to identify potential support and resistance levels. While valuable for analyzing price trends, these tools assume linear price movement and rely on static horizontal levels. However, market fluctuations often exhibit cyclical tendencies , where price follows natural wave-like structures rather than strictly adhering to fixed retracement points. Although Fibonacci-based tools such as arcs, fans, and time zones attempt to address these patterns, they primarily apply geometric projections. The Fibonacci Cycle Finder takes a different approach by mapping Fibonacci ratios along structured wave cycles, aligning these relationships with the natural curvature of market movement rather than forcing them onto rigid price levels.
Rather than replacing traditional Fibonacci methods, the Fibonacci Cycle Finder supplements existing Fibonacci theory by introducing an exploratory approach to price structure analysis. It encourages traders to experiment with how Fibonacci ratios interact with cyclical price structures, offering an additional layer of insight beyond static retracements and extensions. This approach allows Fibonacci levels to be examined beyond their traditional static form, providing deeper insights into market fluctuations.
📊 FIBONACCI WAVE IMPLEMENTATION 📊
The Fibonacci Cycle Finder uses two user-defined swing points, A and B, as the foundation for projecting these Fibonacci waves. It first establishes standard horizontal levels that correspond to traditional Fibonacci retracements, ensuring a baseline reference before wave adjustments are applied. By default, the wave is intentionally subtle— Wavelength is set to 1 , Amplitude is set to 1 , and Phase is set to 0 . In other words, the wave starts as “stretched out.” This allows a slow, measured start, encouraging users to refine parameters incrementally rather than producing abrupt oscillations. As these parameters are increased, the wave takes on more distinct sine and cosine characteristics, offering a flexible approach to exploring Fibonacci-based cyclicity within price action.
Three parameters control the shape of the Fibonacci wave:
1️⃣ Wavelength Controls the horizontal spacing of the wave along the time axis, determining the length of one full cycle from peak to peak (or trough to trough). In this indicator, Wavelength acts as a scaling input that adjusts how far the wave extends across time, rather than a strict mathematical “wavelength.” Lower values further stretch the wave, increasing the spacing between oscillations, while higher values compress it into a more frequent cycle. Each full cycle is divided into four quarter-cycle segments, a deliberate design choice to minimize curvature by default. This allows for subtle oscillations and smoother transitions, preventing excessive distortion while maintaining flexibility in wave projections. The wavelength is calculated relative to the A-B swing, ensuring that its scale adapts dynamically to the selected price range.
2️⃣ Amplitude Defines the vertical displacement of the wave relative to the baseline Fibonacci level. Higher values increase the height of oscillations, while lower values reduce the height, Negative values will invert the wave’s initial direction. The amplitude is dynamically applied in relation to the A-B swing direction, ensuring that an upward swing results in upward oscillations and a downward swing results in downward oscillations.
3️⃣ Phase Shifts the wave’s starting position along its cycle, adjusting alignment relative to the swing points. A phase of 0 aligns with a sine wave, where the cycle starts at zero and rises. A phase of 25 aligns with a cosine wave, starting at a peak and descending. A phase of 50 inverts the sine wave, beginning at zero but falling first, while a phase of 75 aligns with an inverted cosine , starting at a trough and rising. Intermediate values between these phases create gradual shifts in wave positioning, allowing for finer alignment with observed market structures.
By fine-tuning these parameters, users can adapt Fibonacci waves to better reflect observed market behaviors. The wave structure integrates with price movements rather than simply overlaying static levels, allowing for a more dynamic representation of cyclical price tendencies. This indicator serves as an exploratory tool for understanding potential market rhythms, encouraging traders to test and visualize how Fibonacci principles extend beyond their traditional applications.
🖼️ CHART EXAMPLES 🖼️
Following this downtrend, price interacts with curved Fibonacci levels, highlighting resistance at the 0.236 and 0.382 levels, where price stalls before pulling back. Support emerges at the 0.5, 0.618, and 0.786 levels, where price finds stability and rebounds
In this Fibonacci retracement, price initially finds support at the 1.0 level, following the natural curvature of the cycle. Resistance forms at 0.786, leading to a pullback before price breaks through and tests 0.618 as resistance. Once 0.618 is breached, price moves upward to test 0.5, illustrating how Fibonacci-based cycles may align with evolving market structure beyond static, horizontal retracements.
Following this uptrend, price retraces downward and interacts with the Fibonacci levels, demonstrating both support and resistance at key levels such as 0.236, 0.382, 0.5, and 0.618.
With only the 0.5 and 1.0 levels enabled, this chart remains uncluttered while still highlighting key price interactions. The short cycle length results in a mild curvature, aligning smoothly with market movement. Price finds resistance at the 0.5 level while showing strong support at 1.0, which follows the natural flow of the market. Keeping the focus on fewer levels helps maintain clarity while still capturing how price reacts within the cycle.
🛠️ CONFIGURATION AND SETTINGS 🛠️
Wave Parameters
Wavelength : Stretches or compresses the wave along the time axis, determining the length of one full cycle. Higher values extend the wave across more bars, while lower values compress it into a shorter time frame.
Amplitude : Expands or contracts the wave along the price axis, determining the height of oscillations relative to Fibonacci levels. Higher values increase the vertical range, while negative values invert the wave’s initial direction.
Phase : Offsets the wave along the time axis, adjusting where the cycle begins. Higher values shift the starting position forward within the wave pattern.
Fibonacci Levels
Levels : Enable or disable specific Fibonacci levels (0.0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0) to focus on relevant price zones.
Color : Modify level colors for enhanced visual clarity.
Visibility
Trend Line/Color : Toggle and customize the trend line connecting swing points A and B.
Setup Lines : Show or hide lines linking Fibonacci levels to projected waves.
A/B Labels Visibility : Control the visibility of swing point labels.
Left/Right Labels : Manage the display of Fibonacci level labels on both sides of the chart.
Fill % : Adjust shading intensity between Fibonacci levels (0% = no fill, 100% = maximum fill).
A and B Points (Time/Price):
These user-defined anchor points serve as the basis for Fibonacci wave calculations and can be manually set. A and B points can also be adjusted directly on the chart, with automatic synchronization to the settings panel, allowing for seamless modifications without needing to manually input values.
⚠️ DISCLAIMER ⚠️
The Fibonacci Cycle Finder is a visual analysis tool designed to illustrate Fibonacci relationships and serve as a supplement to traditional Fibonacci tools. While the indicator employs mathematical and geometric principles, no guarantee is made that its calculations will align with other Fibonacci tools or proprietary methods. Like all technical and visual indicators, the Fibonacci levels generated by this tool may appear to visually align with key price zones in hindsight. However, these levels are not intended as standalone signals for trading decisions. This indicator is intended for educational and analytical purposes, complementing other tools and methods of market analysis.
🧠 BEYOND THE CODE 🧠
Fibonacci Cycle Finder is the latest indicator in the Fibonacci Geometry Series. Building on the concepts of the Fibonacci Time-Price Zones and the Fibonacci 3-D indicators, this tool introduces a trigonometric approach to market structure analysis.
The Fibonacci Cycle Finder indicator, like other xxattaxx indicators , is designed to encourage both education and community engagement. Your feedback and insights are invaluable to refining and enhancing the Fibonacci Cycle Finder indicator. We look forward to the creative applications, observations, and discussions this tool inspires within the trading community.
Pivot Point с зигзагом и Фибоначчи [DaVinchi]Название:
Supertrend Zone Pivot Point с зигзагом и Фибоначчи (RU) с выбором таймфрейма
Описание:
Данный индикатор объединяет в себе несколько популярных инструментов технического анализа, позволяющих получить комплексное представление о тренде, определить ключевые точки разворота, а также выявить важные уровни поддержки и сопротивления с помощью Фибоначчи. Индикатор отображается поверх графика и работает на выбранном таймфрейме, что дает возможность проводить многовременной анализ.
Основные компоненты и функциональность:
Supertrend и Premium/Discount Zone:
Supertrend:
Индикатор рассчитывает линию Supertrend на основе выбранного периода ATR и множителя (factor). Эта линия помогает определить направление тренда:
При нахождении цены выше линии – тренд считается восходящим (отображается с настраиваемым зелёным цветом).
При нахождении цены ниже линии – тренд считается нисходящим (отображается с настраиваемым красным цветом).
Премиум/Дискаунт:
Дополнительно можно отобразить линии премиум/дискаунт, которые вычисляются как отступ от линии Supertrend на основе дополнительного множителя ATR (atrline). Эти линии помогают оценить зону перекупленности или перепроданности по отношению к Supertrend.
Пивоты и Зигзаг:
При изменении направления Supertrend (определяемом по смене знака изменения) происходит фиксация экстремальных значений – пивотов максимум (при смене на нисходящий тренд) и пивотов минимум (при смене на восходящий тренд).
На уровне каждого пивота создаются метки (labels) с указанием цены, а также проводятся линии, соединяющие предыдущие и текущие экстремумы, формируя зигзаг.
Отображение зигзага можно включать или отключать в настройках, а его цвет, толщина и стиль (сплошная, пунктирная или штриховая линия) задаются пользователем.
Уровни Фибоначчи:
На основе последних найденных пивотов (максимум и минимум) определяется диапазон, по которому рассчитываются уровни Фибоначчи. Если пивоты не обнаружены, используются экстремумы за последние 50 баров.
Строятся линии Фибоначчи с уровнями 0.0, 0.236, 0.382, 0.5, 0.618 и 1.0. Для каждого уровня можно задать:
Возможность отображения (вкл./выкл.).
Значение уровня, цвет, толщину и стиль линии.
Смещение линии (в барах) и направление смещения (влево или вправо).
Рядом с каждой линией выводится метка с указанием названия уровня, цены и процентного соотношения, что помогает быстро оценить, где располагаются потенциальные уровни поддержки или сопротивления.
Выбор таймфрейма и входные данные:
Все расчёты (цены открытия, максимума, минимума, закрытия, ATR и Supertrend) осуществляются на основе данных выбранного таймфрейма. Это позволяет применять индикатор для анализа как краткосрочных, так и долгосрочных графиков.
Пользователь задаёт основные параметры: период ATR, множитель для расчёта Supertrend, множитель для линии премиум/дискаунт и сам таймфрейм.
Настраиваемость и визуальные параметры:
Отображение: Возможность включать или отключать отдельные элементы: зигзаг, линию Supertrend, линию премиум/дискаунт, уровни Фибоначчи.
Настройки внешнего вида:
Для зигзага: цвет, толщина и стиль линии.
Для Supertrend: цвета линий для восходящего и нисходящего трендов, толщина линии, а также полупрозрачное залитие между линией и серединой тела свечи.
Для пивотов: цвета текста и фона меток, а также цвета и толщина линий, соединяющих пивоты.
Для Фибоначчи: индивидуальные настройки для каждого уровня (цвет, толщина, стиль линии), а также смещение и направление вывода линий и меток.
Преимущества и применение:
Комплексный анализ тренда: Сочетание Supertrend с пивотами и зигзагом позволяет не только определить общее направление движения цены, но и зафиксировать ключевые точки разворота.
Определение уровней поддержки/сопротивления: Построенные уровни Фибоначчи помогают выявить зоны, где цена может отскочить или пробить уровень, что является важным для постановки стоп-лоссов и тейк-профитов.
Гибкая настройка: Большое количество входных параметров позволяет адаптировать индикатор под различные торговые стратегии и личные предпочтения трейдера.
Многовременной анализ: Возможность выбора таймфрейма делает индикатор универсальным для анализа как краткосрочных, так и долгосрочных трендов.
Как использовать:
Установите необходимые параметры (ATR, множители, таймфрейм, цвета и стили линий) в настройках индикатора.
Включите отображение нужных элементов (например, зигзаг, Supertrend, уровни Фибоначчи) в зависимости от вашей торговой стратегии.
Используйте линию Supertrend для определения направления тренда, а пивоты и зигзаг для выявления точек разворота.
Анализируйте уровни Фибоначчи для поиска потенциальных зон поддержки и сопротивления, где цена может замедлить движение или развернуться.
Blockchain Fundamentals: Global LiquidityGlobal Liquidity Indicator Overview
This indicator provides a comprehensive technical analysis of liquidity trends by deriving a Global Liquidity metric from multiple data sources. It applies a suite of technical indicators directly on this liquidity measure, rather than on price data. When this metric is expanding Bitcoin and crypto tends to bullish conditions.
Features:
1. Global Liquidity Calculation
Data Integration: Combines multiple market data sources using a ratio-based formula to produce a unique liquidity measure.
Custom Metric: This liquidity metric serves as the foundational input for further technical analysis.
2. Timeframe Customization
User-Selected Period: Users can select the data timeframe (default is 2 months) to ensure consistency and flexibility in analysis.
3. Additional Technical Indicators
RSI, Momentum, ROC, MACD, and Stochastic:
Each indicator is computed using the Global Liquidity series rather than price.
User-selectable toggles allow for enabling or disabling each individual indicator as desired.
4. Enhanced MACD Visualization
Dynamic Histogram Coloring:
The MACD histogram color adjusts dynamically: brighter hues indicate rising histogram values while darker hues indicate falling values.
When the histogram is above zero, green is used; when below zero, red is applied, offering immediate visual insight into momentum shifts.
Conclusion
This indicator is an enlightening tool for understanding liquidity dynamics, aiding in macroeconomic analysis and investment decision-making by highlighting shifts in liquidity conditions and market momentum.
Darvas, EMAs 50/200, Ichimoku, SupertrendCombo de Indicadores para Trading (Darvas Box, EMAs 50/200, Ichimoku, Supertrend)
Este combo de indicadores está diseñado para brindarte una visión completa del mercado, integrando herramientas de análisis técnico que te ayudarán a identificar tendencias, puntos de entrada y salida, así como zonas de posible reversión.
1. Darvas Box
Objetivo: El indicador de Darvas Box se utiliza para identificar niveles clave de soporte y resistencia, lo que te permite ver zonas donde el precio podría tener movimientos explosivos. Funciona bien en mercados con tendencias fuertes, ayudándote a detectar rangos y breakout.
Cómo usarlo: El indicador traza cajas alrededor de los precios donde el precio ha hecho máximos y mínimos consecutivos, indicando zonas de consolidación y potenciales rupturas.
2. EMAs 50 y 200
Objetivo: Las medias móviles exponenciales (EMAs) de 50 y 200 son utilizadas para identificar la tendencia general del mercado. La EMA 50 es más sensible a los cambios de corto plazo, mientras que la EMA 200 es más adecuada para identificar la tendencia a largo plazo.
Cómo usarlas: Cuando la EMA 50 cruza por encima de la EMA 200, se considera una señal alcista, y cuando la EMA 50 cruza por debajo de la EMA 200, se interpreta como una señal bajista. Estas señales son claves para operar con la tendencia.
3. Ichimoku
Objetivo: Ichimoku es un indicador completo que ofrece una visión clara de la tendencia, el impulso y las áreas de soporte y resistencia. Está compuesto por varias líneas, pero las más importantes son:
Tenkan-sen: Línea de conversión, indicada para identificar posibles cambios de tendencia a corto plazo.
Kijun-sen: Línea base, muestra la tendencia a medio plazo.
Senkou Span A y B: Determinan el área de soporte/resistencia proyectada.
Chikou Span: Muestra la acción del precio en relación con el pasado.
Cómo usarlo: Si el precio está por encima de las nubes de Ichimoku, se considera una tendencia alcista; si está por debajo, una tendencia bajista. Además, los cruces entre el Tenkan-sen y el Kijun-sen son señales clave de entrada o salida.
4. Supertrend
Objetivo: El indicador Supertrend es muy útil para identificar la dirección de la tendencia y los puntos de cambio. Es especialmente útil en mercados con alta volatilidad.
Cómo usarlo: Cuando el precio está por encima de la línea Supertrend, la tendencia es alcista, y cuando está por debajo, es bajista. Las señales de cambio de tendencia son claras cuando el Supertrend cambia de color.
Este combo de indicadores puede ofrecerte una comprensión profunda de la acción del precio y de las posibles oportunidades de trading. Utilízalo para confirmar señales entre los diferentes indicadores y aumentar la probabilidad de éxito en tus operaciones.
SMA20 Strategy with Position Sizing and Partial Take ProfitUse only on JASMY M15.
Trade is taken only on assian session betwen 6am-10am GMT+1.
Trade is time limited with partial TP and SL.
Ultra Bullish/Bearish EMA 200 and 50made for smaller time frames and just for the 200 and the 50 ema, same concept but instead it is working on a smaller time frame
Maverick Henderson Strategy
Maverick Henderson Strategy
A comprehensive technical analysis indicator that combines several powerful tools:
1. Volume Profile with POC (Point of Control)
- Displays volume distribution across price levels
- Shows value areas and POC line
- Helps identify key support/resistance levels
2. Multiple EMAs (10, 50, 100, 200)
- Trend identification and dynamic support/resistance
- Price action confirmation
- Works best with Heikin Ashi candles
3. Swing Detection & Counting System
- Identifies and counts higher highs/lower lows
- Dynamic trend strength measurement
- Automatically resets on EMA200 crossovers
4. RSI Divergence Detection
- Regular bullish/bearish divergences
- Hidden bullish/bearish divergences
- Filtered by EMA200 position
5. Multi-Timeframe Squeeze Momentum
- Analyzes momentum across 1H, 2H, 3H, and 4H timeframes
- Shows momentum convergence/divergence
- Visual color-coded momentum representation
Usage Tips:
- Best performance with Heikin Ashi candles
- Use EMA crossovers for trend confirmation
- Watch for momentum convergence signals
- Monitor RSI divergences for potential reversals
// ═══════════════════════════════════════════════════════════
Estrategia Maverick Henderson
Un indicador de análisis técnico completo que combina varias herramientas poderosas:
1. Perfil de Volumen con POC
- Muestra la distribución del volumen por niveles de precio
- Visualiza áreas de valor y línea POC
- Ayuda a identificar niveles clave de soporte/resistencia
2. Múltiples EMAs (10, 50, 100, 200)
- Identificación de tendencias y soporte/resistencia dinámica
- Confirmación de acción del precio
- Funciona mejor con velas Heikin Ashi
3. Sistema de Detección y Conteo de Swings
- Identifica y cuenta máximos más altos/mínimos más bajos
- Medición dinámica de la fuerza de la tendencia
- Se reinicia automáticamente en cruces de EMA200
4. Detección de Divergencias RSI
- Divergencias regulares alcistas/bajistas
- Divergencias ocultas alcistas/bajistas
- Filtradas por posición respecto a EMA200
5. Momentum Multi-Temporal
- Analiza momentum en marcos de 1H, 2H, 3H y 4H
- Muestra convergencia/divergencia de momentum
- Representación visual codificada por colores
Consejos de Uso:
- Mejor rendimiento con velas Heikin Ashi
- Usar cruces de EMA para confirmación de tendencia
- Observar señales de convergencia de momentum
- Monitorear divergencias RSI para posibles reversiones
// ═══════════════════════════════════════════════════════════
Stochastic Divergence Detection
New feature added! The indicator now includes Stochastic divergence detection, just like the RSI, providing additional tools for identifying potential reversals and trend confirmations.
Regular Divergences:
-Bullish: Signals a potential upward reversal when price makes lower lows, but the Stochastic shows higher lows.
-Bearish: Signals a potential downward reversal when price makes higher highs, but the Stochastic shows lower highs.
Hidden Divergences (optional):
-Bullish: Occurs during uptrends when price makes higher lows, but the Stochastic shows lower lows.
-Bearish: Occurs during downtrends when price makes lower highs, but the Stochastic shows higher highs.
Detección de Divergencias en el Estocástico
¡Nueva función añadida! Ahora el indicador incluye detección de divergencias en el Estocástico, al igual que en el RSI, ofreciendo herramientas adicionales para identificar posibles reversiones y confirmaciones de tendencia.
Divergencias regulares:
-Alcistas: Señala una posible reversión al alza cuando el precio marca mínimos más bajos y el Estocástico muestra mínimos más altos.
-Bajistas: Señala una posible reversión a la baja cuando el precio marca máximos más altos y el Estocástico muestra máximos más bajos.
Divergencias ocultas (opcional):
-Alcistas: Ocurre en tendencias alcistas cuando el precio hace mínimos más altos, pero el Estocástico muestra mínimos más bajos.
-Bajistas: Ocurre en tendencias bajistas cuando el precio marca máximos más bajos, pero el Estocástico muestra máximos más altos.
Ak technical Algo 2.0Ak technical Algo 2.0 --Ak technical Algo 2.0Ak technical Algo 2.0-Ak technical Algo 2.0-Ak technical Algo 2.0Ak technical Algo 2.0-Ak technical Algo 2.0-Ak technical Algo 2.0-Ak technical Algo 2.0
Advanced Trading Indicatorsmodivikasi **"Advanced Trading Indicators"**
Script ini adalah indikator teknikal yang menggabungkan beberapa alat analisis untuk membantu trader dalam memahami tren pasar, level support & resistance, serta kekuatan pasar.
### **Fitur Utama**
1. **Moving Averages (EMA 9 & EMA 50)**
- Menggunakan **Exponential Moving Averages (EMA)** untuk mengidentifikasi tren pasar.
- **EMA 9 (biru)** untuk tren jangka pendek dan **EMA 50 (merah)** untuk tren jangka panjang.
- Jika EMA 9 di atas EMA 50 → **Uptrend**
- Jika EMA 9 di bawah EMA 50 → **Downtrend**
2. **Fibonacci Retracement**
- Menghitung level **Fibonacci Retracement** berdasarkan harga tertinggi dan terendah dalam 50 candle terakhir.
- Level yang ditampilkan: **23.6%, 38.2%, 50%, 61.8%, 78.6%**
- Level ini digunakan untuk menentukan area **support & resistance potensial**.
3. **RSI (Relative Strength Index) & MACD (Moving Average Convergence Divergence)**
- **RSI 14 (ungu)** digunakan untuk mengukur kekuatan momentum.
- **MACD Line (hijau) & Signal Line (oranye)** digunakan untuk melihat potensi pembalikan tren dan kekuatan tren saat ini.
4. **Supply & Demand Zones**
- Menampilkan zona **Supply (merah)** sebagai level resistance utama berdasarkan harga tertinggi dalam 50 candle terakhir.
- Menampilkan zona **Demand (hijau)** sebagai level support utama berdasarkan harga terendah dalam 50 candle terakhir.
5. **Order Book Analysis (VWAP Approximation)**
- Menggunakan **VWAP (Volume-Weighted Average Price)** sebagai perkiraan analisis order book untuk melihat tekanan beli atau jual di pasar.
6. **Trend Direction Indicator**
- Menampilkan teks **"Uptrend"** atau **"Downtrend"** berdasarkan hubungan antara EMA 9 & EMA 50.
- Label ini akan muncul pada grafik sebagai petunjuk tren pasar.
### **Kesimpulan**
Script ini menggabungkan beberapa indikator teknikal yang umum digunakan oleh trader profesional. Dengan indikator ini, trader dapat:
✅ Mengidentifikasi tren utama dengan **EMA 9 & EMA 50**.
✅ Menemukan **support & resistance** dengan **Fibonacci Retracement**.
✅ Mengukur **momentum pasar** menggunakan **RSI & MACD**.
✅ Melihat area potensial pembalikan harga melalui **Supply & Demand Zones**.
✅ Memantau tekanan beli/jual menggunakan **VWAP Approximation**.
✅ Memudahkan analisis dengan tulisan **"Uptrend" / "Downtrend"** di chart.
Jika ada tambahan atau perbaikan yang diperlukan, silakan beri tahu! 🚀
Supertrend + Bollinger Bands + CPR//@version=5
indicator(title="Supertrend + Bollinger Bands + CPR", shorttitle="ST+BB+CPR", overlay=true)
// === INPUT PARAMETERS ===
// Supertrend Inputs
st_period = input.int(10, title="ATR Period")
st_multiplier = input.float(3.0, title="ATR Multiplier", step=0.1)
st_show_signals = input.bool(true, title="Show Buy/Sell Signals?")
// Bollinger Bands Inputs
bb_length = input.int(20, title="BB Length", minval=1)
bb_mult = input.float(2.0, title="BB StdDev", minval=0.001, maxval=50)
// CPR Inputs
cpr_timeframe = input.string("D", title="CPR Resolution", options= )
// === SUPER TREND SINGLE LINE CALCULATION ===
atr = ta.atr(st_period)
src = hl2
up = src - (st_multiplier * atr)
dn = src + (st_multiplier * atr)
// **✅ Fix for NA Type Error**
var int trend = 1 // Declared with type `int`
trend := nz(trend , 1)
trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend
supertrend = trend == 1 ? up : dn
// **✅ Supertrend Single Line**
st_plot = plot(supertrend, title="Supertrend", color=trend == 1 ? color.green : color.red, linewidth=2)
// **✅ Buy & Sell Signals**
buySignal = trend == 1 and trend == -1
sellSignal = trend == -1 and trend == 1
plotshape(buySignal and st_show_signals ? supertrend : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
plotshape(sellSignal and st_show_signals ? supertrend : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
// Alerts
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
// === BOLLINGER BANDS CALCULATION ===
basis = ta.sma(close, bb_length)
dev = bb_mult * ta.stdev(close, bb_length)
upper = basis + dev
lower = basis - dev
// **✅ Bollinger Bands**
plot(basis, "BB Basis", color=color.blue)
p1 = plot(upper, "BB Upper", color=color.red)
p2 = plot(lower, "BB Lower", color=color.green)
fill(p1, p2, title="BB Background", color=color.new(color.blue, 95))
// === CPR WIDTH CALCULATION ===
// Fetch previous day's OHLC using request.security()
dpopen = request.security(syminfo.tickerid, cpr_timeframe, open )
dphigh = request.security(syminfo.tickerid, cpr_timeframe, high )
dplow = request.security(syminfo.tickerid, cpr_timeframe, low )
dpclose = request.security(syminfo.tickerid, cpr_timeframe, close )
// Calculate CPR Levels
pivot = (dphigh + dplow + dpclose) / 3.0
bc = (dphigh + dplow) / 2.0
tc = pivot - bc + pivot
cpr_width = (math.abs(tc - bc) / pivot) * 100
// **✅ CPR Width Histogram**
plot(cpr_width, title="CPR Width", style=plot.style_columns, color=color.new(cpr_width < 0.50 ? color.green : color.red, 0))
// **✅ CPR Narrow Lines**
plot(pivot, title="CPR Pivot", color=color.orange, linewidth=2)
plot(bc, title="CPR Bottom", color=color.blue, linewidth=2)
plot(tc, title="CPR Top", color=color.blue, linewidth=2)
Timeframe Display + Countdown📘 Help Guide: Timeframe Display + Countdown + Alert
🔹 Overview
This indicator displays:
✅ The selected timeframe (e.g., 5min, 1H, 4H)
✅ A countdown timer showing minutes and seconds until the current candle closes
✅ An optional alert that plays a sound when 1 minute remains before the new candle starts
⚙️ How to Use
1️⃣ Add the Indicator
• Open TradingView
• Click on Pine Script Editor
• Copy and paste the script
• Click Add to Chart
2️⃣ Customize Settings
• Text Color: Choose a color for the displayed text
• Text Size: Adjust the font size (8–24)
• Transparency: Set how transparent the text is (0%–100%)
• Position: Choose where the text appears (Top Left, Top Right, Bottom Left, Bottom Right)
• Enable Audible Alert: Turn ON/OFF the alert when 1 minute remains
3️⃣ Set Up an Audible Alert in TradingView
🚨 Important: Pine Script cannot play sounds directly; you must set up a manual alert in TradingView.
Steps:
1. Click “Alerts” (🔔 icon in TradingView)
2. Click “Create Alert” (+ button)
3. In “Condition”, select this indicator (Timeframe Display + Countdown)
4. Under “Options”, choose:
• Trigger: “Once Per Bar”
• Expiration: Set a valid time range
• Alert Actions: Check “Play Sound” and choose a sound
5. Click “Create” ✅
🛠️ How It Works
• Countdown Timer:
• Updates in real time, displaying MM:SS until the candle closes
• Resets when a new candle starts
• Alert Trigger:
• When 1:00 minute remains, an alert is sent
• If properly configured in TradingView, it plays a sound
Rei do OrderBlock - O Segredo Rei do OrderBlock - O Segredo é um indicador avançado para Price Action, ajudando a identificar pontos de liquidez e manipulação do mercado, com a visualização das principais sessões do mercado e a exibição do candle diário e semanal na lateral direita do gráfico.
🚀 Principais Funcionalidades:
✅ Exibição do Candle Diário e Semanal
Plota o candle diário e semanal na lateral direita do gráfico.
Ajuda a identificar pontos de liquidez e manipulação de mercado.
Indispensável para a estratégia Power of Three (Acumulação, Manipulação e Expansão).
✅ Marcação de Sessões Importantes
Destaque visual das sessões mais relevantes.
Identificação de momentos de alta volatilidade e liquidez.
✅ Linhas de Referência para Níveis-Chave
Exibição das máximas, mínimas e aberturas dos candles diário e semanal.
Ajuda a enxergar níveis institucionais e áreas de interesse do Smart Money.
SuperTrend Pro + Auto SessionsSuperTrend Pro+ Auto Sessions – The Ultimate Trend & Session Indicator 🚀
🔹 SuperTrend Pro+ Auto Sessions is an advanced trading indicator designed to identify strong trends, highlight key trading sessions, and provide precise buy & sell signals. This tool is ideal for traders looking to enhance their technical analysis by combining trend-following strategies with market session timing.
🔍 Features & Benefits:
✅ Dual SuperTrend Strategy: The indicator includes two SuperTrend lines, allowing you to compare trends with different ATR periods and multipliers for greater accuracy.
✅ Auto Trading Sessions Highlighting: It highlights the New York, London, Tokyo, and Sydney sessions, helping traders optimize their entries and exits based on liquidity and volatility.
✅ Customizable EMA Filters: Two EMAs (50 EMA and 200 EMA) are included to confirm trend direction and spot golden/death crosses.
✅ Buy & Sell Signals with Alerts: The indicator provides clear Buy/Sell signals based on trend shifts, with built-in alert conditions to notify you instantly.
✅ Flexible Customization: Traders can adjust ATR settings, session visibility, EMA lengths, and alert conditions to tailor the indicator to their strategy.
📌 How to Use This Indicator?
1️⃣ SuperTrend Signals 📈📉
The SuperTrend lines change color based on trend direction:
✅ Green (Uptrend): Price is above SuperTrend → Bullish momentum.
❌ Red (Downtrend): Price is below SuperTrend → Bearish momentum.
Buy/Sell signals appear when the trend changes direction, marking potential entry points.
You can use the two SuperTrend settings together to confirm stronger trend shifts.
2️⃣ Trading Sessions Auto Highlight 🕰️
This feature automatically highlights major Forex trading sessions:
🟠 New York (13:00 - 22:00 UTC) – High volatility, major market moves.
🔵 London (07:00 - 16:00 UTC) – Largest trading volume, strong trends.
🔴 Tokyo (00:00 - 09:00 UTC) – Asian session, slower movements.
🟡 Sydney (21:00 - 06:00 UTC) – Early liquidity before Tokyo opens.
Sessions help traders understand when liquidity is highest and time their entries more effectively.
3️⃣ EMA Confirmation Strategy 📊
The 50 EMA & 200 EMA help filter trades:
✅ Buy when 50 EMA crosses above 200 EMA (Golden Cross) → Strong uptrend.
❌ Sell when 50 EMA crosses below 200 EMA (Death Cross) → Strong downtrend.
Using EMA filters reduces false signals and improves accuracy.
📈 Recommended Trading Strategy – SuperTrend + EMA Crossover 🎯
🔹 Timeframe: 15min, 1H, or 4H
🔹 Best for: Forex, Crypto, Stocks
✅ Buy Entry:
1️⃣ SuperTrend turns green (both lines recommended for confirmation).
2️⃣ 50 EMA crosses above 200 EMA (Golden Cross) → Confirms bullish momentum.
3️⃣ Price is within an active trading session (e.g., London or New York).
4️⃣ Enter long trade at the next candle, stop loss below the last swing low.
🎯 Take Profit: 1.5x – 2x risk or next resistance level.
❌ Sell Entry:
1️⃣ SuperTrend turns red (both lines recommended for confirmation).
2️⃣ 50 EMA crosses below 200 EMA (Death Cross) → Confirms bearish momentum.
3️⃣ Price is within an active trading session (e.g., London or New York).
4️⃣ Enter short trade at the next candle, stop loss above the last swing high.
🎯 Take Profit: 1.5x – 2x risk or next support level.
💡 Why Use SuperTrend Pro+ Auto Sessions?
📌 Combines SuperTrend, market sessions, and EMAs into one tool – No need to use multiple indicators.
📌 Helps traders follow strong trends and avoid choppy markets.
📌 Session highlights allow better timing for trades based on market liquidity.
📌 Customizable alerts ensure you never miss a trading opportunity.
🚀 Boost your trading strategy today with SuperTrend Pro+ Auto Sessions!
YTA - Colored RSI LevelsThis is simple RSI indicator
I always wanted total 5 levels
2 over bought levels 70-30
2 support and resistance levels 60-40
so I jsut took help of Ai and made this simple RSI with 4 levels , which can be modified as per the need , but as default 7-30 and 60-40 levels along with middle level 50.
You can use as per your strategy and as it may help you .
Thank you
HA Trend Panel - ModernEnglish Explanation:
This indicator creates a modern panel displaying Heikin-Ashi trend conditions across different timeframes. The user can customize the colors for bullish and bearish trends. The script retrieves Heikin-Ashi close and open prices for each timeframe to determine the trend direction, then visualizes it in a table along with arrow indicators (▲ / ▼). This panel helps traders quickly analyze price movements and facilitates decision-making.
Türkçe Açıklama:
Bu gösterge, farklı zaman dilimlerinde Heikin-Ashi trend durumlarını gösteren modern bir panel oluşturur. Kullanıcı, yükseliş ve düşüş renklerini özelleştirebilir. Gösterge, her zaman dilimi için Heikin-Ashi kapanış ve açılış fiyatlarını alarak trend yönünü belirler ve bir tablo içerisinde ok işaretleriyle (▲ / ▼) birlikte görselleştirir. Tablo, fiyat hareketlerini daha hızlı analiz etmeye yardımcı olur ve karar alma sürecini kolaylaştırır.
Máximo y Mínimo RelevanteMáximo Relevante (MR) como aquel máximo que tiene al menos tres máximos másbajos a su izquierda y a su derecha.
Mínimo Relevante (mR) como aquel mínimo que tiene al menos tres mínimos más altos a su izquierda y a su derecha
BTC Day Trading Strategy with Alerts🏆 Best Indicator for BTC Day Trading:
Recommend using (EMAs) + RSI + VWAP + ATR for a well-rounded approach.
✅ Main Indicator: 9 & 21 EMA Crossover (Momentum & Trend Confirmation)
How It Works:
When the 9 EMA crosses above the 21 EMA, it signals a potential buy (bullish momentum).
When the 9 EMA crosses below the 21 EMA, it signals a potential sell (bearish momentum).
Why?: EMAs react quickly to price changes, making them perfect for day trading.
✅ Support Indicator: VWAP (Volume-Weighted Average Price)
How It Works:
Price above VWAP = bullish (only look for longs).
Price below VWAP = bearish (only look for shorts).
Why?: Institutions & large traders use VWAP to gauge fair value for intraday moves.
✅ Momentum Confirmation: RSI (Relative Strength Index, 14)
Overbought (>70) = Look for short setups.
Oversold (<30) = Look for long setups.
Best Use: Look for bullish or bearish divergences to confirm trend reversals.
✅ Risk Management: ATR (Average True Range, 14)
Helps determine stop-loss placement based on volatility.
Example: If ATR is $500, set SL at 1x or 1.5x ATR to avoid getting stopped out by normal BTC fluctuations.
🔥 Why This Strategy Works for BTC Day Trading
✅ EMA Crossover captures momentum shifts.
✅ VWAP ensures we trade in the dominant direction.
✅ RSI avoids false signals in choppy markets.
✅ ATR Stop-Loss adapts to Bitcoin's volatility.
✅ 2:1 Risk-Reward Ratio ensures good trade management.
📌 How This Script Works
✅ Buys when:
9 EMA crosses above 21 EMA (bullish momentum).
Price is above VWAP (institutional bias is bullish).
RSI is above 50 (confirming bullish momentum).
Sets SL at ATR x 1.5 below entry, TP at 2x SL.
✅ Sells when:
9 EMA crosses below 21 EMA (bearish momentum).
Price is below VWAP (institutional bias is bearish).
RSI is below 50 (confirming bearish momentum).
Sets SL at ATR x 1.5 above entry, TP at 2x SL.
EUR/USD Imbalance StrategyThis TradingView Pine Script (v5) indicator detects:
✅ Imbalances (Fair Value Gaps - FVGs) 🔸
✅ Liquidity Grabs (Stop Hunts) 🔴🔵
✅ Entry Signals (Buy & Sell Arrows) 📉📈
✅ Stop-Loss & Take-Profit Levels
✅ Alerts for Auto-Trading
Auto sessions DrawThe Auto Sessions indicator is an advanced, lightweight, and highly efficient tool for automatically displaying trading sessions on your chart. 🎯 Designed for precision and ease of use, this indicator helps traders track the New York, London, Tokyo, and Sydney sessions effortlessly.
💡 Key Features:
✅ Lightweight & Optimized – Runs smoothly without slowing down your chart.
✅ Supports Decimal Time Zones – Perfect for countries like Iran (+3.5) and India (+5.5).
✅ Session Range Highlighting – Clearly marks the price range of each session for better analysis.
✅ Fully Customizable – Modify colors, transparency, session names, and divider lines to suit your style.
✅ Works on All Timeframes – From 1-minute to 1-month charts, ensuring accurate display.
✅ Option to Use Exchange Time Zone – Aligns with your broker’s timezone for enhanced accuracy.
✅ Clean & Professional Design – A clutter-free, intuitive interface that enhances readability.
⚡ With Auto Sessions, you no longer need to manually calculate session times! This fully automated tool detects your time zone and accurately plots global trading sessions on your chart. The result? Faster, more precise, and professional technical analysis! 🚀