Straddle & Strangle Strategy + CPR & VWAPStraddle & Strangle Strategy + CPR & VWAP
This script provides a comprehensive Straddle & Strangle Strategy with key technical levels, making it a powerful tool for options traders and intraday traders.
Key Features:
✅ Straddle & Strangle Levels – Dynamically plots ATM strike price along with configurable strangle levels.
✅ CPR (Central Pivot Range) – Daily pivot, BC, TC, support, and resistance levels are plotted separately for each day.
✅ Previous Day High/Low – Plots the previous day’s high and low for reference.
✅ VWAP & EMAs (20, 50, 200) – Helps traders identify trend direction and key moving averages.
✅ Buy & Sell Signals – Based on VWAP & EMA crossovers.
✅ Candle Coloring – Automatically changes candle colors based on trend (Green for bullish, Red for bearish).
This indicator is useful for intraday traders, options traders, and scalpers looking for precise entry and exit points.
📌 Customizable Inputs: Strike price, strangle distance, CPR enable/disable, EMA settings, and more.
Try it out and optimize your trading strategy! 🚀
#Straddle #Strangle #CPR #VWAP #OptionsTrading #Intraday #TradingView
Candlestick analysis
Multi-EMA Combination with Multi-Timeframe EMA By BCB ElevateBenefits and Features of the Multi-EMA Combination Indicator with Multi-Timeframe EMA:
Key Features:
Multiple EMA Support:
Tracks up to six EMAs simultaneously, each with customizable lengths and colors.
Allows traders to observe various short-term and long-term trends in the market.
Multi-Timeframe EMA (MTF EMA):
Incorporates a higher timeframe EMA directly into the current chart.
Useful for aligning intraday trading strategies with broader market trends.
Provides customizable settings, including the EMA length and timeframe.
Combined Alerts:
Automated alerts for key crossover and crossunder events.
Alerts include:
EMA 1 crossing EMA 2 (shorter-term signals).
EMA 1 crossing EMA 2 and EMA 3 together (stronger confirmation signals).
Can enable or disable buy and sell alerts separately.
Customizability:
Users can set EMA lengths, colors, and other preferences directly from the settings menu.
The multi-timeframe EMA can be toggled on/off for flexibility.
User-Friendly Visuals:
Clearly plots EMAs with different colors and line widths to distinguish trends.
The multi-timeframe EMA uses a unique style for better visibility.
MTF Round Level Reversal [RunRox]🧲 MTF Round Level Reversal is an indicator designed to highlight price levels on the chart where the market encountered significant resistance or support at round numbers, failing to break through large clusters of orders.
In many cases, price revisits these round-number levels to absorb the remaining liquidity, offering potential reversal or continuation trade opportunities.
✏️ EXAMPLE
Here’s an example demonstrating how this indicator works and how its logic is structured:
As shown in the screenshot above, price encountered resistance at round-number levels, clearly reacting off these areas.
Afterward, the market pulled back, presenting opportunities to enter trades targeting these previously established open levels.
This logic is based on the observation that price often seeks to revisit these open round-number levels due to the residual liquidity resting there.
While effective across various markets, this indicator performs particularly well with stocks or assets priced at higher values.
For a level to appear on the chart, price must first encounter a round-number value and clearly reverse from it, leaving a visible reaction on the chart. After this occurs, the indicator will mark this level as fully formed and display it as an active reversal area.
⚙️ SETTINGS
🔷 Timeframe – Choose any timeframe from which you’d like the indicator to source level data.
🔷 Period – Defines the number of candles required on both sides (left and right) to confirm and fully form a level.
🔷 Rounding Level – Adjusts price rounding precision when detecting levels (from 0.0001 up to 5000).
🔷 Color – Customize the color and transparency of displayed levels.
🔷 Line Style – Select the desired line style for level visualization.
🔷 Label Size – Set the font size for the level labels displayed on the chart.
🔷 Move Label to the Right – Move level labels to the right side of the screen for better visibility.
🔷 Label Offset – Specifies how many bars labels should be offset from the chart’s right edge.
🔷 Delete Filled Level – Automatically removes levels from the chart after they’ve been revisited or filled.
🔷 Calculation Bars – Determines the number of recent bars considered when calculating and identifying levels.
🔶 There are numerous ways to apply this indicator in your trading strategy. You can look for trades targeting these round-number levels or identify reversal setups forming at these high-liquidity zones. The key insight is understanding that these levels represent significant liquidity areas, which price frequently revisits and retests.
We greatly appreciate your feedback and suggestions to further improve and enhance this indicator!
ELVTDFinance LiquidityThe Liquidity Levels Indicator helps traders identify key price levels where significant liquidity is likely to be present. These levels act as zones of potential support and resistance, where institutional orders, stop hunts, and price reversals often occur.
Key Features:
✅ Auto-Detection of Liquidity Zone s – Identifies swing highs, swing lows, and consolidation areas where liquidity pools exist.
✅ Dynamic Support & Resistance – Highlights areas where price is likely to react due to high order flow concentration.
✅ Stop Hunt Detection – Spots potential liquidity grabs where smart money targets stop-loss orders.
✅ Works on Any Timeframe – Suitable for scalping, day trading, and swing trading.
This indicator is perfect for traders looking to align their entries with institutional moves and improve their trade execution by anticipating liquidity-based price reactions.
Zona Momentum Strategysilakan dipakai sepuasnya untuk hasil maksimal. jadikan momentum buy dan sell dengan baik dan jangan bingung
My Buy Signal Strategy"My Buy Signal Strategy", teknik analiz göstergeleri ve mum formasyonlarını birleştirerek piyasada alım fırsatlarını tespit etmeyi amaçlayan esnek ve özelleştirilebilir bir stratejidir. 9 koşuluyla, kullanıcıların ihtiyaçlarına göre uyarlanabilir ve TradingView üzerinde kolayca test edilebilir. Strateji, hem trend takip hem de dönüş sinyallerini yakalamak için dengeli bir yaklaşım sunar.
OBV Reversal//@version=6
indicator('OBV Divergence Indicator On Balance Vol Reversal', shorttitle = 'TFlab OBV Divergence', overlay = true, max_bars_back = 5000, max_labels_count = 500, max_lines_count = 500)
// User Inputs
n = input.int(title = 'Fractal Periods', defval = 4, minval = 2, group = 'Logic Setting')
emaLength = input.int(50, title = 'EMA Length', minval = 1, group = 'Trend Settings')
Show_Table = input.string('Yes', 'Show Table', options = , group = 'Display Setting')
Show_Label = input.string('Yes', 'Show Label', options = , group = 'Display Setting')
// Indicators
ATR = ta.atr(55)
Hist = ta.obv
EMA = ta.ema(close, emaLength)
// Trend Identification
up_trend = close > EMA
down_trend = close < EMA
// Fractal Detection (Fix: Use `not na` to check valid pivots)
UpPivot = ta.pivothigh(n, n)
DownPivot = ta.pivotlow(n, n)
upFractal = not na(UpPivot)
downFractal = not na(DownPivot)
// Bearish Divergence Calculation (Sell Signal Fix)
High_Last_Price = ta.valuewhen(upFractal, high, 0)
High_Per_Price = ta.valuewhen(upFractal, high, 1)
High_Last_Hist = ta.valuewhen(upFractal, Hist, 0)
High_Per_Hist = ta.valuewhen(upFractal, Hist, 1)
High_Last_Bar = ta.valuewhen(upFractal, bar_index, 0)
High_Per_Bar = ta.valuewhen(upFractal, bar_index, 1)
Time_Condition_Bear = High_Last_Bar + 30 > bar_index
Last_Bearish_Divergece = if Time_Condition_Bear and High_Last_Bar - High_Per_Bar < 30
High_Last_Price > High_Per_Price and High_Last_Hist < High_Per_Hist
else
false
// Bullish Divergence Calculation (Buy Signal)
Low_Last_Price = ta.valuewhen(downFractal, low, 0)
Low_Per_Price = ta.valuewhen(downFractal, low, 1)
Low_Last_Hist = ta.valuewhen(downFractal, Hist, 0)
Low_Per_Hist = ta.valuewhen(downFractal, Hist, 1)
Low_Last_Bar = ta.valuewhen(downFractal, bar_index, 0)
Low_Per_Bar = ta.valuewhen(downFractal, bar_index, 1)
Time_Condition_Bull = Low_Last_Bar + 30 > bar_index
Last_Bullish_Divergece = if Time_Condition_Bull and Low_Last_Bar - Low_Per_Bar < 30
Low_Last_Price < Low_Per_Price and Low_Last_Hist > Low_Per_Hist
else
false
// ✅ Fixed: Plot Divergence Lines & Labels
plotDivergence() =>
if Last_Bullish_Divergece
line.new(x1 = Low_Per_Bar, y1 = Low_Per_Price, x2 = Low_Last_Bar, y2 = Low_Last_Price, color = color.green, width = 2)
if Show_Label == 'Yes'
label.new(x = Low_Last_Bar, y = Low_Last_Price, text = '+RD', color = color.green, textcolor = color.white, size = size.tiny, style = label.style_label_up)
if Last_Bearish_Divergece
line.new(x1 = High_Per_Bar, y1 = High_Per_Price, x2 = High_Last_Bar, y2 = High_Last_Price, color = color.red, width = 2)
if Show_Label == 'Yes'
label.new(x = High_Last_Bar, y = High_Last_Price, text = '-RD', color = color.red, textcolor = color.white, size = size.tiny, style = label.style_label_down)
plotDivergence()
OBV Divergence Indicator [TradingFinder] On Balance Vol Reversal//@version=6
indicator('OBV Divergence Indicator On Balance Vol Reversal', shorttitle = 'TFlab OBV Divergence', overlay = true, max_bars_back = 5000, max_labels_count = 500, max_lines_count = 500)
// User Inputs
n = input.int(title = 'Fractal Periods', defval = 4, minval = 2, group = 'Logic Setting')
emaLength = input.int(50, title = 'EMA Length', minval = 1, group = 'Trend Settings')
Show_Table = input.string('Yes', 'Show Table', options = , group = 'Display Setting')
Show_Label = input.string('Yes', 'Show Label', options = , group = 'Display Setting')
// Indicators
ATR = ta.atr(55)
Hist = ta.obv
EMA = ta.ema(close, emaLength)
// Trend Identification
up_trend = close > EMA
down_trend = close < EMA
// Fractal Detection (Fix: Use `not na` to check valid pivots)
UpPivot = ta.pivothigh(n, n)
DownPivot = ta.pivotlow(n, n)
upFractal = not na(UpPivot)
downFractal = not na(DownPivot)
// Bearish Divergence Calculation (Sell Signal Fix)
High_Last_Price = ta.valuewhen(upFractal, high, 0)
High_Per_Price = ta.valuewhen(upFractal, high, 1)
High_Last_Hist = ta.valuewhen(upFractal, Hist, 0)
High_Per_Hist = ta.valuewhen(upFractal, Hist, 1)
High_Last_Bar = ta.valuewhen(upFractal, bar_index, 0)
High_Per_Bar = ta.valuewhen(upFractal, bar_index, 1)
Time_Condition_Bear = High_Last_Bar + 30 > bar_index
Last_Bearish_Divergece = if Time_Condition_Bear and High_Last_Bar - High_Per_Bar < 30
High_Last_Price > High_Per_Price and High_Last_Hist < High_Per_Hist
else
false
// Bullish Divergence Calculation (Buy Signal)
Low_Last_Price = ta.valuewhen(downFractal, low, 0)
Low_Per_Price = ta.valuewhen(downFractal, low, 1)
Low_Last_Hist = ta.valuewhen(downFractal, Hist, 0)
Low_Per_Hist = ta.valuewhen(downFractal, Hist, 1)
Low_Last_Bar = ta.valuewhen(downFractal, bar_index, 0)
Low_Per_Bar = ta.valuewhen(downFractal, bar_index, 1)
Time_Condition_Bull = Low_Last_Bar + 30 > bar_index
Last_Bullish_Divergece = if Time_Condition_Bull and Low_Last_Bar - Low_Per_Bar < 30
Low_Last_Price < Low_Per_Price and Low_Last_Hist > Low_Per_Hist
else
false
// ✅ Fixed: Plot Divergence Lines & Labels
plotDivergence() =>
if Last_Bullish_Divergece
line.new(x1 = Low_Per_Bar, y1 = Low_Per_Price, x2 = Low_Last_Bar, y2 = Low_Last_Price, color = color.green, width = 2)
if Show_Label == 'Yes'
label.new(x = Low_Last_Bar, y = Low_Last_Price, text = '+RD', color = color.green, textcolor = color.white, size = size.tiny, style = label.style_label_up)
if Last_Bearish_Divergece
line.new(x1 = High_Per_Bar, y1 = High_Per_Price, x2 = High_Last_Bar, y2 = High_Last_Price, color = color.red, width = 2)
if Show_Label == 'Yes'
label.new(x = High_Last_Bar, y = High_Last_Price, text = '-RD', color = color.red, textcolor = color.white, size = size.tiny, style = label.style_label_down)
plotDivergence()
My Buy Signal Strategy"Hugo v.1.0", teknik analiz göstergeleri ve mum formasyonlarını birleştirerek piyasada alım fırsatlarını tespit etmeyi amaçlayan esnek ve özelleştirilebilir bir stratejidir. 9 koşuluyla, kullanıcıların ihtiyaçlarına göre uyarlanabilir ve TradingView üzerinde kolayca test edilebilir. Strateji, hem trend takip hem de dönüş sinyallerini yakalamak için dengeli bir yaklaşım sunar.
9 & 15 EMA + ADX Strategy**📌 9 & 15 EMA + ADX Strategy | Trend-Following Trading System**
This script is a **highly effective trend-following strategy** that combines **Exponential Moving Averages (9 EMA & 15 EMA)** with **ADX (Average Directional Index)** to filter out weak trends and improve accuracy.
🔹 **How it Works:**
✅ A **Buy Signal** is generated when:
- The price **closes above 9 EMA** and is also above 15 EMA.
- **ADX is greater than 20**, confirming a strong trend.
✅ A **Sell Signal** is generated when:
- The price **closes below 9 EMA** and is also below 15 EMA.
- **ADX is greater than 20**, confirming bearish strength.
🎯 **Best Use Cases:**
- Works well for **Forex, Crypto, Stocks, and Indices**.
- Optimized for **Scalping, Intraday, and Swing Trading**.
- Effective on **5min, 15min, 1H, and 4H timeframes**.
📊 **Features:**
✔️ **Filters out false breakouts** using ADX confirmation.
✔️ **Backtest-ready** with TradingView's Strategy Tester.
✔️ **Fully customizable parameters** for different market conditions.
✔️ Can be used alongside **Support & Resistance levels** for better accuracy.
🚀 **Try it now and enhance your trading strategy!**
OBV Divergence Indicator [TradingFinder] On Balance Vol ReversalALSFKJGDGFJHSADGFHGDHFGhgfjhsagfjhasgdgasdgjhsagdhjasgdhjasgdgasdg
ICT Silver Bullet [Eyman_azayr]//@version=5
indicator("ICT Silver Bullet ", shorttitle='Eyman_azayr - ICT Silver Bullet', max_lines_count=500, max_boxes_count=500, max_labels_count=500, overlay=true)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
left = input.int ( 5 , '' , minval=1, maxval=20, group='Swings settings (left)')
showSB = input.bool ( true , 'Show SB session', inline='SB' , group='Silver Bullet session' )
col_SB = input.color(#b2b5be50, ' ' , inline='SB' , group='Silver Bullet session' )
choice = input.string('Super-Strict', '' , inline='fvg' , group='FVG'
, options = )
superstrict = choice == 'Super-Strict'
iTrend = choice != 'All FVG'
strict = choice == 'Strict'
stricty = superstrict or strict
cBullFVG = input.color (#4dd0e160, '' , inline='fvg' , group='FVG' )
cBearFVG = input.color (#ffc1b160, '' , inline='fvg' , group='FVG' )
extend = input.bool ( true , 'extend' , inline='fvg' , group='FVG' )
opt = input.string('previous session (similar)','', inline='TG' , group='Targets - Support/Resistance'
, options = )
prev = opt == 'previous session (any)'
cSupLine = input.color (#b22833 , '' , inline='TG' , group='Targets - Support/Resistance')
cResLine = input.color (#3e89fa , '' , inline='TG' , group='Targets - Support/Resistance')
keep = input.bool (true , 'Keep lines (only in strict mode)', group='Targets - Support/Resistance')
showT = input.bool (false, title = 'MSS ~ session' , group='Show' )
showZZ = input.bool (false, title = 'Trend' , group='Show' )
//show_minFr= input.bool (false, title = 'Minimum Trade Framework' , group='Show' )
n = bar_index
maxSize = 250
minT = syminfo.mintick
//------------------------------------------------------------------------------
//UDT's
//-----------------------------------------------------------------------------{
type piv
int b
float p
bool br
type ZZ
int d
int x
float y
line l
type FVG
box box
bool active
bool current
type actLine
line ln
bool active
type aPiv
piv GN_swingH
piv GN_swingL
float GN_mnPiv
float GN_mxPiv
line GN_targHi
line GN_targLo
piv LN_swingH
piv LN_swingL
float LN_mnPiv
float LN_mxPiv
line LN_targHi
line LN_targLo
piv AM_swingH
piv AM_swingL
float AM_mnPiv
float AM_mxPiv
line AM_targHi
line AM_targLo
piv PM_swingH
piv PM_swingL
float PM_mnPiv
float PM_mxPiv
line PM_targHi
line PM_targLo
//-----------------------------------------------------------------------------}
//Variables
//-----------------------------------------------------------------------------{
var aPiv a = aPiv.new(
GN_swingH = array.new(1, piv.new(na, na))
, GN_swingL = array.new(1, piv.new(na, na))
, GN_mnPiv = 10e6
, GN_mxPiv = 0
, GN_targHi = array.new()
, GN_targLo = array.new()
, LN_swingH = array.new(1, piv.new(na, na))
, LN_swingL = array.new(1, piv.new(na, na))
, LN_mnPiv = 10e6
, LN_mxPiv = 0
, LN_targHi = array.new()
, LN_targLo = array.new()
, AM_swingH = array.new(1, piv.new(na, na))
, AM_swingL = array.new(1, piv.new(na, na))
, AM_mnPiv = 10e6
, AM_mxPiv = 0
, AM_targHi = array.new()
, AM_targLo = array.new()
, PM_swingH = array.new(1, piv.new(na, na))
, PM_swingL = array.new(1, piv.new(na, na))
, PM_mnPiv = 10e6
, PM_mxPiv = 0
, PM_targHi = array.new()
, PM_targLo = array.new()
)
var ZZ aZZ =
ZZ.new(
array.new < int >(maxSize, 0),
array.new < int >(maxSize, 0),
array.new < float >(maxSize, na),
array.new < line >(maxSize, na)
)
var FVG bFVG_bull = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var FVG bFVG_bear = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var min = 10e6
var max = 0.
//var minTrFr = line.new(na, na, na, na, style=line.style_arrow_right, color=color.yellow )
//var maxTrFr = line.new(na, na, na, na, style=line.style_arrow_left , color=color.fuchsia)
var hilo = array.from(0, 10e6)
var aTrend= array.from(0)
var l_SB = array.new< line>()
var highs = array.new()
var lows = array.new()
var tab = table.new(position = position.top_right, columns = 1, rows = 1, bgcolor = color(na), border_width = 1)
//-----------------------------------------------------------------------------}
//General calculations
//-----------------------------------------------------------------------------{
ph = ta.pivothigh(left, 1)
pl = ta.pivotlow (left, 1)
//-----------------------------------------------------------------------------}
//Methods/Functions
//-----------------------------------------------------------------------------{
method type(string str) =>
( syminfo.type == 'stock' and str == 'stock' ) or
(syminfo.type == 'futures' and str == 'futures') or
(syminfo.type == 'index' and str == 'index' ) or
(syminfo.type == 'forex' and str == 'forex' ) or
(syminfo.type == 'crypto' and str == 'crypto' ) or
(syminfo.type == 'fund' and str == 'fund' )
method timeSess(string timezone, string session) => time(timeframe.period, session, timezone)
//Silver Bullet Periods
SB_LN_per = "Europe/Moscow".timeSess("1100-1200") // period/session ~ The London Open Silver Bullet (11 AM — 12 PM Moscow time)
SB_AM_per = "Europe/Moscow".timeSess("1800-1900") // period/session ~ The AM Session Silver Bullet (6 PM — 7 PM Moscow time)
SB_PM_per = "Europe/Moscow".timeSess("2200-2300") // period/session ~ The PM Session Silver Bullet (10 PM — 11 PM Moscow time)
is_in_SB = SB_LN_per or SB_AM_per or SB_PM_per
strSB = is_in_SB and not is_in_SB
strLN = SB_LN_per and not SB_LN_per
strAM = SB_AM_per and not SB_AM_per
strPM = SB_PM_per and not SB_PM_per
endSB = not is_in_SB and is_in_SB
endLN = not SB_LN_per and SB_LN_per
endAM = not SB_AM_per and SB_AM_per
endPM = not SB_PM_per and SB_PM_per
minimum_trade_framework =
'forex'.type () ? syminfo.mintick * 15 * 10 :
'index'.type () or
'futures'.type() ? syminfo.mintick * 40 : 0
method in_out(ZZ aZZ, int d, int x1, float y1, int x2, float y2) =>
aZZ.d.unshift(d), aZZ.x.unshift(x2), aZZ.y.unshift(y2), aZZ.d.pop(), aZZ.x.pop(), aZZ.y.pop()
if showZZ
aZZ.l.unshift(line.new(x1, y1, x2, y2, color= color.new(color.blue, 50))), aZZ.l.pop().delete()
f_setTrend() =>
//
MSS_dir = aTrend.get(0)
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
aTrend.set(0, 1)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
aTrend.set(0, -1)
f_swings(start, end, str, col, min, max) =>
//
max_bars_back(time, 1000)
var int MSS_dir = aTrend.get(0)
//
x2 = n -1
piv swingH = na
piv swingL = na
float mnPiv = na
float mxPiv = na
line targHi = na
line targLo = na
bool active = na
switch str
'GN' =>
swingH := a.GN_swingH
swingL := a.GN_swingL
mnPiv := a.GN_mnPiv
mxPiv := a.GN_mxPiv
targHi := a.GN_targHi
targLo := a.GN_targLo
active := is_in_SB
'LN' =>
swingH := a.LN_swingH
swingL := a.LN_swingL
mnPiv := a.LN_mnPiv
mxPiv := a.LN_mxPiv
targHi := a.LN_targHi
targLo := a.LN_targLo
active := SB_LN_per
'AM' =>
swingH := a.AM_swingH
swingL := a.AM_swingL
mnPiv := a.AM_mnPiv
mxPiv := a.AM_mxPiv
targHi := a.AM_targHi
targLo := a.AM_targLo
active := SB_AM_per
'PM' =>
swingH := a.PM_swingH
swingL := a.PM_swingL
mnPiv := a.PM_mnPiv
mxPiv := a.PM_mxPiv
targHi := a.PM_targHi
targLo := a.PM_targLo
active := SB_PM_per
if start
hilo.set(0, 0 )
hilo.set(1, 10e6)
if stricty ? not keep : true
while highs.size() > 0
get=highs.pop()
get.ln.delete()
while lows.size() > 0
get= lows.pop()
get.ln.delete()
while targHi.size() > 0
targHi.pop().delete()
while targLo.size() > 0
targLo.pop().delete()
while a.GN_targHi.size() > 0
a.GN_targHi.pop().delete()
while a.LN_targHi.size() > 0
a.LN_targHi.pop().delete()
while a.AM_targHi.size() > 0
a.AM_targHi.pop().delete()
while a.PM_targHi.size() > 0
a.PM_targHi.pop().delete()
while a.GN_targLo.size() > 0
a.GN_targLo.pop().delete()
while a.LN_targLo.size() > 0
a.LN_targLo.pop().delete()
while a.AM_targLo.size() > 0
a.AM_targLo.pop().delete()
while a.PM_targLo.size() > 0
a.PM_targLo.pop().delete()
if active
hilo.set(0, math.max(hilo.get(0), high))
hilo.set(1, math.min(hilo.get(1), low ))
if ph
if ph > mxPiv
mxPiv := ph
if swingH.size() > 0
for i = swingH.size() -1 to 0
get = swingH.get(i)
if ph >= get.p
swingH.remove(i)
swingH.unshift(piv.new(n -1, ph))
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(high )
//
if dir < 1 // if previous point was a pl, add, and change direction ( 1)
aZZ.in_out( 1, x1, y1, x2, y2)
else
if dir == 1 and ph > y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
if pl
if pl < mnPiv
mnPiv := pl
if swingL.size() > 0
for i = swingL.size() -1 to 0
get = swingL.get(i)
if pl <= get.p
swingL.remove(i)
swingL.unshift(piv.new(n -1, pl))
//
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(low )
//
if dir > -1 // if previous point was a ph, add, and change direction (-1)
aZZ.in_out(-1, x1, y1, x2, y2)
else
if dir == -1 and pl < y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
//
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
MSS_dir := 1
if active and showT
line.new(aZZ.x.get(iH), aZZ.y.get(iH), n, aZZ.y.get(iH), color=cResLine, width=2)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
MSS_dir := -1
if active and showT
line.new(aZZ.x.get(iL), aZZ.y.get(iL), n, aZZ.y.get(iL), color=cSupLine, width=2)
if end
sz = swingH.size()
if sz > 0
for i = 0 to sz -1
y = swingH.get(i).p
if y > (stricty ? min : hilo.get(0))
targHi.unshift(line.new(swingH.get(i).b, y, n, y, color=cResLine))
highs.unshift(actLine.new(line.new( n, y, n, y, color=cResLine), true))
sz := swingL.size()
if sz > 0
for i = 0 to sz -1
y = swingL.get(i).p
if y < (stricty ? max : hilo.get(1))
targLo.unshift(line.new(swingL.get(i).b, y, n, y, color=cSupLine))
lows.unshift(actLine.new(line.new( n, y, n, y, color=cSupLine), true))
swingH.clear()
swingL.clear()
mnPiv := 10e6
mxPiv := 0
if showZZ
if ph or pl
aZZ.l.get(0).set_color(MSS_dir == 1 ? cResLine : cSupLine)
aTrend.set(0, MSS_dir)
//-------------------------------------------}
//Execution
//-------------------------------------------}
f_setTrend()
trend = aTrend.get(0)
//Targets
targetHi = false
targetLo = false
hSz = highs.size()
if hSz > 200
highs.pop().ln.delete()
hSz := highs.size()
if hSz > 0
for i = 0 to hSz -1
get = highs.get(i)
if get.active
get.ln.set_x2(n)
if high > get.ln.get_y2()
get.active := false
targetHi := true
lSz = lows.size()
if lSz > 200
lows.pop().ln.delete()
lSz := lows.size()
if lSz > 0
for i = 0 to lSz -1
get = lows.get(i)
if get.active
get.ln.set_x2(n)
if low < get.ln.get_y2()
get.active := false
targetLo := true
if l_SB.size() > 100
l_SB.pop().delete()
// SB session vLines & 'lock' previous FVG boxes
if strSB
min := 10e6
max := 0.
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
//FVG's
if is_in_SB
trend := aTrend.get(0)
if iTrend
switch trend
//bullish
1 =>
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n-2, low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
//bearish
=>
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n-2, low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
else
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n , low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n , low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
if endSB
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
if bFVG_bull.size() > 0
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
bLeft = get. box.get_left ( )
bTop = get. box.get_top ( )
bBot = get. box.get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close < bBot
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if low < bTop and close > bBot
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace or close < bottom -> FVG invisible
if endSB
if get.active
if strict
if close < bBot // needs to be above box bottom
get.active := false
if superstrict
if close < bTop // needs to be above box top
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
min := math.min(min, bBot + minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// minTrFr.set_xy1(n -1, min - minimum_trade_framework)
// minTrFr.set_xy2(n -1, min )
if bFVG_bear.size() > 0
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
bLeft = get.box. get_left ( )
bTop = get.box. get_top ( )
bBot = get.box. get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close > bTop
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else // if close < bTop
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if high > bBot and close < bTop
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace -> FVG invisible
if endSB
if get.active
if strict
if close > bTop // needs to be below box top
get.active := false
if superstrict
if close > bBot // needs to be below box bottom
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
max := math.max(max, bTop - minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// maxTrFr.set_xy1(n -1, max )
// maxTrFr.set_xy2(n -1, max + minimum_trade_framework)
if prev
f_swings(strSB, endSB, 'GN', col_SB, min, max)
else
f_swings(strLN, endLN, 'LN', col_SB, min, max)
f_swings(strAM, endAM, 'AM', col_SB, min, max)
f_swings(strPM, endPM, 'PM', col_SB, min, max)
//-------------------------------------------}
//Plotchar/table
//-------------------------------------------}
tfs = (60 / (timeframe.in_seconds(timeframe.period) / 60)) / 2
plotchar(not na(SB_LN_per) and na(SB_LN_per ) and showSB
, title= '3-4 AM' , location=location.top, text= '3-4 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_AM_per) and na(SB_AM_per ) and showSB
, title='10-11 AM', location=location.top, text='10-11 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_PM_per) and na(SB_PM_per ) and showSB
, title= '2-3 PM' , location=location.top, text= '2-3 PM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(targetHi ? high : na, 'target high', '•', location.abovebar, color=cResLine, size=size.small)
plotchar(targetLo ? low : na, 'target low' , '•', location.belowbar, color=cSupLine, size=size.small)
if barstate.islast
if timeframe.in_seconds(timeframe.period) > 15 * 60
table.cell(tab, 0, 0, text = 'Please use a timeframe <= 15 minutes', text_color=#FF0000)
//-------------------------------------------}
High Volume & Chart Patternsit indicates high volume with 150 percent . useful at support and resistence
My script//@version=5
indicator("Session Highs and Lows", overlay=true)
// Session Time Inputs
asiaStart = timestamp(year, month, day, 0, 0)
asiaEnd = timestamp(year, month, day, 8, 0)
londonStart = timestamp(year, month, day, 8, 0)
londonEnd = timestamp(year, month, day, 13, 0)
usStart = timestamp(year, month, day, 13, 0)
usEnd = timestamp(year, month, day, 21, 0)
// Variables to store session highs and lows
var float asiaHigh = na
var float asiaLow = na
var float londonHigh = na
var float londonLow = na
var float usHigh = na
var float usLow = na
// Update session highs and lows
asiaHigh := (time >= asiaStart and time < asiaEnd) ? math.max(asiaHigh, high) : asiaHigh
asiaLow := (time >= asiaStart and time < asiaEnd) ? math.min(asiaLow, low) : asiaLow
londonHigh := (time >= londonStart and time < londonEnd) ? math.max(londonHigh, high) : londonHigh
londonLow := (time >= londonStart and time < londonEnd) ? math.min(londonLow, low) : londonLow
usHigh := (time >= usStart and time < usEnd) ? math.max(usHigh, high) : usHigh
usLow := (time >= usStart and time < usEnd) ? math.min(usLow, low) : usLow
// Plot Highs and Lows
plot(asiaHigh, color=color.blue, linewidth=2, title="Asia High")
plot(asiaLow, color=color.blue, linewidth=2, title="Asia Low")
plot(londonHigh, color=color.green, linewidth=2, title="London High")
plot(londonLow, color=color.green, linewidth=2, title="London Low")
plot(usHigh, color=color.red, linewidth=2, title="US High")
plot(usLow, color=color.red, linewidth=2, title="US Low")
Elliott Wave DetectorDưới đây là một bot Pine Script giúp nhận diện sóng Elliott cơ bản trên TradingView. Nó xác định điểm bắt đầu của sóng 1 và hiển thị các mức TP/SL dựa trên Fibonacci.
Buy/Sell StrategyStrategy Description:
This strategy combines technical analysis with short-term buy and sell signals to help you optimize profits. To enhance your results, it's essential to incorporate additional technical indicators, such as moving averages, for better profitability.
Stocks Riders S1Stock Riders S1 A Daily Time Frame Trading Indicator
Overview
The Stock Riders S1 is a powerful trading tool designed specifically for the daily time frame. It calculates key trading levels based on the **last two candles' high, low, and open**, providing traders with a structured approach to identifying **entry points, risk-reward zones, and potential reversals.
Unlike conventional indicators, **Stock Riders S1** generates its levels at the **opening of the trading day**, allowing traders to plan their trades proactively rather than reacting to market movements.
Key Features
1. PowerLane (Risk & Reward Levels)
- Defines the **risk-reward ratio** for each trade.
- Helps traders set precise **targets and stop-loss levels** based on calculated values.
- Ensures that trades are executed with a well-defined strategy.
2. CrownPoint (Target Projection)
- Projects the price movement **potential** based on the latest buy or sell signal.
- If a **buy signal** is generated, the CrownPoint estimates the level the price might reach.
- If a **sell signal** appears, it suggests the probable downside movement.
3. ShieldPoint (Reversal Signal)
- Indicates a possible reversal zone.
- If the price reaches this level, traders should be cautious, as the trend may **change direction**.
- Ideal for **managing open positions**, ensuring timely exits or reversals.
4. ColorChange (Market Reversal Probability)
- If the indicator shows a **color change**, it signals a **strong possibility** that the price might move **against the original signal**.
- Risk-reward calculations are **adjusted at this level** to account for changing market conditions.
How It Works
- The **Stock Riders S1** calculates trading levels using the **last two candles' high, low, and open**.
- These levels appear **at the market opening** and remain static for the day, ensuring clarity for traders.
- **When a trade is initiated**, traders must align their **entry, stop-loss, and target** with PowerLane.
- If the **ShieldPoint is hit**, consider **reversing the position** to capitalize on market direction shifts.
Recommended Trading Strategy
1. Trade at the Right Time
- Enter a position **only after the market opens and levels are displayed**.
- Avoid delayed entries; trade as soon as the calculated levels are met.
2. Follow the Risk-Reward Structure*
- Always use **PowerLane** to set **target and stop-loss** values.
- If the **ShieldPoint is reached**, consider **reversing your trade** instead of holding losses.
3. Daily Time Frame Focus
- This indicator is **designed exclusively for daily charts** and should not be used on lower time frames.
- After marking the levels, apply them to **stocks in your watchlist** for disciplined trading.
Why It’s Special
Pre-Market Level Calculation Unlike conventional indicators that rely on past data, **Stock Riders S1** provides actionable trading levels **at market open**, allowing traders to plan their trades in advance.
Structured Risk-Reward System The **PowerLane levels** ensure that traders always trade with a clear stop-loss and target, reducing emotional decision-making.
Predictive Market SignalCrownPoint, ShieldPoint, and ColorChange work together to highlight **trends, reversals, and high-probability moves**, giving traders a strategic edge.
Daily Time Frame Precision Unlike short-term indicators, Stock Riders S1 focuses solely on daily charts, making it ideal for positional and swing traders.
Dynamic Adaptation – The levels are recalculated **daily**, adapting to changing market conditions without lagging signals.
Important Notes
- This indicator is meant for educational purposes only and does not provide financial advice.
- **Trading involves risk**, and past performance does not guarantee future results.
- It is advisable to use **Stock Riders S1** in conjunction with other market analysis tools and proper risk management strategies.
Disclaimer
The **Stock Riders S1** indicator is based on historical market data and **mathematical calculations**. While it provides valuable insights into potential price movements, it should not be used as the sole basis for trading decisions.
- **Use at your own discretion**, keeping in mind market risks and personal trading strategies.
- This indicator is designed for **daily stock market trading only** and should not be applied to other asset classes.
- Always conduct independent research before making any trading decisions.
Final Thought
The **Stock Riders S1** is not just another trading indicator—it’s a **strategic trading tool** designed to help traders stay ahead of market movements. By leveraging its **calculated levels, risk-reward structures, and reversal signals**, traders can **approach the market with confidence and clarity**.
Use it wisely, trade with discipline, and let the market ride in your favor!
4 days ago
Release Notes
Stock Riders S1 A Daily Time Frame Trading Indicator
Overview
The Stock Riders S1 is a powerful trading tool designed specifically for the daily time frame. It calculates key trading levels based on the **last two candles' high, low, and open**, providing traders with a structured approach to identifying **entry points, risk-reward zones, and potential reversals.
Unlike conventional indicators, **Stock Riders S1** generates its levels at the **opening of the trading day**, allowing traders to plan their trades proactively rather than reacting to market movements.
Key Features
1. PowerLane (Risk & Reward Levels)
- Defines the **risk-reward ratio** for each trade.
- Helps traders set precise **targets and stop-loss levels** based on calculated values.
- Ensures that trades are executed with a well-defined strategy.
2. CrownPoint (Target Projection)
- Projects the price movement **potential** based on the latest buy or sell signal.
- If a **buy signal** is generated, the CrownPoint estimates the level the price might reach.
- If a **sell signal** appears, it suggests the probable downside movement.
3. ShieldPoint (Reversal Signal)
- Indicates a possible reversal zone.
- If the price reaches this level, traders should be cautious, as the trend may **change direction**.
- Ideal for **managing open positions**, ensuring timely exits or reversals.
4. ColorChange (Market Reversal Probability)
- If the indicator shows a **color change**, it signals a **strong possibility** that the price might move **against the original signal**.
- Risk-reward calculations are **adjusted at this level** to account for changing market conditions.
How It Works
- The **Stock Riders S1** calculates trading levels using the **last two candles' high, low, and open**.
- These levels appear **at the market opening** and remain static for the day, ensuring clarity for traders.
- **When a trade is initiated**, traders must align their **entry, stop-loss, and target** with PowerLane.
- If the **ShieldPoint is hit**, consider **reversing the position** to capitalize on market direction shifts.
Recommended Trading Strategy
1. Trade at the Right Time
- Enter a position **only after the market opens and levels are displayed**.
- Avoid delayed entries; trade as soon as the calculated levels are met.
2. Follow the Risk-Reward Structure*
- Always use **PowerLane** to set **target and stop-loss** values.
- If the **ShieldPoint is reached**, consider **reversing your trade** instead of holding losses.
3. Daily Time Frame Focus
- This indicator is **designed exclusively for daily charts** and should not be used on lower time frames.
- After marking the levels, apply them to **stocks in your watchlist** for disciplined trading.
Why It’s Special
Pre-Market Level Calculation Unlike conventional indicators that rely on past data, **Stock Riders S1** provides actionable trading levels **at market open**, allowing traders to plan their trades in advance.
Structured Risk-Reward System The **PowerLane levels** ensure that traders always trade with a clear stop-loss and target, reducing emotional decision-making.
Predictive Market SignalCrownPoint, ShieldPoint, and ColorChange work together to highlight **trends, reversals, and high-probability moves**, giving traders a strategic edge.
Daily Time Frame Precision Unlike short-term indicators, Stock Riders S1 focuses solely on daily charts, making it ideal for positional and swing traders.
Dynamic Adaptation – The levels are recalculated **daily**, adapting to changing market conditions without lagging signals.
Important Notes
- This indicator is meant for educational purposes only and does not provide financial advice.
- **Trading involves risk**, and past performance does not guarantee future results.
- It is advisable to use **Stock Riders S1** in conjunction with other market analysis tools and proper risk management strategies.
Disclaimer
The **Stock Riders S1** indicator is based on historical market data and **mathematical calculations**. While it provides valuable insights into potential price movements, it should not be used as the sole basis for trading decisions.
- **Use at your own discretion**, keeping in mind market risks and personal trading strategies.
- This indicator is designed for **daily stock market trading only** and should not be applied to other asset classes.
- Always conduct independent research before making any trading decisions.
Final Thought
The **Stock Riders S1** is not just another trading indicator—it’s a **strategic trading tool** designed to help traders stay ahead of market movements. By leveraging its **calculated levels, risk-reward structures, and reversal signals**, traders can **approach the market with confidence and clarity**.
Use it wisely, trade with discipline, and let the market ride in your favor!
Mercúrio RetrógradoWelcome to the cosmic world of Mercury Retrograde! 🌠 This indicator on TradingView is designed to mark the periods when the planet Mercury goes into retrograde, bringing with it a touch of introspection, revision, and of course, challenges in communication, technology, and travel. 🚀
Between 2025 and 2030, whenever Mercury begins its retrograde, you'll see a red background on the chart, signaling these astrological periods that could influence the market and your personal journey. 🌑
🔴 What is Mercury Retrograde? It's an astrological phenomenon that occurs when Mercury appears to move backward in the sky. This motion can create a feeling of slowdown and confusion but is also a time for reflection and reassessment.
EMA Cross Indicator with 55 EMAAn EMA Ribbon with a 55 EMA is a powerful technical indicator used to identify trends, momentum shifts, and potential trading opportunities. The EMA (Exponential Moving Average) is a weighted moving average that places more emphasis on recent price action, making it more responsive to price changes compared to a Simple Moving Average (SMA).
Key Price Levels Indicator[Tronly]Shows key price levels grid.
Inputs: step. For example, for BTC default value is 100. It means the grid will display every 100 USDT step
Sequential Price Levels[Tronly]Inputs: 101.1, 100.3, 104.5...
Draws support and resistance levels based on single string line input.
If current price above the level it is resistance.
If current price below the level it is support.
Sequential means price moving order should be as in the input string.
Support and resistance levels[Tronly]Inputs: comma separated values of support and resistance levels prices. E.g. 101.1, 102.3 ...
Draws lines with labels for support and resistance levels
MTF Channel-S&R-MAThis indicator includes:
・Two MTF Channels
・MTF Support and Resistance
・Two MTF Moving Averages
・Fibonacci Retracement within the price labels