Previous candle - D-T.R.A.D.I.N.G//@version=6
indicator("Previous candle - byDen (Body % line & Wick size) ", overlay=true, max_boxes_count=200, max_lines_count=200, max_labels_count=200)
// ---------------- Inputs ----------------
showHighLow = input.bool(true, "Show High/Low lines")
showHLBox = input.bool(true, "Show High-Low Box (full range)")
showMidLine = input.bool(true, "Show Middle Line")
showCloseLine = input.bool(true, "Show Close Line")
showBodyPct = input.bool(true, "Show Body % Line")
enableWickBox = input.bool(true, "Show Wick-Body Box (previous candle)")
keepLastWick = input.bool(false, "Keep last Wick-Box when disabled")
bodyPct = input.float(25.0, "Body % Level", step=0.1, minval=0.0, maxval=100.0)
// colors / styles
cHighLow = input.color(color.white, "H/L Line Color")
hlStyleStr = input.string("solid", "H/L Style", options= )
hlWidth = input.int(1, "H/L Width", minval=1, maxval=5)
cMid = input.color(color.yellow, "Mid Line Color")
midStyleStr = input.string("dashed", "Mid Style", options= )
midWidth = input.int(1, "Mid Width", minval=1, maxval=5)
cClose = input.color(color.yellow, "Close Line Color")
closeStyleStr = input.string("dotted", "Close Style", options= )
closeWidth = input.int(1, "Close Width", minval=1, maxval=5)
cBoxBorder = input.color(color.red, "HL Box Border")
cBoxFill = color.new(input.color(color.gray, "HL Box Fill"), 85)
cBullBox = color.new(input.color(color.green, "Bull WickBox"), 80)
cBearBox = color.new(input.color(color.red, "Bear WickBox"), 80)
cWboxBorder = input.color(color.white, "WickBox Border")
cBodyPct = input.color(color.blue, "Body % Line Color")
bodyPctStyle = input.string("dashed", "Body % Line Style", options= )
bodyPctWidth = input.int(1, "Body % Line Width", minval=1, maxval=5)
// table colors / pip size
cPipBox = input.color(color.new(color.blue, 80), "Table Background Color")
cPipText = input.color(color.white, "Table Text Color")
pipSize = input.float(0.1, "Pip size (XAUUSD=0.1)", step=0.01)
wickLabelText = input.string("Wick", "Opis za wick")
bodyLabelText = input.string("H/L-Body%", "Opis za H/L-Body%")
descFontSizeStr = input.string("small", "Table Description Font Size", options= )
valFontSizeStr = input.string("normal", "Table Value Font Size", options= )
// custom texts for line labels
txtHigh = input.string("High", "Label Text - High")
txtLow = input.string("Low", "Label Text - Low")
txtMid = input.string("Mid", "Label Text - Mid")
txtClose = input.string("Close", "Label Text - Close")
txtBody = input.string("Body%", "Label Text - Body %")
lineFontSizeStr = input.string("small", "Line Label Font Size", options= )
lineLabelPos = input.string("above", "Line Label Position", options= )
lineLabelAlign = input.string("center", "Line Label Align", options= )
// ---------------- Candle Display Options ----------------
highDisplay = input.string("Both", "High Line Display", options= )
lowDisplay = input.string("Both", "Low Line Display", options= )
midDisplay = input.string("Both", "Mid Line Display", options= )
closeDisplay = input.string("Both", "Close Line Display", options= )
bodyDisplay = input.string("Both", "Body % Line Display", options= )
hlBoxDisplay = input.string("Both", "HL Box Display", options= )
wickBoxDisplay = input.string("Both", "Wick Box Display", options= )
// timeframe filter
enabledTFs = input.string("1,5,15,30,60,240,D", "Enable on timeframes")
// ---------------- Helpers ----------------
is_tf_enabled(tfStr) =>
str.contains("," + enabledTFs + ",", "," + tfStr + ",")
line_style_from_str(s) =>
s == "dotted" ? line.style_dotted : s == "dashed" ? line.style_dashed : line.style_solid
get_font_size(fs) =>
fs == "tiny" ? size.tiny : fs == "small" ? size.small : fs == "large" ? size.large : fs == "huge" ? size.huge : size.normal
get_label_style(a) =>
a == "left" ? label.style_label_left : a == "right" ? label.style_label_right : label.style_label_center
get_y_pos(basePrice, pos) =>
pos == "above" ? basePrice + (syminfo.mintick * 10) : basePrice - (syminfo.mintick * 10)
// ---------------- Data ----------------
tf = timeframe.period
= request.security(syminfo.tickerid, tf, , lookahead=barmerge.lookahead_off)
midLevel = (prevH + prevL) / 2
isBull = prevC > prevO
// ---------------- Persistent ----------------
var line lHigh = na
var line lLow = na
var line lMid = na
var line lClose = na
var line lBodyPct = na
var box bHL = na
var box wickBox = na
var table wickTable = na
var label labHigh = na
var label labLow = na
var label labMid = na
var label labClose = na
var label labBodyPct = na
offsetBars = input.int(20, "Bars right", minval=1, maxval=500)
leftX_base = bar_index
rightX_base = bar_index + offsetBars
if na(wickTable)
wickTable := table.new(position.bottom_right, 2, 2, border_width=1, frame_color=color.white)
// ---------------- DRAW ----------------
if barstate.isconfirmed and is_tf_enabled(tf)
// delete previous labels
if not na(labHigh)
label.delete(labHigh)
labHigh := na
if not na(labLow)
label.delete(labLow)
labLow := na
if not na(labMid)
label.delete(labMid)
labMid := na
if not na(labClose)
label.delete(labClose)
labClose := na
if not na(labBodyPct)
label.delete(labBodyPct)
labBodyPct := na
// --- DRAW HIGH ---
drawHigh = (highDisplay=="Both") or (highDisplay=="Bullish" and isBull) or (highDisplay=="Bearish" and not isBull)
if showHighLow and drawHigh
if not na(lHigh)
line.delete(lHigh)
lHigh := line.new(leftX_base, prevH, rightX_base, prevH, xloc=xloc.bar_index, color=cHighLow, width=hlWidth, style=line_style_from_str(hlStyleStr))
labHigh := label.new(rightX_base, get_y_pos(prevH,lineLabelPos), txtHigh, xloc=xloc.bar_index, yloc=yloc.price, style=get_label_style(lineLabelAlign), textcolor=cHighLow, size=get_font_size(lineFontSizeStr))
// --- DRAW LOW ---
drawLow = (lowDisplay=="Both") or (lowDisplay=="Bullish" and isBull) or (lowDisplay=="Bearish" and not isBull)
if showHighLow and drawLow
if not na(lLow)
line.delete(lLow)
lLow := line.new(leftX_base, prevL, rightX_base, prevL, xloc=xloc.bar_index, color=cHighLow, width=hlWidth, style=line_style_from_str(hlStyleStr))
labLow := label.new(rightX_base, get_y_pos(prevL,lineLabelPos), txtLow, xloc=xloc.bar_index, yloc=yloc.price, style=get_label_style(lineLabelAlign), textcolor=cHighLow, size=get_font_size(lineFontSizeStr))
// --- DRAW MID ---
drawMid = (midDisplay=="Both") or (midDisplay=="Bullish" and isBull) or (midDisplay=="Bearish" and not isBull)
if showMidLine and drawMid
if not na(lMid)
line.delete(lMid)
lMid := line.new(leftX_base, midLevel, rightX_base, midLevel, xloc=xloc.bar_index, color=cMid, width=midWidth, style=line_style_from_str(midStyleStr))
labMid := label.new(rightX_base, get_y_pos(midLevel,lineLabelPos), txtMid, xloc=xloc.bar_index, yloc=yloc.price, style=get_label_style(lineLabelAlign), textcolor=cMid, size=get_font_size(lineFontSizeStr))
// --- DRAW CLOSE ---
drawClose = (closeDisplay=="Both") or (closeDisplay=="Bullish" and isBull) or (closeDisplay=="Bearish" and not isBull)
if showCloseLine and drawClose
if not na(lClose)
line.delete(lClose)
lClose := line.new(leftX_base, prevC, rightX_base, prevC, xloc=xloc.bar_index, color=cClose, width=closeWidth, style=line_style_from_str(closeStyleStr))
labClose := label.new(rightX_base, get_y_pos(prevC,lineLabelPos), txtClose, xloc=xloc.bar_index, yloc=yloc.price, style=get_label_style(lineLabelAlign), textcolor=cClose, size=get_font_size(lineFontSizeStr))
// --- DRAW BODY% ---
float bodySize = math.abs(prevC-prevO)
float levelPct = na
drawBody = (bodyDisplay=="Both") or (bodyDisplay=="Bullish" and isBull) or (bodyDisplay=="Bearish" and not isBull)
if showBodyPct and bodySize>0 and drawBody
if not na(lBodyPct)
line.delete(lBodyPct)
levelPct := isBull ? (prevC - (bodyPct/100)*bodySize) : (prevC + (bodyPct/100)*bodySize)
lBodyPct := line.new(leftX_base, levelPct, rightX_base, levelPct, xloc=xloc.bar_index, color=cBodyPct, width=bodyPctWidth, style=line_style_from_str(bodyPctStyle))
labBodyPct := label.new(rightX_base, get_y_pos(levelPct,lineLabelPos), txtBody, xloc=xloc.bar_index, yloc=yloc.price, style=get_label_style(lineLabelAlign), textcolor=cBodyPct, size=get_font_size(lineFontSizeStr))
// --- BOXES ---
drawHLBox = (hlBoxDisplay=="Both") or (hlBoxDisplay=="Bullish" and isBull) or (hlBoxDisplay=="Bearish" and not isBull)
if showHLBox and drawHLBox
if not na(bHL)
box.delete(bHL)
bHL := box.new(leftX_base, prevH, rightX_base, prevL, xloc=xloc.bar_index, border_color=cBoxBorder, bgcolor=cBoxFill)
drawWickBox = (wickBoxDisplay=="Both") or (wickBoxDisplay=="Bullish" and isBull) or (wickBoxDisplay=="Bearish" and not isBull)
if enableWickBox and drawWickBox
float topP = isBull ? prevH : prevC
float botP = isBull ? prevC : prevL
if not na(topP) and not na(botP)
if not na(wickBox)
box.delete(wickBox)
wickBox := box.new(leftX_base, topP, rightX_base, botP, xloc=xloc.bar_index, border_color=cWboxBorder, bgcolor=(isBull?cBullBox:cBearBox))
else if not enableWickBox and not keepLastWick and not na(wickBox)
box.delete(wickBox)
wickBox := na
// --- TABLE (vedno na obeh) ---
float wickPips = isBull ? prevH-prevC : prevC-prevL
float bodyPips = na
if not na(levelPct)
bodyPips := isBull ? math.round((prevH-levelPct)/pipSize) : math.round((levelPct-prevL)/pipSize)
table.cell(wickTable, 0, 0, wickLabelText, text_color=cPipText, bgcolor=cPipBox, text_size=get_font_size(descFontSizeStr))
table.cell(wickTable, 1, 0, str.tostring(wickPips/pipSize), text_color=cPipText, bgcolor=cPipBox, text_size=get_font_size(valFontSizeStr))
if not na(bodyPips)
table.cell(wickTable, 0, 1, bodyLabelText, text_color=cPipText, bgcolor=cPipBox, text_size=get_font_size(descFontSizeStr))
table.cell(wickTable, 1, 1, str.tostring(bodyPips), text_color=cPipText, bgcolor=cPipBox, text_size=get_font_size(valFontSizeStr))
Options
Previous candle - byDen (Body % line & Wick size)
//@version=6
indicator("Previous candle - byDen (Body % line & Wick size) ", overlay=true, max_boxes_count=200, max_lines_count=200, max_labels_count=200)
// ---------------- Inputs ----------------
showHighLow = input.bool(true, "Show High/Low lines")
showHLBox = input.bool(true, "Show High-Low Box (full range)")
showMidLine = input.bool(true, "Show Middle Line")
showCloseLine = input.bool(true, "Show Close Line")
showBodyPct = input.bool(true, "Show Body % Line")
enableWickBox = input.bool(true, "Show Wick-Body Box (previous candle)")
keepLastWick = input.bool(false, "Keep last Wick-Box when disabled")
bodyPct = input.float(25.0, "Body % Level", step=0.1, minval=0.0, maxval=100.0)
// colors / styles
cHighLow = input.color(color.white, "H/L Line Color")
hlStyleStr = input.string("solid", "H/L Style", options= )
hlWidth = input.int(1, "H/L Width", minval=1, maxval=5)
cMid = input.color(color.yellow, "Mid Line Color")
midStyleStr = input.string("dashed", "Mid Style", options= )
midWidth = input.int(1, "Mid Width", minval=1, maxval=5)
cClose = input.color(color.yellow, "Close Line Color")
closeStyleStr = input.string("dotted", "Close Style", options= )
closeWidth = input.int(1, "Close Width", minval=1, maxval=5)
cBoxBorder = input.color(color.red, "HL Box Border")
cBoxFill = color.new(input.color(color.gray, "HL Box Fill"), 85)
cBullBox = color.new(input.color(color.green, "Bull WickBox"), 80)
cBearBox = color.new(input.color(color.red, "Bear WickBox"), 80)
cWboxBorder = input.color(color.white, "WickBox Border")
cBodyPct = input.color(color.blue, "Body % Line Color")
bodyPctStyle = input.string("dashed", "Body % Line Style", options= )
bodyPctWidth = input.int(1, "Body % Line Width", minval=1, maxval=5)
// wick label
cPipBox = input.color(color.new(color.blue, 80), "Wick Box Color")
cPipText = input.color(color.white, "Wick Text Color")
pipSize = input.float(0.1, "Pip size (XAUUSD=0.1)", step=0.01)
// Label settings
showLabels = input.bool(true, "Show Line Labels")
labelAbove = input.bool(true, "Labels Above Line?")
fontSizeStr = input.string("normal", "Label Font Size", options= )
labelAlignX = input.string("center", "Label Alignment", options= )
// custom texts for labels
txtHigh = input.string("High", "Label Text - High")
txtLow = input.string("Low", "Label Text - Low")
txtMid = input.string("Mid", "Label Text - Mid")
txtClose = input.string("Close", "Label Text - Close")
txtBody = input.string("Body %", "Label Text - Body %")
// Wick pips font size (same options)
wickFontSizeStr = input.string("normal", "Wick Pips Font Size", options= )
// timeframe filter
enabledTFs = input.string("1,5,15,30,60,240,D", "Enable on timeframes")
// ---------------- Helpers ----------------
is_tf_enabled(tfStr) =>
str.contains("," + enabledTFs + ",", "," + tfStr + ",")
line_style_from_str(s) =>
s == "dotted" ? line.style_dotted : s == "dashed" ? line.style_dashed : line.style_solid
get_label_style(_align) =>
_align == "left" ? label.style_label_left : _align == "right" ? label.style_label_right : label.style_label_center
get_font_size(fs) =>
if fs == "tiny"
size.tiny
else if fs == "small"
size.small
else if fs == "large"
size.large
else if fs == "huge"
size.huge
else
size.normal
// ---------------- Data ----------------
tf = timeframe.period
= request.security(syminfo.tickerid, tf, , lookahead=barmerge.lookahead_off)
midLevel = (prevH + prevL) / 2
isBull = prevC > prevO
// ---------------- Persistent ----------------
var line lHigh = na
var line lLow = na
var line lMid = na
var line lClose = na
var line lBodyPct = na
var box bHL = na
var box wickBox = na
var table wickTable = na
// labels
var label labHigh = na
var label labLow = na
var label labMid = na
var label labClose = na
var label labBody = na
offsetBars = input.int(20, "Bars right", minval=1, maxval=500)
leftX_base = bar_index
rightX_base = bar_index + offsetBars
if na(wickTable)
wickTable := table.new(position.bottom_right, 1, 1, border_width=1, frame_color=color.white)
// ---------------- DRAW ----------------
if barstate.isconfirmed and is_tf_enabled(tf)
// clean old labels
if not na(labHigh)
label.delete(labHigh)
if not na(labLow)
label.delete(labLow)
if not na(labMid)
label.delete(labMid)
if not na(labClose)
label.delete(labClose)
if not na(labBody)
label.delete(labBody)
// style for labels
labStyle = get_label_style(labelAlignX)
labSize = get_font_size(fontSizeStr)
wickSize = get_font_size(wickFontSizeStr)
yOffset = labelAbove ? 1 : -1
if showHighLow
if not na(lHigh)
line.delete(lHigh)
if not na(lLow)
line.delete(lLow)
lHigh := line.new(leftX_base, prevH, rightX_base, prevH, xloc=xloc.bar_index, color=cHighLow, width=hlWidth, style=line_style_from_str(hlStyleStr))
lLow := line.new(leftX_base, prevL, rightX_base, prevL, xloc=xloc.bar_index, color=cHighLow, width=hlWidth, style=line_style_from_str(hlStyleStr))
if showLabels
labHigh := label.new(rightX_base, prevH + yOffset*syminfo.mintick, txtHigh, xloc=xloc.bar_index, yloc=yloc.price, style=labStyle, textcolor=cHighLow, size=labSize)
labLow := label.new(rightX_base, prevL + yOffset*syminfo.mintick, txtLow, xloc=xloc.bar_index, yloc=yloc.price, style=labStyle, textcolor=cHighLow, size=labSize)
if showMidLine
if not na(lMid)
line.delete(lMid)
lMid := line.new(leftX_base, midLevel, rightX_base, midLevel, xloc=xloc.bar_index, color=cMid, width=midWidth, style=line_style_from_str(midStyleStr))
if showLabels
labMid := label.new(rightX_base, midLevel + yOffset*syminfo.mintick, txtMid, xloc=xloc.bar_index, yloc=yloc.price, style=labStyle, textcolor=cMid, size=labSize)
if showCloseLine
if not na(lClose)
line.delete(lClose)
lClose := line.new(leftX_base, prevC, rightX_base, prevC, xloc=xloc.bar_index, color=cClose, width=closeWidth, style=line_style_from_str(closeStyleStr))
if showLabels
labClose := label.new(rightX_base, prevC + yOffset*syminfo.mintick, txtClose, xloc=xloc.bar_index, yloc=yloc.price, style=labStyle, textcolor=cClose, size=labSize)
if showBodyPct
if not na(lBodyPct)
line.delete(lBodyPct)
float bodySize = math.abs(prevC - prevO)
if bodySize > 0
float levelPct = isBull ? (prevC - (bodyPct/100.0) * bodySize) : (prevC + (bodyPct/100.0) * bodySize)
lBodyPct := line.new(leftX_base, levelPct, rightX_base, levelPct, xloc=xloc.bar_index, color=cBodyPct, width=bodyPctWidth, style=line_style_from_str(bodyPctStyle))
if showLabels
labBody := label.new(rightX_base, levelPct + yOffset*syminfo.mintick, txtBody + " " + str.tostring(bodyPct), xloc=xloc.bar_index, yloc=yloc.price, style=labStyle, textcolor=cBodyPct, size=labSize)
if showHLBox
if not na(bHL)
box.delete(bHL)
bHL := box.new(leftX_base, prevH, rightX_base, prevL, xloc=xloc.bar_index, border_color=cBoxBorder, bgcolor=cBoxFill)
if not enableWickBox
if not na(wickBox) and not keepLastWick
box.delete(wickBox)
wickBox := na
else
float topP = isBull ? prevH : prevC
float botP = isBull ? prevC : prevL
if not na(topP) and not na(botP)
if not na(wickBox)
box.delete(wickBox)
wickBox := box.new(leftX_base, topP, rightX_base, botP, xloc=xloc.bar_index, border_color=cWboxBorder, bgcolor=(isBull ? cBullBox : cBearBox))
// wick izračun (v pipih)
float wickPips = isBull ? prevH - prevC : prevC - prevL
float wickInPips = math.round(wickPips / pipSize)
// prikaži samo številko v desnem spodnjem kotu (z nastavljivo velikostjo)
table.cell(wickTable, 0, 0, str.tostring(wickInPips), text_color=cPipText, bgcolor=cPipBox, text_size=wickSize)
Howard Intraday Edge (JH Edge) - (VWAP + EMA9/EMA21 + RSI)Howard Intraday Edge (JH Edge)
A disciplined intraday trading system by J. Howard.
Uses VWAP, EMA 9/21, RSI, and Optional EMA 200 to confirm trends and momentum.
Automatically plots Clean stop-loss and take profit levels. Built for SPY 0DTE-5DTE options, but works on other liquid tickers.
Focus: 1-3 high probability trades/day with tight risk control.
Best used on 1 or 3 minute timeframes.
Daily Markers (adjustable)Draws daily vertical markers to visually indicate the beginning of a new day. These can be easily offset for your time zone, or e.g. for the beginning of your trading day.
Gamma Exposure Levels by OMG (Oh My Gamma)OMG (Oh My Gamma) - Daily GEX Levels
An operational framework for Gamma analysis with daily data.
Indicator's Purpose & Demo Data
This indicator plots key strategic levels derived from Gamma Exposure (GEX) analysis. It showcases the operational logic of OhMyGamma analytical engine.
IMPORTANT: The levels plotted by this public script are based on a past date's snapshot for demonstration purposes. They are not valid for live trading and will not update automatically.
The real edge comes from using the fresh data structure provided daily.
How to Read the Levels
This indicator is designed to provide actionable intelligence, not just data. Here's how to read it:
The Levels: Each line represents a key strategic zone (Zero Gamma, Call/Put Walls, etc.) where a market reaction is statistically probable due to dealer hedging flows.
Line Thickness = Strategic Importance: The thickness of each line directly corresponds to its strategic rating. Thicker, solid lines represent higher-conviction zones.
Labels & Tooltips: Hover over a level's label on your chart to see its full description, confluences, and strategic rating.
Pro Tip: The Power of Confluence
This indicator is not a standalone "system". It's an institutional-grade intelligence layer. Its predictive power increases exponentially when used to find confluence with your own analysis.
The highest-probability trades occur when a key Gamma level aligns with:
Price Action: Key support/resistance zones, order blocks, or liquidity pools.
Volumetric Indicators: High/Low Volume Nodes (HVN/LVN) from Volume Profile, VWAP, and Anchored VWAP.
Use these levels to confirm your setups and gain the conviction to act.
How to Get the Daily Updated Script
This indicator requires a new Pine Script code each day to load the current session's data.
To get the daily updated code feel free to visit www.ohmygamma.com
Feedback & Suggestions
This tool is built for the community. Suggestions for improvements and new features are highly welcome and help the project evolve. Feel free to get in touch via the contact form on the website.
Disclaimer: This tool is for informational and educational purposes only. Trading involves significant risk. The authors assume no responsibility for any trading decisions.
Gold NY Session Key TimesJust showing to us that news come out, open market, close bond for NY Session Time For Indonesia
Lakshman Rekha Level IndicatorThis script gives the upper and lower limit, calculated by adding and subtracting the daily range from the close point
Hedge Pressure Index (HPI)Hedge Pressure Index (HPI)
Overview
The Hedge Pressure Index (HPI) is a flow-aware indicator that fuses daily options Open Interest (OI) with intraday put/call volume to estimate the directional hedging pressure of market makers and dealers. It helps traders visualize whether options flow is creating mechanical buy/sell pressure in IWM, and when that pressure may be shifting.
What HPI Shows
Daily OI Baseline (white line): Net OI carried forward intraday (Put OI − λ × Call OI). Updated once daily before the open.
Intraday Flow (teal line): Net put minus λ × call volume in real time. Smoothed to show underlying flow.
Spread Histogram (gray): Divergence between intraday flow and daily OI.
HPI Proxy Histogram (blue): Intraday hedge-pressure intensity. Strong extremes indicate heavy one-sided dealer hedging.
Trading Signals
Crossover:
When intraday Volume line crosses above OI, it suggests bullish hedge pressure.
When Volume line crosses below OI, it suggests bearish hedge pressure.
Z-Score Extremes:
HPI ≥ +1.5 → strong mechanical bid.
HPI ≤ −1.5 → strong mechanical offer.
Alerts: Built in for both crossovers and extreme readings.
How to Use HPI
1. Confirmation Tool (recommended for most traders):
Trade your usual price/technical setups.
Use HPI as a confirmation: only take trades that align with the hedge pressure direction.
2. Flow Bias (advanced):
Use HPI direction intraday as a standalone bias.
Fade signals when the histogram mean-reverts or crosses zero.
Best practice: Focus on the open and first 2 hours where hedging flows are most active. Combine with ATR/time-based stops.
Inputs
Demo Mode: If no OI/volume feed is set, the script uses chart volume for layout.
λ (Call Weight): Adjusts how much call volume offsets put volume (default = 1.0).
Smoothing Length: Smooths intraday flow line.
Z-Score Lookback: Sets lookback window for HPI extremes.
Custom Symbols:
Daily Net OI (pre-open OI difference).
Intraday Put Volume.
Intraday Call Volume.
Setup Instructions
Add the indicator to an IWM chart.
In Inputs, either keep Demo Mode ON (for layout) or enter your vendor’s Daily Net OI / Put Volume / Call Volume symbols.
Set alerts for crossovers and strong HPI readings to catch flow shifts in real time.
Optionally tune λ and smoothing to match your feed’s scale.
Notes
This is a proxy for dealer hedge pressure. For highest accuracy, replace the proxy histogram with gamma-weighted flow by strike/DTE when your data feed supports it.
Demo mode is for visualization only; live use requires a valid OI and volume feed.
Disclaimer
This script is for educational and research purposes only. It is not financial advice. Options and derivatives carry significant risk. Always test in a demo environment before using live capital.
Iron Condor Pro v6 – Full EngineIronCondor Engine v6.6 is a multi-mode options strategy tool for planning and managing iron condors, straddles, strangles, and butterflies. It supports both setup planning and live trade tracking with modeled delta, risk-based strike selection, IV rank estimation, and visual breach alerts.
Use Setup Mode to preview strike structures based on IV proxy, ATR, delta targeting, and risk tier (High/Mid/Low/Delta). Use Live Mode to track real trades, enter strike/premium data, and monitor live P&L, delta drift, and range status.
This script does not connect to live option chains. Volatility and delta are modeled using price history. All strikes and premiums must be confirmed using your broker before placing trades. Best used with strong support/resistance levels and high IV rank (30%+).
For educational purposes only.
Workflow Guide
Use this flow whether you're setting up on Sunday night or any day before placing a trade.
Step 0: Pre-Script Preparation
Before using the script:
Identify major support and resistance zones on your chart. Define the expected range or consolidation area. Use this context to help evaluate strike placement
1. Setup Phase (Pre-Trade Planning)
Step 1 – Load the Script
Add: IronCondor Engine v6.6 – Full Risk/Decay Edition to your chart
Step 2 – Set Mode = Setup
This enables planning mode, where the engine calculates strike combinations based on:
Your selected risk profile (High, Mid, Low, or Delta)
Historical volatility (20-day log return)
ATR (Average True Range)
Target short delta (adjustable)
Step 3 – Review Setup Table
Enable Show Setup Table to view calculated strikes and width by risk tier.
Adjust any of the following as needed:
Target Short Delta
Strike Interval ($)
Width multipliers (High/Mid/Low)
Risk tier under Auto-Feed Choice
Step 4 – Evaluate the Setup
Is the net credit at least 1.5–2.0x your max risk?
Are the short strikes clearly outside support/resistance zones?
Are the short deltas between 0.15 and 0.30?
Is the range wide enough to handle normal price movement?
Step 5 – Prep for Execution
Enable Auto-Feed Setup → Live to carry Setup strikes into Live mode
Or disable it if you prefer to manually enter strikes later
2. Trade Execution (Live Tracking Mode)
Step 1 – Place the Trade with Your Broker
Use your brokerage (TOS, Tasty, IBKR, etc.) to place the iron condor or other structure
Step 2 – Set Mode = Live
In Live mode:
If Auto-Feed is ON, the Setup strikes auto-populate
If Auto-Feed is OFF, manually enter:
Short and long strikes (Call and Put)
Premiums collected/paid per leg
Total net credit (Entry Credit)
Optional: Input current mid prices for each leg in the "Live Chain" section to track live mark-to-market P&L
Once all required fields are valid, the script activates:
Real-time profit/loss tracking
Max risk estimate
Delta monitoring on short legs
IV Rank estimate
Breach detection system
Chart visuals (if enabled)
3. Trade Management (During the Week)
While the trade is active, use the dashboard and visuals to monitor:
Key Metrics:
Unrealized P/L %
Mark-to-market value vs entry credit
Daily decay (theta)
Days until expiration
Breach status:
In Range
Near Breach
Breached
Alerts:
Price near short strike → suggests roll
Price breaches long strike → breach alert
50% or 75% profit → optional exit signal
Delta exceeds threshold → exposure may need adjustment
Management Tips:
At 50–75% profit: consider closing early
If price nears a short leg: roll, hedge, or manage
If nearing expiry: decide whether to hold or close
If IV collapses: may accelerate time decay or reduce exit value
4. End-of-Week or Expiration Management
If Profit Target Hit
Close early to reduce risk and lock gains
If Still Open Near Expiry
Close the position or
Hold through expiration only if you're fully prepared for pinning/gamma/assignment scenarios
Avoid holding open spreads over the weekend unless part of a defined strategy
Reference Notes
Strike Width
Defined as:
Width = Distance between Short and Long strike
Used for calculating max loss and breach visuals
Delta Guidelines
0.15–0.20 = safer, wider range, lower credit
0.25–0.30 = more aggressive, tighter range, higher credit
Use Target Short Delta input to adjust auto-selected strikes accordingly
Credit Example
Sell Call: $1.04
Sell Put: $0.23
Buy Call + Put wings: $0.14
Net Credit = $1.13 = $113 per contract (max profit)
This is the max profit if price stays between short strikes through expiration
IV Rank (Estimated)
This script does not use options chain IV data.
Instead, it calculates a volatility proxy:
ivRaw = ta.stdev(log returns, 20) * sqrt(252)
IV Rank is then calculated as the percentile of this value within the last 252 bars.
High IV Rank (30%–100%) → better premium-selling conditions
Low IV Rank (<30%) → lower edge for condors
Ideal to sell premium when IV Rank is above 30–50%
Disclosures and Limitations
This script is for educational use only
It does not connect to live option chains
All strikes, deltas, and premiums must be validated through your broker
Always confirm real-time IV, delta, and pricing before placing a trade
Pro Momentum Table + Trade Alerts📊 Indicator Name: Pro Momentum Table – ADX + DI + ATR + Astro Timing
🧠 Concept:
This indicator is designed for professional scalpers and intraday traders who want to capture only strong momentum waves — not noise. It combines trend strength, volatility, directional movement, momentum oscillation, vega divergence, and astrological timing into a single compact table on your chart.
⚙️ Components Explained:
Metric Description
ADX (Average Directional Index) Measures the strength of the trend. Values above 20 indicate that a meaningful move is starting.
+DI / -DI (Directional Indicators) Show whether buyers (+DI) or sellers (-DI) are dominating. Increasing +DI with ADX rising = bullish momentum. Increasing -DI with ADX rising = bearish momentum.
ATR (Average True Range) Shows volatility and expected range. Used for setting realistic stop-loss and multi-level targets (1×, 1.5×, 2×, 2.5× ATR).
Price Displays the current price level for quick reference.
CMO (Chande Momentum Oscillator) Measures short-term momentum direction and strength. Helps identify overbought/oversold conditions in trend continuation.
Vega Divergence Shows a synthetic reading of volatility pressure — "Bullish" when volatility expansion supports upward moves, "Bearish" for downward pressure, and "Neutral" otherwise.
Astro Remark Suggests ideal time windows based on planetary cycles for scalping entries. “Bullish Window” often aligns with high-probability long trades; “Bearish Window” favors shorts.
Trade Signal The core momentum condition: “Bullish Momentum” if ADX > 20 and +DI rising, “Bearish Momentum” if ADX > 20 and -DI rising, else “No Clear Momentum.”
📈 How to Use:
Wait for ADX > 20 – This confirms that the market is entering a strong momentum phase.
Check DI direction:
✅ +DI rising: Buyers gaining strength → look for long setups.
✅ -DI rising: Sellers gaining strength → look for short setups.
Use ATR to plan exits:
🎯 TP1 = Entry ± 1 × ATR
🎯 TP2 = Entry ± 1.5 × ATR
🎯 TP3 = Entry ± 2 × ATR
🎯 TP4 = Entry ± 2.5 × ATR
CMO & Vega Divergence: Confirm momentum direction and volatility expansion before committing.
Astro Remark: Align your scalping activity with the planetary support window for higher probability trades.
🪙 Pro Tips for Scalpers:
Only trade when ADX > 20 and DI is consistently rising. Ignore signals in choppy or sideways phases.
Avoid trades if Vega is neutral and CMO is flat – these usually indicate fake breakouts.
If targets aren’t hit within expected ATR-based time, treat the move as false and exit early.
Combine with 9 EMA and 20 EMA (hidden) for wave structure confirmation without cluttering the chart.
💡 Summary:
This indicator acts as a real-time trade decision dashboard. It removes clutter from the chart and delivers everything a professional scalper needs — strength, direction, volatility, momentum, timing, and actionable trade bias — all in one elegant table.
TW All in OneIts a overlap strategy, giving signals for buy and sell.
Mostly suitable for Bank Nifty. Nifty and crude oil
Adjustable Day MarkersPlaces vertical dashed lines for each new day at midnight in light grey, so you have a visual reference on the chart rather than having to look at the time at the bottom.
To adjust it to your time zone: go to settings , then give a - or + value for " Timezone Offset ".
I'm at GMT+2, so I set it to 2 .
If you rather have the line appear at the beginning of your trading day, then that's also possible. Say I start every day at 8 AM, I would have to set it to +10 (since I'm currently GMT +2).
Tristan's Star: 15m Shooting Star DetectorThis script is designed to be used on the 1-minute chart , but it analyzes the market as if you were watching the 15-minute candles.
Every cluster of 15 one-minute candles is grouped together and treated as a single 15-minute candle.
When that 15-minute “synthetic” candle looks like a shooting star pattern (small body near the low, long upper wick, short lower wick, bearish bias), the script triggers a signal.
At the close of that 15-minute cluster, the script will:
Plot a single “Sell” label on the last 1-minute bar of the group.
Draw a horizontal line across the 15 bars at the high, showing the level that created the shooting star.
Optionally display a table cell in the corner with the word “SELL.”
This lets you stay on the 1-minute timeframe for precision entries and exits, while still being alerted when the higher-timeframe (15-minute) shows a bearish reversal pattern.
J. YOUNG INDICATOR (2)QUICK REFERENCE to help with a PRICE FOR OPTIONS and or B/H entry MEDIAN PRICE of the MONTHLY/QUARTERLY aVWAPS to get a more accurate price point
Trend + Squeeze High VolatilityGood for High Volatility Stocks and Options
Trend and Squeeze High Volatility
Good For High Volatility Stocks and Options
Dynamic Gamma Inspired IndicatorDynamic Gamma Inspired Indicator
This indicator identifies potential market regime shifts between low-volatility (mean-reverting) and high-volatility (trending) environments by using a dynamic, volatility-adaptive framework inspired by options market gamma exposure concepts.
Core Concepts
This indicator uses a volatility-based model that mimics how market maker hedging can influence price stability and volatility. While it's not possible to calculate true Gamma Exposure (GEX) in Pine Script without external options data, this script uses the Average True Range (ATR) as a proxy to create dynamic zones that adapt to current market conditions.
Positive Gamma Environment (Green Background) When price is contained within the upper and lower walls, it suggests a period of stability where market makers' hedging may suppress volatility. In this "mean-reversion" regime, prices tend to revert to the central pivot.
Negative Gamma Environment (Orange Background) When price breaks outside the walls, it signals a potential increase in volatility, where hedging can amplify price moves. This "trend-amplification" regime suggests the potential for strong breakout or trend-following moves.
How It Works
The indicator is built on three key components that dynamically adjust to market volatility:
Dynamic Pivot (Blue Line) An Exponential Moving Average (EMA) acts as the central "zero gamma" pivot point.
Dynamic Walls (Red & Green Lines) These upper and lower bands are calculated by adding or subtracting a multiple of the Average True Range (ATR) from the central EMA pivot. This is similar to how Keltner Channels use ATR to create volatility-based envelopes. The walls expand during high volatility and contract during low volatility.
How to Use This Indicator
The indicator automatically plots signals based on the current market regime:
Mean-Reversion Signals (Inside the Walls)
Long Reversion: Appears when the price crosses up through the central pivot, suggesting a potential move toward the upper wall.
Short Reversion: Appears when the price crosses down through the central pivot, suggesting a potential move toward the lower wall.
Breakout Signals (Outside the Walls)
Long Breakout: Appears when the price breaks and closes above the upper wall, signaling the start of a potential uptrend.
Short Breakout: Appears when the price breaks and closes below the lower wall, signaling the start of a potential downtrend.
Customization
You can tailor the indicator to different assets and timeframes by adjusting the following inputs:
Central Pivot EMA Length: Determines the period for the central moving average.
ATR Length for Walls: Sets the lookback period for the Average True Range calculation.
ATR Multiplier for Walls: Adjusts the width of the channel. A larger multiplier creates wider walls, filtering out more noise but providing fewer signals.
Disclaimer: This indicator is a tool for analysis and should not be used as a standalone trading signal. Always use proper risk management and combine it with other analysis methods. Past performance is not indicative of future results.
Implied Volatility RangeThe Implied Volatility Range is a forward-looking tool that transforms option market data into probability ranges for future prices. Based on the lognormal distribution of asset prices assumed in modern option pricing models, it converts the implied volatility curve into a volatility cone with dynamic labels that show the market’s expectations for the price distribution at a specific point in time. At the selected future date, it displays projected price levels and their percentage change from today’s close across 1, 2, and 3 standard deviation (σ) ranges:
1σ range = ~68.2% probability the price will remain within this range.
2σ range = ~95.4% probability the price will remain within this range.
3σ range = ~99.7% probability the price will remain within this range.
What makes this indicator especially useful is its ability to incorporate implied volatility skew. When only ATM IV (%) is entered, the indicator displays the standard Black–Scholes lognormal distribution. By adding High IV (%) and Low IV (%) values tied to strikes above and below the current price, the indicator interpolates between these inputs to approximate the implied volatility skew. This adjustment produces a market-implied probability distribution that indicates whether the option market is leaning bullish or bearish, based on the data entered in the menu:
ATM IV (%) = Implied volatility at the current spot price (at-the-money).
High IV (%) = Implied volatility at a strike above the current spot price.
High Strike = Strike price corresponding to the High IV input (OTM call).
Low IV (%) = Implied volatility at a strike below the current spot price.
Low Strike = Strike price corresponding to the Low IV input (OTM put).
Expiration (Day, Month, Year) = Option expiration date for the projection.
Once these inputs are entered, the indicator calculates implied probability ranges and, if both High IV and Low IV values are provided, adjusts for skew to approximate the option market’s distribution. If no implied volatility data is supplied, the indicator defaults to a lognormal distribution based on historical volatility, using past realized volatility over the same forward horizon. This keeps the tool functional even without implied volatility inputs, though in that case the output represents only an approximation of ATM IV, not the actual market view.
In summary, the Implied Volatility Range is a powerful tool that translates implied volatility inputs into a clear and practical estimate of the market’s expectations for future prices. It allows traders to visualize the probability of price ranges while also highlighting directional bias, a dimension often difficult to interpret from traditional implied volatility charts. It should be emphasized, however, that this tool reflects only the market’s expectations at a specific point in time, which may change as new information and trading activity reshape implied volatility.
ATM & ITM Strike Table (NIFTY & BANKNIFTY)This script is like a cheat sheet for option traders.
When you put it on your chart, it shows you a small table with:
The current spot price (the real market price).
The futures price (another version of the same index that sometimes trades a bit higher or lower).
The ATM strike (the strike price closest to the market price).
Which call option and put option are “in the money” and most relevant right now.
A little note to remind you if you’re looking at the right chart.
In short:
It saves you from doing mental math every time by automatically pointing out the key option strike prices you should be aware of.
Multi Straddle-Strangle ChartThis powerful indicator is designed for options traders who want to visualize and track the combined premium of multiple straddle and strangle strategies in a single, dedicated pane.
Quickly analyze and compare up to five different options strategies at a glance, directly on your chart. This tool is perfect for monitoring volatility, tracking potential profits/losses on a position, and spotting key support and resistance levels based on option premiums.
Key Features:
Plot Up to 5 Strategies: Simultaneously plot any combination of up to 5 straddles or strangles.
Real-Time Data: Fetches live data for both Call and Put options to give you an up-to-the-second view of the combined price.
Dynamic Symbol Generation: Automatically detects the underlying symbol (e.g., NIFTY, BANKNIFTY, stocks) and builds the correct option symbols based on your input.
Customizable Inputs: Easily configure the expiry date, strike prices and line colors for each of the 5 lines.
In-Chart Summary Table: A clean and clear table in the corner of your chart provides a quick summary of each enabled strategy and its current price.
Important Note on Usage:
This tool requires you to input a strike price in all fields, even if you do not plan to use all five lines. This is necessary because of a fundamental rule in the Pine Script language: every input must have a constant, non-empty default value. The indicator is optimized to only fetch data for the lines you have explicitly enabled with the "Enable Line X" checkbox.
GusteriTBL
time based liq
am salvat o copie de la OGDubsky, pentru a putea lucra ulterior pe aceasta
Tristan's Box: Pre-Market Range Breakout + RetestMarket Context:
This is designed for U.S. stocks, focusing on pre-market price action (4:00–9:30 AM ET) to identify key support/resistance levels before the regular session opens.
Built for 1 min and 5 min timelines, and is intended for day trading / scalping.
Core Idea:
Pre-market range (high/low) often acts as a magnet for price during regular hours.
The first breakout outside this range signals potential strong momentum in that direction.
Retest of the breakout level confirms whether the breakout is valid, avoiding false moves.
Step-by-Step Logic:
Pre-Market Range Identification:
Track high and low from 4:00–9:30 AM ET.
Draw a box spanning this range for visual reference and calculation.
Breakout Detection:
When the first candle closes above the pre-market high → long breakout.
When the first candle closes below the pre-market low → short breakout.
The first breakout candle is highlighted with a “YOLO” label for visual confirmation.
Retest Confirmation:
Identify the first candle whose wick touches the pre-market box (high touches top for short, low touches bottom for long).
Wait for the next candle: if it closes outside the box, it confirms the breakout.
Entry Execution:
Long entry: on the confirming candle after a wick-touch above the pre-market high.
Short entry: on the confirming candle after a wick-touch below the pre-market low.
Only the first valid entry per direction per day is taken.
Visuals & Alerts:
Box represents pre-market high/low.
Top/bottom box border lines show the pre-market high / low levels cleanly.
BUY/SELL markers are pinned to the confirming candle.
Added a "YOLO" marker on breakout candle.
Alert conditions trigger when a breakout is confirmed by the retest.
Strategy Type:
Momentum breakout strategy with confirmation retest.
Combines pre-market structure and risk-managed entries.
Designed to filter false breakouts by requiring confirmation on the candle after the wick-touch.
In short, it’s a pre-market breakout momentum strategy: it uses the pre-market high/low as reference, waits for a breakout, and then enters only after a confirmation retest, reducing the chance of entering on a false spike.
Always use good risk management.
5 EMA Close/Open Cross StrategyLong Entry - 5 EMA Close crossing above 5 EMA open
exit - 5 EMA Close crossing below 5 EMA open
Short entry - 5 EMA Close crossing below 5 EMA open
exit - 5 EMA Close crossing above 5 EMA open
Ajay Nayak - EMA ATR Trailinge strategy RSI aur RSI ke SMA ke crossover par CALL aur PUT signal generate karti hai.
Saath me ATR based stoploss aur crossover target bhi diya gaya hai.
Algo trading ke liye useful hai.