🔥 HYBRID SCALPING Bot - เข้าง่าย ออกแม่นA tool bot that helps analyze charts accurately, focusing on profits.
Breadth Indicators
Daily EMA-21/34/50The EMAs and color coding can be changed, by default it contains 21/34/50 on Daily, The script can be edited to suit the timeframe whichever wanted
Long and Short Strategy with Multi Indicators [B1P5]Long and Short Strategy with RSI, ROC, MA Selection, Exit Visualization, and Strength Indicator
[SB TRADE ZONE]SB TRADE Jamoasiga xush kelibsiz idicatorni olish uchun telegramdan murojat qiling
username @sbgroup0712
Tram37This indicator calculates and plots a 377-day Simple Moving Average (SMA) based on the closing price, designed for long-term trend analysis. The fixed 377-day period helps smooth out short-term fluctuations, providing a clear view of the underlying trend for long-term trading or investment strategies.
Nexalgo SMC🔧 SMC (Smart Money Concepts) – Invite-Only Indicator
The SMC (Smart Money Concepts) indicator for TradingView is a tool that helps visualize price behavior based on institutional concepts and liquidity theory. It provides structural markers and volume-based zones in one script.
🧠 Key Components:
Order Blocks with Volume Metrics
Displays bullish and bearish order blocks along with volume-related information, helping to identify areas of possible accumulation or distribution.
Market Structure Analysis
BOS (Break of Structure)
CHoCH (Change of Character)
CHoCH+ (Extended CHoCH)
EQH/EQL (Equal Highs/Lows)
Imbalance Zones
Highlights price areas with visible inefficiencies between buying and selling pressure.
Premium & Discount Zones
Marks price regions considered relatively expensive (premium) or cheap (discount) based on recent swings.
Previous Highs & Lows
Plots historical key levels that may act as potential reaction zones.
Bullish/Bearish Dashboard
A dashboard summarizing the current directional bias based on structural elements.
Fixed Volume Profile
Displays a volume histogram over price to highlight high and low volume areas.
⚠️ Disclaimer:
This indicator is intended for market analysis purposes only. It does not constitute trading advice or guarantee performance. Users should evaluate all tools based on their own judgment and trading approach.
Goodwill @AnlATAbiliyormuyumThis indicator, called Goodwill, allows you to choose your own timeframe. Additionally, the EMA average has been added, and lines moving within a fixed range have been added to indicate whether we are in an uptrend or downtrend. Goodwill has essentially been transformed into an oscillator. The indicator has three main levels: -30, 0, and 30. Divergences from the white indicator line can be informative, while a cross above the blue line can indicate a possible uptrend, and a cross above the red line can indicate a possible downtrend. Furthermore, crossovers above or below the zero line can provide guidance depending on the situation. As with all tools, it's important to interpret the results. What I share is not investment advice, but is for educational purposes only and to provide a potential roadmap. Stay in peace and enjoy.
Intraday Bullish Scanner - Profit Ping📊 Intraday Bullish Scanner – Profit Ping Only
This custom-built TradingView script identifies high-probability intraday BUY signals on the 15-minute chart, confirmed by volume, momentum, and price action. It uses:
✅ EMA 7/14 crossovers
✅ Bullish candlestick patterns (Engulfing, Piercing, etc.)
✅ Volume spikes above 20-MA
✅ RSI between 55–65
✅ MACD histogram flip from red to green
✅ Cross-confirmation with the 30-minute trend
Once in a trade, it activates a dynamic trailing stop (starting at 2%, tightening to 1% as profit and volume increase). SELL signals are confirmed only with:
❌ MACD turning red
❌ Bearish RSI movement or drop below 50
❌ EMA 7 crossing below EMA 14
❌ A bearish candlestick (Engulfing or Piercing)
❌ Volume spike on a red candle
💰 When all SELL conditions align, a yellow triangle appears. BUYs are marked with a white triangle. Alerts can be connected directly to Python/webhook systems for full automation with IBKR.
MJBFX-Strategy (Futures Optimized)The MJBFX-Strategy is a complete market mapping tool designed to give traders a clear view of liquidity, session dynamics, and premium/discount levels. It loads automatically on any chart, fully optimized for futures and forex trading.
🔑 Key Features
Asian Session Range
Highlights the previous Asian session with a shaded box
Fixed until London open for precise reference
VWAP from Asian Session
Plots the VWAP of the previous Asian session
Dynamic fair value benchmark for intraday trading
Liquidity Sweeps (Optimized)
Detects sweeps of the Asian session high/low
Shown only on 30m, 1h, and 4h charts to reduce noise
Clean, minimal labels for clarity
Automatic Fibonacci Zone
Draws a shaded retracement zone (38.2%–61.8%) of the Asian range
Transparent fill makes it easy to read price action
Killzones
Highlights London (07:00–10:00) and New York (13:00–16:00) killzones
Semi-opaque shading to keep charts clean
Auto Trade Box (Risk/Reward)
On sweep confirmation, plots a 2R target box
Auto stop loss and take profit levels based on futures tick size
🎯 Why Use It?
The MJBFX-Strategy removes the need for manual drawing.It automatically maps:
Session highs and lows
Liquidity sweeps
VWAP and fib retracement zones
Key killzones
Perfect for session-based intraday trading in both futures and forex.
⚡ No manual settings required.Just load it onto your chart for an instant institutional view of the market.
Fractal Support and Resistance -shaoThe Fractal Support and Resistance indicator automatically identifies high-probability support and resistance zones based on repeated fractal touches. When a defined number of fractal highs or lows cluster around the same price zone, the indicator plots a clean horizontal level and shaded zone, helping traders visualize structurally important areas where price may react.
IVRS 5.0Unlock smarter trading decisions with IVRS 5.0, a cutting-edge indicator designed for Pine Script users. IVRS 5.0 offers enhanced insights into price action and momentum shifts, giving you early warnings of trend reversals and optimal entry/exit points. Built with the latest algorithmic techniques, this premium tool is ideal for traders seeking both reliability and innovation.
Key Features:
Sophisticated reversal detection logic for timely buy/sell signals.
Dynamic adaptability for all chart timeframes and asset classes.
Clean, customizable visualization to match your trading style.
Optimized performance, ensuring seamless integration into your workflow.
Take your chart analysis to the next level with IVRS 5.0 — elevate your trading with precision and confidence!
OI Scalp AnShkjgjkjhghjhjgjgkkjhgkkjhjkjgfdfhhgghghfhfhdfhdffhdfhffhfhdfhgfhgdgfgdhgfgfgdhgfgdhgfdhgfdfhhh
Venkat Sir RSI 38Here's a Pine Script (TradingView) code that does the following:
Uses the RSI indicator (Relative Strength Index).
Watches for RSI crossing below level 38 and then crossing above 38.
When RSI crosses above 38 (after having gone below), it plots a green triangle-up symbol above the candle that triggered the cross.
BTC Perp-Spot PremiumBTC Perp‑Spot Premium w/ EMA Cross
This indicator measures the premium or discount between BTC spot prices and perpetual futures across major exchanges. It visualizes real-time sentiment in the derivatives market and identifies potential inflection points by comparing the behavior of spot traders (real demand) and perp traders (speculative positioning).
What It Does
Calculates the premium spread
Shows the percentage difference between perp and spot prices as a color-coded histogram. Blue bars indicate perps trading above spot (aggressive longs), while red bars suggest perps below spot (risk-off or bearish positioning).
7-exchange composite data feed
Uses a robust average of six perpetual futures sources and seven spot market sources across Binance, Bybit, OKX, Coinbase, Bitfinex, Kraken, and Bitstamp for a balanced and high-fidelity view.
EMA crossover signals
Includes a customizable EMA and MA of the premium. Crossovers are visualized with subtle circle markers to signal sentiment shifts—blue for EMA crossing above, red for crossing below.
Zero baseline
A horizontal line at zero makes it easy to identify when perps flip from premium to discount territory and vice versa.
Dynamic stats table
Displays live values for the perp average, spot average, and premium % in a neatly formatted corner table.
Why It's Useful
This tool helps traders:
Monitor market sentiment and speculative aggression
Spot inefficiencies between derivatives and spot markets
Identify early reversal or continuation signals
Track potential liquidation zones or trend exhaustion
Confirm breakouts with perp/spot alignment
Whether you're trading short-term momentum or watching for mean-reverting setups, this premium analysis tool brings deeper context to BTC price action directly on your chart.
Flexi MA Heat ZonesOverview
Flexi MA Heat Zones is a powerful multi-timeframe visualization tool that helps traders easily identify trend strength, direction, and potential zones of confluence using multiple moving averages and dynamic heatmaps. The indicator plots up to three pairs of customizable moving averages, with color-coded heat zones to highlight bullish and bearish conditions at a glance.
Whether you're a trend follower, mean-reversion trader, or looking for visual confirmation zones, this indicator is designed to offer deep insights with high customizability.
⚙️ Key Features
🔄 Supports multiple MA types: Choose from EMA, SMA, WMA, VWMA to suit your strategy.
🎯 Six moving averages: Three MA pairs (MA1-MA2, MA3-MA4, MA5-MA6), each with independent lengths and colors.
🌈 Heatmap Zones: Dynamic fills between MA pairs, changing color based on bullish or bearish alignment.
👁️🗨️ Full customization: Enable/disable any MA pair and its heatmap zone from the settings.
🪞 Transparency controls: Adjust the visibility of heat zones for clarity or stylistic preference.
🎨 Color-coded for clarity: Bullish and bearish colors for each heat zone pair, fully user-configurable.
🧩 Efficient layout: Smart use of grouped inputs for easier configuration and visibility management.
📈 How to Use
Use the MA1–MA2 and MA3–MA4 zones for longer-term trend tracking and confluence analysis.
Use the faster MA5–MA6 zone for short-term micro-trend identification or scalping.
When a faster MA is above the slower one within a pair, the fill turns bullish (user-defined color).
When the faster MA is below the slower one, the fill turns bearish.
Combine with price action or other indicators for entry/exit confirmation.
🧠 Pro Tips
For trend-following strategies, consider using EMA or WMA types.
For mean-reversion or support/resistance zones, SMA and VWMA may offer better zone clarity.
Overlay with RSI, MACD, or custom entry signals for higher confidence setups.
Use different heatmap transparencies to visually separate overlapping MA zones.
TLP Swing Chart V2thanks
// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// Sửa đổi trên code gốc của © meomeo105
// © meomeo105
//@version=5
indicator('TLP Swing Chart V2', shorttitle='TLP Swing V2', overlay=true, max_lines_count=500)
//-----Input-------
customTF = input.timeframe(defval="",title = "Show Other TimeFrame")
showTLP = input.bool(false, 'Show TLP', inline = "TLP1")
colorTLP = input.color(color.aqua, '', inline = "TLP1")
showSTLP = input.bool(true, 'Show TLP Swing', inline = "Swing1")
colorSTLP = input.color(color.aqua, '', inline = "Swing1")
showLabel = input.bool(true, 'Show Label TimeFrame')
lineSTLP = input.string(title="",options= ,defval="(─)", inline = "Swing1")
lineStyleSTLP = lineSTLP == "(┈)" ? line.style_dotted : lineSTLP == "(╌)" ? line.style_dashed : line.style_solid
//IOSB
IOSB = "TLPInOutSideBarSetting"
ISB = input(true,group =IOSB, title="showISB")
colorISB = input.color(color.rgb(250, 171, 0), inline = "ISB")
OSB = input(true,group =IOSB, title="showOSB")
colorOSB = input.color(color.rgb(56, 219, 255), inline = "OSB")
ZoneColor = input(defval = color.new(color.orange, 90),group =IOSB, title = "Background Color")
BorderColor = input(defval = color.new(color.orange, 100),group =IOSB, title = "Border Color")
/////////////////
var aCZ = array.new_float(0)
float highest = high
float lowest = low
if (array.size(aCZ) > 0)
highest := array.get(aCZ, 0)
lowest := array.get(aCZ, 1)
insideBarCondtion = low >= lowest and low <= highest and high >= lowest and high <= highest
if ( insideBarCondtion == true )
array.push(aCZ, high )
array.push(aCZ, low )
if( array.size(aCZ) >= 2 and insideBarCondtion == false )
float maxCZ = array.max(aCZ)
float minCZ = array.min(aCZ)
box.new(bar_index - (array.size(aCZ) / 2) - 1, maxCZ, bar_index - 1, minCZ, bgcolor = ZoneColor, border_color = BorderColor)
array.clear(aCZ)
//////////////////////////Global//////////////////////////
var arrayLineTemp = array.new_line()
// Funtion
f_resInMinutes() =>
_resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1. / 60. :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 1440. :
timeframe.isweekly ? 10080. :
timeframe.ismonthly ? 43800. : na)
// Converts a resolution expressed in minutes into a string usable by "security()"
f_resFromMinutes(_minutes) =>
_minutes < 1 ? str.tostring(math.round(_minutes*60)) + "S" :
_minutes < 60 ? str.tostring(math.round(_minutes)) + "m" :
_minutes < 1440 ? str.tostring(math.round(_minutes/60)) + "H" :
_minutes < 10080 ? str.tostring(math.round(math.min(_minutes / 1440, 7))) + "D" :
_minutes < 43800 ? str.tostring(math.round(math.min(_minutes / 10080, 4))) + "W" :
str.tostring(math.round(math.min(_minutes / 43800, 12))) + "M"
f_tfRes(_res,_exp) =>
request.security(syminfo.tickerid,_res,_exp,lookahead=barmerge.lookahead_on)
var label labelError = label.new(bar_index, high, text = "", color = #00000000, textcolor = color.white,textalign = text.align_left)
sendError(_mmessage) =>
label.set_xy(labelError, bar_index + 3, close )
label.set_text(labelError, _mmessage)
var arrayLineChoCh = array.new_line()
var label labelTF = label.new(time, close, text = "",color = color.new(showSTLP ? colorSTLP : colorTLP,95), textcolor = showSTLP ? colorSTLP : colorTLP,xloc = xloc.bar_time, textalign = text.align_left)
//////////////////////////TLP//////////////////////////
var arrayXTLP = array.new_int(5,time)
var arrayYTLP = array.new_float(5,close)
var arrayLineTLP = array.new_line()
int drawLineTLP = 0
_high = high
_low = low
_close = close
_open = open
if(customTF != timeframe.period)
_high := f_tfRes(customTF,high)
_low := f_tfRes(customTF,low)
_close := f_tfRes(customTF,close)
_open := f_tfRes(customTF,open)
highPrev = _high
lowPrev = _low
// drawLineTLP => 2:Tiếp tục 1:Đảo chiều; // Outsidebar 2:Tiếp tục 3:Tiếp tục và Đảo chiều 4 : Đảo chiều 2 lần
drawLineTLP := 0
if(_high > highPrev and _low > lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 1
else if(_high < highPrev and _low < lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 1
else
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_high >= highPrev and _low < lowPrev or _high > highPrev and _low <= lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) < _low )
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) > _low )
if(_close < _open)
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 4
else if(array.get(arrayYTLP,0) < array.get(arrayYTLP,1))
if(_low <= array.get(arrayYTLP,0) and _high < array.get(arrayYTLP,1))
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_low <= array.get(arrayYTLP,0) and _high > array.get(arrayYTLP,1))
if(_close > _open)
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 4
else if((_high <= highPrev and _low >= lowPrev ))
highPrev := highPrev
lowPrev := lowPrev
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()) and drawLineTLP == 0)
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(array.get(arrayYTLP,0) <= high)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
else
if(array.get(arrayYTLP,0) >= low)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
if((showSTLP or showTLP) and f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineTLP == 2)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,0),array.get(arrayYTLP,0))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 1)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 3)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,1),array.get(arrayYTLP,1))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 4)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
//////////////////////////Swing TLP//////////////////////////
var arrayXSTLP = array.new_int(5,time)
var arrayYSTLP = array.new_float(5,close)
var arrayLineSTLP = array.new_line()
int drawLineSTLP = 0
int drawLineSTLP1 = 0
if(showSTLP)
if(math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) < math.min(array.get(arrayYTLP,0),array.get(arrayYTLP,1)) or math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) > math.max(array.get(arrayYTLP,0),array.get(arrayYTLP,1)))
//Khởi tạo bắt đầu
drawLineSTLP1 := 5
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
// drawLineSTLP kiểm tra điểm 1 => 13:Tiếp tục có sóng hồi // 12|19(reDraw):Tiếp tục không có sóng hồi // 14:Đảo chiều
if(array.get(arrayXTLP,0) == array.get(arrayXTLP,1))
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,2) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,1) and ((array.get(arrayYTLP,1) > array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,1) < array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP1 := 12
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,2))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,1)))
drawLineSTLP1 := 14
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,0)))
drawLineSTLP1 := 13
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 2 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,1) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,1))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
drawLineSTLP1 := 19
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP1 == 12 or drawLineSTLP1 == 19)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 14)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 13)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 15)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
// drawLineSTLP kiểm tra điểm 0 => 3:Tiếp tục có sóng hồi // 2|9(reDraw):Tiếp tục không có sóng hồi // 4:Đảo chiều
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,1) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,0) and ((array.get(arrayYTLP,0) > array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,0) < array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP := 2
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,0))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,1))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,1)))
drawLineSTLP := 4
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,0)))
drawLineSTLP := 3
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 1 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,0) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,0))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
drawLineSTLP := 9
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP == 2 or drawLineSTLP == 9)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 4)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 3)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 5)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
///////////////////////Other//////////////////////////////////
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(showSTLP)
if(showLabel and (barstate.islast or barstate.islastconfirmedhistory))
texLabel = f_resInMinutes() == f_tfRes(customTF,f_resInMinutes()) ? f_resFromMinutes(f_resInMinutes()) : f_resFromMinutes(f_tfRes(customTF,f_resInMinutes()))
label.set_xy(labelTF,array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
label.set_text(labelTF,texLabel)
label.set_style(labelTF,array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) ? label.style_label_upper_right : label.style_label_lower_right)
if(not showTLP)
arrayLineTemp := array.copy(arrayLineTLP)
for itemArray in arrayLineTemp
if(line.get_x1(itemArray) < array.get(arrayXSTLP,0))
line.delete(itemArray)
array.remove(arrayLineTLP,array.indexof(arrayLineTLP, itemArray))
//Inside Bars - Outside Bars
insideBar() => ISB and high <= high and low >= low ? 1 : 0
outsideBar() => OSB and (high > high and low < low ) ? 1 : 0
//Inside and Outside Bars
barcolor(insideBar() ? color.new(colorISB,0) : na )
barcolor(outsideBar() ? color.new(colorOSB,0) : na )
smart money conceprt toolkit🧠 Core Principles of Smart Money Concept
1. Market Structure
Higher Highs / Higher Lows in an uptrend.
Lower Highs / Lower Lows in a downtrend.
Structure shifts help identify trend reversals or continuations.
🔄 Key: Look for breaks of structure (BOS) or market structure shifts (MSS) to spot when smart money may be entering.
2. Liquidity
Smart money hunts liquidity before moving price.
Buy-side liquidity: Above recent highs (where stop-losses from short traders sit).
Sell-side liquidity: Below recent lows (stop-losses from long traders).
💧They create traps to grab these stop-losses, called liquidity grabs or stop hunts.
3. Order Blocks
An order block is the last bullish/bearish candle before a sharp move in the opposite direction.
Bullish Order Block: Last bearish candle before strong upward move.
Bearish Order Block: Last bullish candle before strong downward move.
📦 Smart money often returns to these blocks to fill unfilled orders.
4. Fair Value Gap (FVG) / Imbalance
When price moves too fast, it leaves an imbalance (or FVG) between candles.
Price often retraces to fill the gap, which smart money uses for entries.
📉 FVG = space between candle wicks that price didn’t trade through.
5. Mitigation
Smart money revisits previous zones (like OBs or FVGs) to mitigate risk or close positions.
This helps balance their books and is a common reason for retests of OB zones.
6. Liquidity Sweep / Stop Hunt
Price may fake a breakout, sweep highs/lows, then reverse.
This clears out retail stop-losses and provides entries for smart money.
💡Look for Swing Failure Patterns (SFPs) as a sign of liquidity sweep.
7. Entry Techniques
Once all confluences align:
Look for confirmations like:
BOS/MSS
Return to OB
FVG
Strong rejection wicks
Internal structure shift (on lower timeframe)
🔎 Real-World Example:
Let’s say:
Price makes lower lows and lower highs (downtrend).
Then price sweeps a previous low (liquidity grab).
Then it breaks structure upward.
Wait for price to return to bullish order block or FVG.
Enter long trade from that zone.
This is a typical Smart Money Reversal Model.
🧭 Why Use Smart Money Concept?
✅ Precise entries
✅ Follows market movers
✅ Builds logical narrative of price
✅ Works well with multi-timeframe analysis
🛑 Risk & Misuse
Mislabeling OBs or BOS
Chasing trades without waiting for confirmation
Overusing concepts without context
Believing every move is “manipulation”
AK-Like Oscillator with Auto Buy/Sell 🟢🔴//@version=5
indicator("AK-Like Oscillator with Auto Buy/Sell 🟢🔴", overlay=false)
/// === INPUTS === ///
rsiLen = input.int(14, "RSI Period")
stochLen = input.int(14, "Stochastic Period")
macdFast = input.int(12, "MACD Fast EMA")
macdSlow = input.int(26, "MACD Slow EMA")
macdSignal = input.int(9, "MACD Signal EMA")
/// === CALCULATIONS === ///
rsi = ta.rsi(close, rsiLen)
rsiNorm = (rsi - 50) * 2
k = ta.stoch(close, high, low, stochLen)
stochNorm = (k - 50) * 2
= ta.macd(close, macdFast, macdSlow, macdSignal)
macdNorm = hist * 100
composite = (rsiNorm + stochNorm + macdNorm) / 3
/// === SIGNAL CONDITIONS === ///
buySignal = ta.crossover(composite, 20) and rsiNorm > 0 and stochNorm > 0 and macdNorm > 0
sellSignal = ta.crossunder(composite, -20) and rsiNorm < 0 and stochNorm < 0 and macdNorm < 0
/// === PLOTS === ///
plot(rsiNorm, color=color.green, title="RSI Normalized", linewidth=1)
plot(stochNorm, color=color.orange, title="Stoch Normalized", linewidth=1)
plot(macdNorm, color=color.red, title="MACD Histogram Norm", linewidth=1)
plot(composite, color=color.blue, title="Composite", linewidth=2)
hline(100), hline(-100), hline(0, linestyle=hline.style_dotted)
bgcolor(composite > 80 ? color.new(color.green, 85) : composite < -80 ? color.new(color.red, 85) : na)
/// === BUY / SELL ARROWS === ///
plotshape(buySignal, title="Buy", location=location.bottom, color=color.green, style=shape.labelup, text="🟢 Buy", textcolor=color.white, size=size.small)
plotshape(sellSignal, title="Sell", location=location.top, color=color.red, style=shape.labeldown, text="🔴 Sell", textcolor=color.white, size=size.small)
XAUUSD SMC Strategy (FVG + BoS)This advanced TradingView strategy is built for serious traders who follow Smart Money Concepts (SMC), with a special focus on Fair Value Gaps (FVG) and Break of Structure (BoS). The script automates trade entries and visual signals based on clean price action, while also allowing for performance backtesting through the built-in Strategy Tester.
The purpose of this script is to combine high-probability SMC signals with a clear and flexible backtest engine. Traders can visually confirm institutional moves (like imbalances and structure breaks) while simultaneously analyzing strategy performance, risk-reward, and execution logic — all from one chart.
⚙️ Key Features
FVG Detection: Automatically identifies bullish and bearish fair value gaps, highlighting imbalance zones between institutional buying and selling activity.
Break of Structure (BoS): Clearly shows bullish and bearish structure breaks, helping traders confirm directional bias and spot trend shifts with clarity.
Trade Execution Logic: Designed with actual strategy.entry() and strategy.exit() functions, this script simulates trades using risk-controlled logic with stop loss and take profit targeting.
Spaced Signal Visualization: Avoids chart clutter by spacing FVG and BoS signals, making the visual output clean and readable — even on fast-moving charts like XAUUSD.
Risk-Reward Customization: Easily set your own risk:reward ratio and stop-loss buffer, ensuring each trade is simulated according to your personal strategy or trading plan.
Cool-Down System: Add a delay between trades using the “Bars Between Trades” setting to prevent overtrading during volatile periods.
Live and Historical Insights: Signals appear in real-time, while also being plotted historically — making it easy to scroll back and study how the market behaved under this logic.
Fully Editable Parameters: Customize FVG size, structure lookback, spacing intervals, and more to fit your unique interpretation of SMC methodology.
🧠 How It Works
This strategy combines two key concepts:
FVG (Fair Value Gaps): Price zones where the market moved too quickly and left an imbalance between buyers and sellers. These gaps often act as magnets for price or areas of reversal.
BoS (Break of Structure): Points where the price breaks through a significant high or low, indicating a potential shift in market direction.
When both FVG and BoS align under certain conditions — and the cooldown requirement is satisfied — the strategy places a trade. A take profit and stop loss are automatically applied based on your inputs.
📈 Practical Use Cases
Trend Confirmation: Use BoS signals to validate trend continuation trades, especially when FVG confirms the imbalance.
Reversal Zones: Spot potential turning points when price fills an FVG and breaks previous structure in the opposite direction.
Backtest SMC Logic: Validate your theory by testing this strategy over historical XAUUSD data using real stop loss / take profit logic.
Refine Entry Timing: Study how structure breaks and FVGs align in different timeframes to improve entry precision.
💡 Best For
Traders learning or mastering Smart Money Concepts
Price action purists who avoid indicators
XAUUSD scalpers, day traders, or swing traders
Strategy developers who want visual + backtested confirmation
📌 Notes
The default strategy places trades every 10 candles to ensure the engine runs — replace this with your refined FVG + BoS logic as needed.
Works best on Gold (XAUUSD) 4H, 1H, or 15m timeframes depending on volatility and structure spacing.
🔒 Disclaimer
This strategy is for educational purposes only. It does not constitute financial advice. Always test and validate any trading logic before applying it to a live market. Trading carries risk — use proper risk management.
BB + RSI Strategy Optimized✅ Pine Script Version 5
✅ Complete Strategy: Long + Short
✅ Automatic Entry and Exit
✅ Visual Signals: Buy/Sell, Short/Cover
✅ Trailing Take Profit
✅ Progressive
BB + RSI Strategy Optimizedbb+rsi+optimazed verry god estrategy
Complete strategy: long + short
Visual signals: buy, sell, resistance rejection, and confirmed support breakout
Automatic entry and exit of trades (long and short)
🧠 Blackbox Alpha v6 (Buy/Sell Only)Blackbox Alpha v6 Strategy – Institutional-Grade Intraday Trading
Overview:
The Blackbox Alpha v6 is a precision-engineered intraday trading strategy inspired by the world's top 0.1% traders — including philosophies from Jim Simons, Mark Minervini, Stefan Salomon, and Stanley Druckenmiller. It is designed to deliver ultra-high-probability Buy/Sell signals by using a multi-layered confirmation model that runs entirely in the background. Only confirmed signals appear on the chart – no noise, no clutter.
🔍 Core Strategy Logic
This strategy generates a Buy or Sell entry only when all of the following conditions are met:
✅ Trend Confirmation
EMA 20 > EMA 50 (bullish trend)
ADX > 20 (trend strength)
RSI confirms momentum direction
📊 Volume Validation
Volume spike above 20-period average × multiplier
Volume Climax (highest volume in last 10 candles)
Relative Volume Index (RVI) > 1.5
🎯 Price Structure + Pattern Recognition
Price near Fibonacci retracement zones (0.382 for Buy, 0.618 for Sell)
Bullish/Bearish engulfing candle pattern as trigger
🧠 Institutional Bias
Price must be above Anchored VWAP (Buy) or below (Sell)
Must be within predefined order block zones (smart money behavior)
📈 Signal Behavior
Buy Signal: Only appears when all trend, volume, price action, and institutional filters confirm.
Sell Signal: Same logic, mirrored for bearish market conditions.
Visualization: Minimalist – only Buy (green triangle) and Sell (red triangle) arrows.
🧪 Backtest Engine
Fully integrated with strategy.entry, strategy.close, stop and limit execution logic
User-configurable stop-loss and take-profit in %
Optimized for 15m, 1h, and 1D charts
🚀 Performance Philosophy
Rather than generating many signals, this strategy targets very selective, high-probability trades with asymmetric reward-to-risk opportunities — exactly like institutional traders and quant funds.
Ideal for traders seeking signal precision > signal frequency.