Bias TableOverview
The Bias Table Indicator is a multi-timeframe analysis tool designed to provide a quick sentiment overview across multiple timeframes. It combines signals from Moving Averages (MAs) and Oscillators to determine market bias, helping traders make more informed decisions.
Key Features
✔ Multi-Timeframe Analysis (MTF) – Displays market bias across up to five timeframes.
✔ Customizable Signals – Choose whether bias is based on Moving Averages (MAs), Oscillators, or a combination of both.
✔ Visual Table Format – The indicator presents the bias as a color-coded table in the bottom-right corner of the chart for quick reference.
✔ Adjustable Colors & Display Settings – Users can customize colors for different sentiment states (Strong Buy, Buy, Neutral, Sell, Strong Sell).
How It Works
Bias Calculation: The indicator evaluates market conditions using preset values (which can be replaced with actual logic) to determine sentiment for each timeframe.
Multi-Timeframe Support: The table can display bias from hourly to monthly timeframes, giving traders a broader view of market conditions.
Customizable Signals: Users can filter the table to show bias based only on MAs, Oscillators, or a combination of both.
Interpreting the Table
📊 Timeframes: The leftmost column shows selected timeframes (e.g., 1H, 4H, 1D, 1W, 1M).
📈 Signal Columns:
MAs – Bias based on Moving Averages.
Oscillators – Bias based on momentum indicators like RSI, Stochastics, etc.
All – A combined bias based on both MAs & Oscillators.
🚦 Color-Coded Ratings:
🔵 Strong Buy – High bullish strength.
🔹 Buy – Moderate bullish sentiment.
⚪ Neutral – No clear trend.
🔸 Sell – Moderate bearish sentiment.
🔴 Strong Sell – High bearish strength.
Best Used For:
📈 Trend Confirmation: Validate signals from your primary strategy.
⏳ Multi-Timeframe Analysis: See whether short-term and long-term trends align.
⚡ Quick Sentiment Check: Get a high-level view of market conditions without analyzing multiple indicators separately.
Customization Options:
Select which timeframes to include in the table.
Choose whether to base bias on MAs, Oscillators, or both.
Adjust colors for each signal type.
Candlestick analysis
OI Strategy (Crypto & Indian Derivatives)Testing my own perametres
i am using open intrest of 4 hr and SMA and vwap Average
Diamond PatternDiamond Pattern Indicator
This indicator is designed to detect the Diamond Pattern, a technical formation that often signals potential trend reversals. The diamond pattern can lead to strong price movements, making it a valuable tool for traders.
Features:
✅ Automatic Detection – Identifies diamond patterns on the chart.
✅ Trend Reversal Signals – Highlights potential price direction changes.
✅ Multi-Timeframe Compatibility – Works across all timeframes.
✅ User-Friendly – Simple to use with no complex settings required.
How to Use:
1. Add the indicator to your chart.
2. Monitor for the formation of a Diamond Pattern.
3. Use the breakout direction to guide your trading decisions.
II Tech - UtilityII Tech - Utility Indicator
The II Tech - Utility is a powerful, multi-functional indicator designed for traders who want better insights into market structure and key price levels. It overlays essential price data on your charts, providing a clear view of custom timeframes, session highs/lows, and open/close prices.
🔹 Features:
✅ Custom Timeframe Levels – Plot open, high, low, and close prices from a user-defined timeframe for better trend analysis.
✅ Session Tracking – Highlight key trading sessions (New York, London, Asia, etc.) with customizable colors and styles.
✅ Midnight Open Price – Track the NY Midnight Open level, a critical reference point for price action traders.
✅ Customizable Visuals – Modify colors, line styles, and transparency to suit your trading style.
✅ Box & Deviation Zones – Display price ranges with optional deviation calculations for better risk management.
✅ Vertical & Horizontal Levels – Draw session separators, session mids, and key levels with precision.
This indicator is ideal for forex, stocks, and crypto traders looking to enhance their market structure analysis and trading execution. 🚀
👉 How to Use:
1. Adjust the Custom TF to overlay price levels from different timeframes.
2. Enable session highlights to track London, New York, and Asia trading hours.
3. Use NY Midnight Open as a reference for potential reversals or continuation setups.
4. Fine-tune the settings to match your strategy!
💡 Works best on intraday timeframes and can be combined with other confluence tools.
#Trading #Forex #MarketStructure #PriceAction #TradingView
PO3 + SMC + X0.45//@version=6
indicator('SMC + x0,45', shorttitle = 'SMC+x0,45', overlay = true, max_lines_count = 500)
//-----Input-------
GroupSMC = 'SMC'
showSMC = input.bool(true, 'Show SMC/Style', group = GroupSMC, inline = 'SMC/Style')
lineSMC = input.string(title = '', options = , defval = '(─)', group = GroupSMC, inline = 'SMC/Style', display = display.none)
lineStyleSMC = lineSMC == '(┈)' ? line.style_dotted : lineSMC == '(╌)' ? line.style_dashed : line.style_solid
colorSMC = input.color(color.rgb(4, 205, 255), 'Color/Width', group = GroupSMC, inline = 'Color/Width')
widthSMC = input.int(defval = 1, title = '', minval = 1, step = 1, group = GroupSMC, inline = 'Color/Width', display = display.none)
//Break
showBreak = input.bool(true, 'SMC break', group = GroupSMC, inline = 'SMC/break')
lineBreak = input.string(title = '', options = , defval = '(╌)', group = GroupSMC, inline = 'SMC/break', display = display.none)
lineStyleBreak = lineBreak == '(╌)' ? line.style_dashed : lineBreak == '(┈)' ? line.style_dotted : line.style_solid
colorBreak = input.color(#137ef8, 'Color/Width', group = GroupSMC, inline = 'SMC/Color/Width')
widthBreak = input.int(defval = 1, title = '', minval = 1, step = 1, group = GroupSMC, inline = 'SMC/Color/Width', display = display.none)
//choch
showChoch = input.bool(true, 'CHOCH', group = GroupSMC, inline = 'SMC/CHOCH')
lineChoch = input.string(title = '', options = , defval = '(─)', group = GroupSMC, inline = 'SMC/CHOCH', display = display.none)
lineStyleChoch = lineChoch == '(─)' ? line.style_solid : lineChoch == '(╌)' ? line.style_dashed : line.style_dotted
colorChoch = input.color(color.red, 'Color/Width', group = GroupSMC, inline = 'SMC/CHOCH/Color/Width')
widthChoch = input.int(defval = 1, title = '', minval = 1, step = 1, group = GroupSMC, inline = 'SMC/CHOCH/Color/Width', display = display.none)
//CHOCH
var arrayLineChoCh = array.new_line()
var arrayX_CHOCH_Up = array.new_int(1, time)
var arrayY_CHOCH_Up = array.new_float(1, close)
var arrayX_CHOCH_Dow = array.new_int(1, time)
var arrayY_CHOCH_Dow = array.new_float(1, close)
//alertChoch = 1: CHoCH/BOS up, 2: CHoCH/BOS dow
int alertChoch = 0
//Imbalance
showImbalance = input.bool(false, 'Show/Color', group = 'Imbalance', inline = 'Imbalance')
colorImbalance = input.color(color.blue, '', group = 'Imbalance', inline = 'Imbalance')
//Orderblock
showOrderblock = input.bool(true, 'Show/Color', group = 'Orderblock', inline = 'Orderblock')
colorOrderblock = input.color(color.rgb(0, 252, 63, 76), '', group = 'Orderblock', inline = 'Orderblock')
//Global
var arrayXSMC = array.new_int(5, time)
var arrayYSMC = array.new_float(5, close)
var arrayLineSMC = array.new_line()
int drawLineSMC = 0
var arrayLineBreak = array.new_line()
var arrayX_Break_Up = array.new_int(1, time)
var arrayY_Break_Up = array.new_float(1, close)
var arrayX_Break_Dow = array.new_int(1, time)
var arrayY_Break_Dow = array.new_float(1, close)
var arrayBos_Type = array.new_int(1, 0)
var bool runStart = true
var arrayBreakType = array.new_int(1, 0)
drawLineSMC := 0
bodyHigh = close > open ? close : open
bodyLow = close > open ? open : close
highPrev = high
lowPrev = low
var float highWick_Prev = high
var float lowWick_Prev = low
//alert = 1:create high, 2: create low
int alertType = 0
//sweepType = 1: sweep high, 2: sweep low
int sweepType = 0
if runStart
if open < close
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
array.unshift(arrayYSMC, high)
array.unshift(arrayXSMC, time)
array.unshift(arrayY_Break_Dow, low)
array.unshift(arrayX_Break_Dow, time)
else
array.unshift(arrayYSMC, high)
array.unshift(arrayXSMC, time)
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
array.unshift(arrayY_Break_Up, high)
array.unshift(arrayX_Break_Up, time)
runStart := false
runStart
//up trend
if array.get(arrayYSMC, 0) > array.get(arrayYSMC, 1)
//Bos / Impulse
if array.get(arrayBos_Type, 0) == 1
//brearish reversal
if low < lowPrev
if high > array.get(arrayYSMC, 0)
array.set(arrayYSMC, 0, high)
array.set(arrayXSMC, 0, time)
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
drawLineSMC := 3
drawLineSMC
else
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
drawLineSMC := 1
drawLineSMC
//create high
array.unshift(arrayBreakType, 4)
arrayBos_Type.set(0, 4)
//continue up
else
if high > array.get(arrayYSMC, 0)
array.set(arrayYSMC, 0, high)
array.set(arrayXSMC, 0, time)
drawLineSMC := 2
drawLineSMC
//No bos / xu huong tang phu correction / pullback
else //bearish reversal
if low < array.get(arrayYSMC, 1)
if high > array.get(arrayYSMC, 0)
array.set(arrayYSMC, 0, high)
array.set(arrayXSMC, 0, time)
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
drawLineSMC := 3
drawLineSMC
else
array.unshift(arrayYSMC, low)
array.unshift(arrayXSMC, time)
drawLineSMC := 1
drawLineSMC
//continue up
else
if high > array.get(arrayYSMC, 0)
array.set(arrayXSMC, 0, time)
array.set(arrayYSMC, 0, high)
drawLineSMC := 2
drawLineSMC
//end up trend
//dow trend
else //Bos / impulse
if array.get(arrayBos_Type, 0) == 2
//bullish reversal
if high > highPrev
if low < array.get(arrayYSMC, 0)
array.set(arrayYSMC, 0, low)
array.set(arrayXSMC, 0, time)
array.unshift(arrayYSMC, high)
array.unshift(arrayXSMC, time)
drawLineSMC := 3
drawLineSMC
else
array.unshift(arrayYSMC, high)
array.unshift(arrayXSMC, time)
drawLineSMC := 1
drawLineSMC
//create low
array.unshift(arrayBreakType, 3)
arrayBos_Type.set(0, 3)
//continue dow
else
if low < array.get(arrayYSMC, 0)
array.set(arrayYSMC, 0, low)
array.set(arrayXSMC, 0, time)
drawLineSMC := 2
drawLineSMC
//No bos /correction, pullback
else //bullish reversal
if high > array.get(arrayYSMC, 1)
if low < array.get(arrayYSMC, 0)
array.set(arrayXSMC, 0, time)
array.set(arrayYSMC, 0, low)
array.unshift(arrayXSMC, time)
array.unshift(arrayYSMC, high)
drawLineSMC := 3
drawLineSMC
else
array.unshift(arrayXSMC, time)
array.unshift(arrayYSMC, high)
drawLineSMC := 1
drawLineSMC
//continue dow
else
if low <= array.get(arrayYSMC, 0)
array.set(arrayXSMC, 0, time)
array.set(arrayYSMC, 0, low)
drawLineSMC := 2
drawLineSMC
//break
//get point beak dow
if barstate.isconfirmed and array.get(arrayYSMC, 0) > array.get(arrayYSMC, 1)
array.unshift(arrayX_Break_Dow, array.get(arrayXSMC, 1))
array.unshift(arrayY_Break_Dow, array.get(arrayYSMC, 1))
//bear up
if array.get(arrayYSMC, 0) > array.get(arrayYSMC, 2) and array.get(arrayY_Break_Up, 0) != array.get(arrayYSMC, 2)
array.unshift(arrayX_Break_Up, array.get(arrayXSMC, 2))
array.unshift(arrayY_Break_Up, array.get(arrayYSMC, 2))
alertType := 2
alertType
//get point break up
if barstate.isconfirmed and array.get(arrayYSMC, 0) < array.get(arrayYSMC, 1)
array.unshift(arrayX_Break_Up, array.get(arrayXSMC, 1))
array.unshift(arrayY_Break_Up, array.get(arrayYSMC, 1))
if array.get(arrayYSMC, 0) < array.get(arrayYSMC, 2) and array.get(arrayY_Break_Dow, 0) != array.get(arrayYSMC, 2)
array.unshift(arrayX_Break_Dow, array.get(arrayXSMC, 2))
array.unshift(arrayY_Break_Dow, array.get(arrayYSMC, 2))
alertType := 1
alertType
//break dow
if bodyLow < array.get(arrayY_Break_Dow, 0) and bodyLow <= lowWick_Prev and low == arrayYSMC.get(0) and array.size(arrayY_Break_Dow) > 1
float lineY_Break = 0
int lineX_Break = 0
if array.size(arrayLineBreak) > 0
lineY_Break := line.get_y1(array.get(arrayLineBreak, 0))
lineX_Break := line.get_x1(array.get(arrayLineBreak, 0))
lineX_Break
if lineY_Break != array.get(arrayY_Break_Dow, 0) or lineX_Break != array.get(arrayX_Break_Dow, 0)
if showBreak == false
colorBreak := color.rgb(0, 0, 0, 100)
colorBreak
array.unshift(arrayLineBreak, line.new(x1 = array.get(arrayX_Break_Dow, 0), y1 = array.get(arrayY_Break_Dow, 0), x2 = time, y2 = array.get(arrayY_Break_Dow, 0), color = colorBreak, xloc = xloc.bar_time, style = lineStyleBreak, width = widthBreak))
//set break type
array.unshift(arrayBreakType, 2)
//set bos type Dow
array.unshift(arrayBos_Type, 2)
//break up
if bodyHigh > array.get(arrayY_Break_Up, 0) and bodyHigh >= highWick_Prev and high == arrayYSMC.get(0) and array.size(arrayY_Break_Up) > 1
float lineY_Break = 0
int lineX_Break = 0
if array.size(arrayLineBreak) > 0
lineY_Break := line.get_y1(array.get(arrayLineBreak, 0))
lineX_Break := line.get_x1(array.get(arrayLineBreak, 0))
lineX_Break
if lineY_Break != array.get(arrayY_Break_Dow, 0) or lineX_Break != array.get(arrayX_Break_Dow, 0)
if showBreak == false
colorBreak := color.rgb(0, 0, 0, 100)
colorBreak
array.unshift(arrayLineBreak, line.new(x1 = array.get(arrayX_Break_Up, 0), y1 = array.get(arrayY_Break_Up, 0), x2 = time, y2 = array.get(arrayY_Break_Up, 0), color = colorBreak, xloc = xloc.bar_time, style = lineStyleBreak, width = widthBreak))
//set break type
array.unshift(arrayBreakType, 1)
//set bos type up
array.unshift(arrayBos_Type, 1)
//end break
//Insider bar
if high <= highPrev and low >= lowPrev
highPrev := highPrev
lowPrev := lowPrev
lowPrev
//xu huong tang
if array.get(arrayYSMC, 0) > array.get(arrayYSMC, 1)
highWick_Prev := array.get(arrayYSMC, 0)
highWick_Prev
else
lowWick_Prev := array.get(arrayYSMC, 0)
lowWick_Prev
//end
//draw line
if showSMC
if drawLineSMC == 2
if array.size(arrayLineSMC) > 0
line.set_xy2(array.get(arrayLineSMC, 0), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0))
else
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
else if drawLineSMC == 1
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
else if drawLineSMC == 3
if array.size(arrayLineSMC) > 0
line.set_xy2(array.get(arrayLineSMC, 0), array.get(arrayXSMC, 1), array.get(arrayYSMC, 1))
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
else if drawLineSMC == 4
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 2), array.get(arrayYSMC, 2), array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
else if drawLineSMC == 5
if array.size(arrayLineSMC) > 0
line.set_xy2(array.get(arrayLineSMC, 0), array.get(arrayXSMC, 2), array.get(arrayYSMC, 2))
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 2), array.get(arrayYSMC, 2), array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
array.unshift(arrayLineSMC, line.new(array.get(arrayXSMC, 1), array.get(arrayYSMC, 1), array.get(arrayXSMC, 0), array.get(arrayYSMC, 0), color = colorSMC, xloc = xloc.bar_time, width = widthSMC, style = lineStyleSMC))
//end line
//Imbalance
if showImbalance
bearishImb = high < low and close < open
bullishImb = low > high and close > open
//Bullish
if bullishImb
box.new(left = bar_index , top = low, right = bar_index, bottom = high , bgcolor = colorImbalance, border_color = colorImbalance)
//Bearish
if bearishImb
box.new(left = bar_index , top = high, right = bar_index, bottom = low , bgcolor = colorImbalance, border_color = colorImbalance)
//end Imbalance
//CHOCH
if showChoch
//get choch up
if array.get(arrayYSMC, 0) < array.get(arrayYSMC, 2) and array.get(arrayYSMC, 1) > array.get(arrayYSMC, 3)
//label.new(x=bar_index, y=low, text=str.tostring(array.get(arrayYSMC, 1)) , color=color.rgb(255, 255, 255, 30), style=label.style_label_up, textalign=text.align_center, size = size.normal)
array.unshift(arrayY_CHOCH_Up, array.get(arrayYSMC, 1))
array.unshift(arrayX_CHOCH_Up, array.get(arrayXSMC, 1))
//point choch dow
if array.get(arrayYSMC, 0) > array.get(arrayYSMC, 2) and array.get(arrayYSMC, 1) < array.get(arrayYSMC, 3)
array.unshift(arrayY_CHOCH_Dow, array.get(arrayYSMC, 1))
array.unshift(arrayX_CHOCH_Dow, array.get(arrayXSMC, 1))
//xu huong tang
if array.get(arrayYSMC, 0) > array.get(arrayYSMC, 1)
float pointYChochUp = array.get(arrayY_CHOCH_Up, 0)
int pointXChochUp = array.get(arrayX_CHOCH_Up, 0)
//lấy vị trí line choch
float pointY_Line_choch = 0
int pointX_Line_choch = 0
if array.size(arrayLineChoCh) > 0
//pointY_Line_choch := line.get_y1(array.get(arrayLineChoCh,0))
pointX_Line_choch := line.get_x1(array.get(arrayLineChoCh, 0))
pointX_Line_choch
//cay nen dau tien pha qua
if bodyHigh > pointYChochUp
//label.new(x=bar_index, y=high, text= str.tostring(pointX_Line_choch) + ' ' +str.tostring(pointXChochUp) , color=color.rgb(255, 255, 255, 30), style=label.style_label_down, textalign=text.align_center, size = size.normal)
//line choch up
if pointX_Line_choch != pointXChochUp
array.unshift(arrayLineChoCh, line.new(x1 = pointXChochUp, y1 = pointYChochUp, x2 = time, y2 = pointYChochUp, color = colorChoch, xloc = xloc.bar_time, style = lineStyleChoch, width = widthChoch))
alertChoch := 1
alertChoch
//label.new(x=bar_index, y=high, text="U" , color=color.rgb(255, 255, 255, 30), style=label.style_label_down, textalign=text.align_center, size = size.tiny)
//xu huong giam
if array.get(arrayYSMC, 0) < array.get(arrayYSMC, 1)
float pointYChochDow = array.get(arrayY_CHOCH_Dow, 0)
int pointXChochDow = array.get(arrayX_CHOCH_Dow, 0)
//lấy vị trí line choch
float pointY_Line_choch = 0
int pointX_Line_choch = 0
if array.size(arrayLineChoCh) > 0
//pointY_Line_choch := line.get_y1(array.get(arrayLineChoCh,0))
pointX_Line_choch := line.get_x1(array.get(arrayLineChoCh, 0))
pointX_Line_choch
if bodyLow < pointYChochDow
//line choch dow
if pointX_Line_choch != pointXChochDow
array.unshift(arrayLineChoCh, line.new(x1 = pointXChochDow, y1 = pointYChochDow, x2 = time, y2 = pointYChochDow, color = colorChoch, xloc = xloc.bar_time, style = lineStyleChoch, width = widthChoch))
alertChoch := 2
alertChoch
//end CHOCH
//label.new(x=bar_index, y=low, text= str.tostring(arrayBreakType.get(0)) , color=color.rgb(255, 255, 255, 30), style=label.style_label_up, textalign=text.align_center, size = size.tiny)
//order block
if showOrderblock
if low > high
if low > high
box.new(left = bar_index , top = high , right = bar_index, bottom = low , bgcolor = colorOrderblock, border_color = colorOrderblock)
else
if low <= low
box.new(left = bar_index , top = high , right = bar_index, bottom = low , bgcolor = colorOrderblock, border_color = colorOrderblock)
else
box.new(left = bar_index , top = high , right = bar_index, bottom = low , bgcolor = colorOrderblock, border_color = colorOrderblock)
//OB UP
if high < low
if high < low
box.new(left = bar_index , top = low , right = bar_index, bottom = high , bgcolor = colorOrderblock, border_color = colorOrderblock)
else
if high <= high
box.new(left = bar_index , top = low , right = bar_index, bottom = high , bgcolor = colorOrderblock, border_color = colorOrderblock)
else
box.new(left = bar_index , top = low , right = bar_index, bottom = high , bgcolor = colorOrderblock, border_color = colorOrderblock)
//insider/outside bar
insideBar = high < high and low > low
outsideBar = high > high and low < low
color = insideBar ? color.rgb(211, 212, 102) : outsideBar ? color.rgb(245, 169, 6) : na
barcolor(color = color, title = 'Inside/Outside Bar')
//Alert
//create high, low
alertcondition(alertType == 1 and barstate.isconfirmed, title = 'Create High ', message = 'Create High')
alertcondition(alertType == 2 and barstate.isconfirmed, title = 'Create Low ', message = 'Create Low')
//sweep
alertcondition(sweepType == 1 and barstate.isconfirmed, title = 'Sweep High ', message = 'Sweep High')
alertcondition(sweepType == 2 and barstate.isconfirmed, title = 'Sweep Low ', message = 'Sweep Low')
//Choch
alertcondition(alertChoch == 1, title = 'CHoCH Up ', message = 'CHoCH Up')
alertcondition(alertChoch == 2, title = 'CHoCH Dow ', message = 'CHoCH Dow')
PinbarRatio = input(0.45, 'Pin bar body over whole candle')
// return 1 if bullish pinbar, -1 if bearish pinbar
isPinBar(ratio) =>
range_1 = high - low
upper = high - range_1 * ratio
lower = low + range_1 * ratio
bullish = open >= lower and close >= lower
bearish = open <= upper and close <= upper
bullish ? 1 : bearish ? -1 : 0
insidebar = high < high and low > low
pinbar = isPinBar(PinbarRatio)
plotchar(pinbar == 1, 'Pin bar', '●', color = color.new(#000000, 0), location = location.belowbar, size = size.tiny)
plotchar(pinbar == -1, 'Pin bar', '●', color = color.new(#000000, 0), location = location.abovebar, size = size.tiny)
alertcondition(insidebar, 'Pin bar', 'Pin bar')
Heiken Ashi Supertrend ATR-SL StrategyThis indicator combines Heikin Ashi candle pattern analysis with Supertrend to generate high-probability trading signals with built-in risk management. It identifies potential entries and exits based on specific Heikin Ashi candlestick formations while providing automated ATR-based stop loss management.
Trading Logic:
The system generates long signals when a green Heikin Ashi candle forms with no bottom wick (indicating strong bullish momentum). Short signals appear when a red Heikin Ashi candle forms with no top wick (showing strong bearish momentum). The absence of wicks on these candles signals a high-conviction market move in the respective direction.
Exit signals are triggered when:
1. An opposite pattern forms (red candle with no top wick exits longs; green candle with no bottom wick exits shorts)
2. The ATR-based stop loss is hit
3. The break-even stop is activated and then hit
Technical Approach:
- Select Heiken Ashi Canldes on your Trading View chart. Entried are based on HA prices.
- Supertrend and ATR-based stop losses use real price data (not HA values) for trend determination
- ATR-based stop losses automatically adjust to market volatility
- Break-even functionality moves the stop to entry price once price moves a specified ATR multiple in your favor
Risk Management:
- Default starting capital: 1000 units
- Default risk per trade: 10% of equity (customizable in strategy settings)
- Hard Stop Loss: Set ATR multiplier (default: 2.0) for automatic stop placement
- Break Even: Configure ATR threshold (default: 1.0) to activate break-even stops
- Appropriate position sizing relative to equity and stop distance
Customization Options:
- Supertrend Settings:
- Enable/disable Supertrend filtering (trade only in confirmed trend direction)
- Adjust Factor (default: 3.0) to change sensitivity
- Modify ATR Period (default: 10) to adapt to different timeframes
Visual Elements:
- Green triangles for long entries, blue triangles for short entries
- X-marks for exits and stop loss hits
- Color-coded position background (green for long, blue for short)
- Clearly visible stop loss lines (red for hard stop, white for break-even)
- Comprehensive position information label with entry price and stop details
Implementation Notes:
The indicator tracks positions internally and maintains state across bars to properly manage stop levels. All calculations use confirmed bars only, with no repainting or lookahead bias. The system is designed for swing trading on timeframes from 1-hour and above, where Heikin Ashi patterns tend to be more reliable.
This indicator is best suited for traders looking to combine the pattern recognition strengths of Heikin Ashi candles with the trend-following capabilities of Supertrend, all while maintaining disciplined risk management through automated stops.
SMA Crossover Strategy//@version=5
indicator("SMA Crossover Strategy", overlay = true)
// SMA Indicators
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)
// Buy & Sell Conditions
buyCondition = ta.crossover(sma50, sma200) // BUY Signal
sellCondition = ta.crossunder(sma50, sma200) // SELL Signal
// Plotting SMA Lines
plot(sma50, color = color.green, linewidth = 2, title = "SMA 50")
plot(sma200, color = color.red, linewidth = 2, title = "SMA 200")
// Entry & Exit Signals
plotshape(buyCondition, style = shape.labelup, location = location.belowbar, color = color.green, size = size.large, title = "BUY Signal")
plotshape(sellCondition, style = shape.labeldown, location = location.abovebar, color = color.red, size = size.large, title = "SELL Signal")
NakInvest - PFR IdentifierVery simple indicator that helps you identify classic PFRs, bullish and bearish.
Spyder NQ💵 Estratégias USA Tech 📈
🚀Análises e tendências para maximizar seus lucros.
🤑 Renda extra em Dólares!
Phân tích nến VSA & WyckoffNote các nến có yếu tố đặc biệt của VSA, VPA
Các nến này được đặc biết thiết kế theo tài liệu chuẩn
Whale Candles DetectorWhale Candles Detector adalah indikator yang mengesan kehadiran whales dalam pasaran berdasarkan volum dan saiz candlestick.
🔹 Ciri utama:
✅ Mengenal pasti candle whales berdasarkan volum tinggi (≥2x volum sebelumnya) dan badan candle besar (≥2x saiz sebelumnya).
✅ Menukar warna candle whales kepada putih untuk membezakannya dengan candle biasa.
✅ Menampilkan simbol BUY (🟢) di atas candle jika whales sedang membeli.
✅ Menampilkan simbol SELL (🔴) di bawah candle jika whales sedang menjual.
📌 Kegunaan:
Mengenal pasti pergerakan besar dalam pasaran yang didorong oleh pemain besar.
Membantu pedagang memahami sama ada kenaikan atau kejatuhan harga disokong oleh volum sebenar.
Boleh digunakan dalam swing trading atau day trading untuk mencari titik masuk yang lebih tepat.
Gunakan pada timeframe yang lebih tinggi (contoh: 1H ke atas) untuk hasil lebih baik. 🚀
Clean OHLC Lines | BaksPlots clean, non-repainting OHLC lines from higher timeframes onto your chart. Ideal for tracking key price levels (open, high, low, close) with precision and minimal clutter.
Core Functionality
Clean OHLC Lines = Historical Levels + Non-Repainting Logic
• Uses lookahead=on to anchor historical lines, ensuring no repainting.
• Displays OHLC lines for customizable timeframes (15min to Monthly).
• Optional candlestick boxes for visual context.
Key Features
• Multi-Timeframe OHLC:
Plot lines from 15min, 30min, 1H, 4H, Daily, Weekly, or Monthly timeframes.
• Non-Repainting Logic:
Historical lines remain static and never recalculate.
• Customizable Styles:
Adjust colors, line widths (1px-4px), and transparency for high/low/open/close lines.
• Candle Display:
Toggle candlestick boxes with bull/bear colors and adjustable borders.
• Past Lines Limit:
Control how many historical lines are displayed (1-500 bars).
User Inputs
• Timeframe:
Select the OHLC timeframe (e.g., "D" for daily).
• # Past Lines:
Limit historical lines to avoid overcrowding (default: 10).
• H/L Mode:
Draw high/low lines from the current or previous period.
• O/C Mode:
Anchor open/close lines to today’s open or yesterday’s close.
• Line Styles:
Customize colors, transparency, and styles (solid/dotted/dashed).
• Candle Display:
Toggle boxes/wicks and adjust bull/bear colors.
Important Notes
⚠️ Alignment:
• Monthly/weekly timeframes use fixed approximations (30d/7d).
• For accuracy, ensure your chart’s timeframe ≤ the selected OHLC timeframe (e.g., use 1H chart for daily lines).
⚠️ Performance:
• Reduce # Past Lines on low-end devices for smoother performance.
Risk Disclaimer
Trading involves risk. OHLC lines reflect historical price levels and do not predict future behavior. Use with other tools and risk management.
Open-Source Notice
This script is open-source under the Mozilla Public License 2.0. Modify or improve it freely, but republishing must follow TradingView’s House Rules.
📈 Happy trading!
Grease Trap V1.0The Grease Trap V1.0 indicator is a dynamic, Fibonacci-based strategy that calculates unique moving averages to generate trading signals. Below is an overview of its main components and functionality:
How It Works
Fibonacci Grouped Averages:
Dynamic Fibonacci Sequence:
The indicator uses a custom function that dynamically builds a Fibonacci sequence. The user can set the number of Fibonacci elements for two separate calculations:
One for the Indicator Average (default: 9 elements).
One for the Base Average (default: 14 elements).
Grouped Averaging:
Using these Fibonacci numbers, the script groups historical closing prices into segments. For each group (with a length determined by a Fibonacci number), it computes an average. These individual group averages are then averaged together to produce a single dynamic average.
Plotting and Visual Cues:
Two Lines:
The indicator plots two lines on the chart:
Primary Dynamic Fibonacci Grouped Average
Base Dynamic Fibonacci Grouped Average
Color Coding:
The colors of these lines change based on their relationship to the current high price and to each other. For example, if the primary average is above the high or crosses above the base average, it might be shown in green or yellow, whereas certain conditions trigger red, signaling caution.
Crossover Dots:
When the primary average crosses above the base (a bullish signal), a green dot is plotted. Conversely, when it crosses below (a bearish signal), a red dot is displayed. These dots help visually pinpoint the moments of potential trade entry or exit.
Trading Signals and Orders:
Buy Signal:
Triggered when the primary average crosses above the base average. On a buy signal:
If in a short position, it closes that position.
Then, it enters a long position.
Sell Signal:
Triggered when the primary average crosses below the base average. On a sell signal:
If in a long position, it closes that position.
Then, it enters a short position.
Profit Target Management:
The indicator includes automated profit management:
For long positions, it sets an exit order when the price rises by a user-defined percentage (default: 2%).
For short positions, it sets an exit order when the price falls by a similar percentage.
Alerts:
The script is equipped with alert conditions. Traders receive notifications whenever a buy or sell signal is generated, helping them stay on top of potential trading opportunities.
Customization
User Inputs:
Traders can adjust:
The number of Fibonacci elements for each average calculation.
Profit target percentages for both long and short positions.
Data Length Requirement:
The script ensures it uses at least 200 data points (or the total number of available bars, whichever is greater) for a robust calculation of the averages.
In Summary
The Grease Trap V1.0 indicator combines the mathematical elegance of Fibonacci sequences with dynamic grouped averaging. It offers:
Innovative Moving Averages: Based on Fibonacci groupings of historical price data.
Clear Visual Cues: Through color-coded lines and crossover dots.
Automated Trading Actions: With built-in order management and profit targets.
Alert Notifications: So traders are instantly aware of key market signals.
This makes the Grease Trap V1.0 a comprehensive tool for both signal generation and automated strategy execution, suitable for traders looking to integrate Fibonacci principles into their trading systems.
Optimized Intraday StrategyThis is Trading Strategy for 70% winning ratio. Kindly trade at your own risk, this chart/indicator/strategy doesn't guarantee profits.
Order Blocks, FVG & Liquidity Zones//@version=5
indicator("Order Blocks, FVG & Liquidity Zones", overlay=true)
// === Moving Averages ===
ema_39 = ta.ema(close, 39)
ema_89 = ta.ema(close, 89)
ema_200 = ta.ema(close, 200)
// === Fair Value Gap (FVG) ===
fvg_up = ta.highest(close, 3) > ta.lowest(open, 3)
fvg_down = ta.lowest(close, 3) < ta.highest(open, 3)
// === Order Block (OB) ===
bullish_OB = close < open and close > open and close > open
bearish_OB = close > open and close < open and close < open
// === Liquidity Zones ===
eq_high = ta.highest(high, 5) == ta.highest(high, 20)
eq_low = ta.lowest(low, 5) == ta.lowest(low, 20)
// === Conditions for Buy/Sell ===
buy_condition = bullish_OB and fvg_up and close > ema_200
sell_condition = bearish_OB and fvg_down and close < ema_200
// === Plot Boxes and Labels ===
bgcolor(buy_condition ? color.green : na, transp=80)
bgcolor(sell_condition ? color.red : na, transp=80)
label_color = color.white
if buy_condition
label.new(bar_index, high, "BUY: Bullish OB + FVG", color=color.green, textcolor=label_color, size=size.small)
if sell_condition
label.new(bar_index, low, "SELL: Bearish OB + FVG", color=color.red, textcolor=label_color, size=size.small)
if eq_high
label.new(bar_index, high, "Liquidity High", color=color.blue, textcolor=label_color, size=size.tiny)
if eq_low
label.new(bar_index, low, "Liquidity Low", color=color.blue, textcolor=label_color, size=size.tiny)
// === EMA Cross Over ===
plot(ema_39, color=color.yellow, title="EMA 39")
plot(ema_89, color=color.orange, title="EMA 89")
plot(ema_200, color=color.blue, title="EMA 200")
Smoothed Heiken Ashi with ArrowsSmoothed Heiken Ashi with Arrows
This indicator plots Smoothed Heiken Ashi candles and adds arrows to highlight trend reversals:
• Green arrow (UP) → Appears when a red (bearish) candle turns green (bullish).
• Red arrow (DOWN) → Appears when a green (bullish) candle turns red (bearish).
The smoothing settings are customizable, allowing you to adjust how the candles are calculated.
Use this tool to easily spot trend shifts and potential entry points.
Exact High/Low IndicatorThis indicator identifies exact equal highs and lows between consecutive candles. If the current candle’s high matches the previous candle’s high (or low matches low), an arrow is plotted on the chart. The arrows disappear if any future candle break the identified high/low, thereby indicating that it is not an unmitigated liquidity pool any longer
Customizable options include:
Arrow size and color
Line thickness and color
Enable/disable plotting of arrows and lines
Offset the arrow so there is space between arrow and candle
Inside/Outside Based on Current Price (No Overlap)Timeframe continuity indicator that shows the 5m / 15m / 1h timeframes, going from least to greatest, top to bottom. When the timeframe is yellow that means it is inside the previous bar on the timeframe being indicated, green is for outside bullish, and red is for outside bearish. I use this in conjunction with a couple different tools for trend analysis, mostly for confirmation and confluence not for sell and buy signals. The best way to run this is in a separate pane like you see in the screenshot for the cover.
Happy trading!!
-Drgzzz
Candle Body Range Color-CoderThis indicator categorizes the candles based upon the size of the body for the sizes of the body 30 to 60 has one color signified and 60 to 90 points of body had one color significant and above 90 point size of body red candle has one color significant just to understand the opportunities in a day as per the points of each candle.
Robo's Ultimate 1 Min. Indicator9 ema crossing the 20 ema with the help of a macd cross, an rsi divergence and a rsi value. Use at you own risk im defiantly no pro.