Log Regression Oscillator (caN)fi(ki)=>'ra'
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © fikira
//@version=6
indicator('Log Regression Oscillator', max_bars_back=5000, max_labels_count=500, max_lines_count=500, overlay=false)
________________________________________________________________________________________________________________________ ='
⎞ Settings ⎛
(__--------__) '
cGREEN = #089981, cRED = #F23645, cGRAY = #757a79
threshold = input.int (300 , minval=150)
proactive = input.bool (false )
GRE = input.color(cGREEN , 'Bull' , group='Style' )
RED = input.color(cRED , 'Bear' , group='Style' )
GRY = input.color(cGRAY , 'Unconfirmed Bull/Bear' , group='Style' )
showDsh = input.bool ( true , 'Show Dashboard' , group='Dashboard' )
dshLoc = str.replace(str.lower(input.string('Top Right', 'Location', group='Dashboard', options= )), ' ', '_')
txtSize = str.lower(input.string('Normal' , 'Size' , group='Dashboard', options= ) )
________________________________________________________________________________________________________________________ :='
⎞ Constants and general variables ⎛
(__-------------------------------__) '
INV = color(na)
n = bar_index
________________________________________________________________________________________________________________________ :='
⎞ Functions ⎛
(__---------__) '
dot(x, y)=>
if x.size() > 1 and y.size() > 1
m1 = matrix.new()
m2 = matrix.new()
m1.add_col(m1.columns(), y)
m2.add_row(m2.rows (), x)
m1.mult (m2)
.eigenvalues()
.sum()
//Closed form solution to best fit log function
log_reg(log_x, log_x2, log_y) =>
sum_log_x = log_x . sum()
sum_y = log_y . sum()
sum_log_x_y = dot(log_x ,log_y)
sum_log_x_sq = log_x2 . sum()
n_ = log_x .size()
//Closed-form solutions for a and b
a = (n_ * sum_log_x_y - sum_log_x * sum_y)
/ (n_ * sum_log_x_sq - math.pow(sum_log_x , 2))
b = ( sum_y - a * sum_log_x ) / n_
//Variables declared for draw()
var arrayarr = array.new(4, na)
proActH = false, proActL = false
var lastHi = 0., var lastLi = 0.
draw(aTop_x, aTop_x2, aTop_y, aBot_x, aBot_x2, aBot_y, top_points, prc_points, btm_points, refit) =>
var label labH = na, var label labL = na
vTop = 0.
vBtm = 0.
if refit
top_points.clear(), prc_points.clear(), btm_points.clear()
= log_reg(aTop_x, aTop_x2, aTop_y), arr.set(0, a_top), arr.set(1, b_top)
= log_reg(aBot_x, aBot_x2, aBot_y), arr.set(2, a_btm), arr.set(3, b_btm)
for i = 0 to n
top = math.exp(a_top * math.log(i) + b_top)
btm = math.exp(a_btm * math.log(i) + b_btm)
avg = math.avg(top, btm)
if i == n
vTop := top
vBtm := btm
ix = n - i
if ix < 4999
hi = high
lo = low
cl = close
getC = hi > avg ? hi : lo < avg ? lo : cl
prc_points.push(chart.point.from_index(i, 100 * math.max(-1.5, math.min(1.5, (getC - btm) / (top - btm)))))
for lab in label.all
lab.delete()
firstH = proactive ? true : false
firstL = proactive ? true : false
color colH = na, color colL = na
sz = prc_points.size()
if aTop_x.size() > 0
for i = aTop_x.size() -1 to 0
idx = int(math.exp(aTop_x.get(i)))
if idx < sz and idx > n - 5000 and idx >= 0
if firstH
if aTop_x.last() != lastHi
colH := GRY
firstH := false
else
colH := RED
else
colH := RED
top = math.exp(a_top * math.log(idx) + b_top)
btm = math.exp(a_btm * math.log(idx) + b_btm)
label.new(idx , 100 *
math.max(-1.5, math.min(1.5, (high - btm)
/ (top - btm)
) ), '●', textcolor = colH, color=INV, size=8)
if aBot_x.size() > 0
for i = aBot_x.size() -1 to 0
idx = int(math.exp(aBot_x.get(i)))
if idx < sz and idx > n - 5000 and idx >= 0
if firstL
if aBot_x.last() != lastLi
colL := GRY
firstL := false
else
colL := GRE
else
colL := GRE
top = math.exp(a_top * math.log(idx) + b_top)
btm = math.exp(a_btm * math.log(idx) + b_btm)
label.new(idx , 100 *
math.max(-1.5, math.min(1.5, (low - btm)
/ (top - btm)
) ), '●', textcolor = colL, color=INV, size=8
, style = label.style_label_up)
else
top = math.exp(arr.get(0) * math.log(n) + arr.get(1))
btm = math.exp(arr.get(2) * math.log(n) + arr.get(3))
avg = math.avg(top, btm)
vTop := top
vBtm := btm
hi = high, lo = low, cl = close
getC = hi > avg ? hi : lo < avg ? lo : cl
prc_points.push(chart.point.from_index(n, 100 * math.max(-1.5, math.min(1.5, (getC - btm) / (top - btm)))))
for poly in polyline.all
poly.delete()
if barstate.islast
labH.delete(), labH := label.new(n, 100, str.tostring(vTop, format.mintick), color=color.new(chart.fg_color, 85), textcolor=RED, style=label.style_label_lower_left, size=12)
labL.delete(), labL := label.new(n, 0, str.tostring(vBtm, format.mintick), color=color.new(chart.fg_color, 85), textcolor=GRE, style=label.style_label_upper_left, size=12)
polyline.new(prc_points.size() >= 5000 ? prc_points.slice(prc_points.size()-4999, prc_points.size()-1) : prc_points, line_color=chart.fg_color)
________________________________________________________________________________________________________________________ :='
⎞ Variables ⎛
(__---------__) '
//bool trigerring fit
refit = false
var top_points = array.new(0)
var prc_points = array.new(0)
var btm_points = array.new(0)
//Variables arrays
var peaks_y = array.new(0)
var peaks_x = array.new(0)
var peaks_x2 = array.new(0)
var btms_y = array.new(0)
var btms_x = array.new(0)
var btms_x2 = array.new(0)
var tb = table.new(dshLoc, 4, 8
, bgcolor = #1e222d
, border_color = #373a46
, border_width = 1
, frame_color = #373a46
, frame_width = 1)
________________________________________________________________________________________________________________________ :='
⎞ Exec ⎛
(__----__) '
//Top Bottom detection
max = ta.max(high)
var min = low
min := max == high ? low
: math.min(low , min)
barsmax = ta.barssince(high == max)
barsmin = ta.barssince(low == min)
if barsmax == threshold
nmax = n-barsmax
if peaks_x .size() > 0 and peaks_x.last() != lastHi
peaks_y .set(-1, math.log( max) )
peaks_x .set(-1, math.log(nmax) )
peaks_x2.set(-1, math.pow(math.log(nmax), 2))
else
peaks_y .push( math.log(max) )
peaks_x .push( math.log(nmax) )
peaks_x2.push( math.pow(math.log(nmax), 2))
lastHi := math.log(nmax)
refit := true
else
min := math.min(low , min)
if barsmin == threshold
nmin = n-barsmin
if btms_x .size() > 0 and btms_x.last() != lastLi
btms_y .set(-1, math.log(min) )
btms_x .set(-1, math.log(nmin) )
btms_x2 .set(-1, math.pow(math.log(nmin), 2))
else
btms_y .push( math.log( min) )
btms_x .push( math.log(nmin) )
btms_x2.push( math.pow(math.log(nmin), 2))
lastLi := math.log(nmin)
refit := true
chMax = ta.change(max) , chMin = ta.change(min)
if (chMax != 0 or chMin != 0) and proactive and not refit and n > threshold
= log_reg(peaks_x, peaks_x2, peaks_y)
= log_reg( btms_x, btms_x2, btms_y)
top = math.exp(a_top * math.log(n) + b_top)
btm = math.exp(a_btm * math.log(n) + b_btm)
if 100 * ((high - btm) / (top - btm)) > 90
if peaks_x.last() == lastHi
peaks_y .push(math.log(max))
peaks_x .push(math.log(n))
peaks_x2.push(math.log(n)
*math.log(n))
else
peaks_y .set(-1, math.log(max))
peaks_x .set(-1, math.log(n))
peaks_x2.set(-1, math.log(n)
* math.log(n))
arr.set(0, a_top), arr.set(1, b_top)
arr.set(2, a_btm), arr.set(3, b_btm)
refit := true
proActH := true
if 100 * ((low - btm) / (top - btm)) < 10
if btms_x.last() == lastLi
btms_y .push(math.log(min))
btms_x .push(math.log(n))
btms_x2.push(math.log(n)
*math.log(n))
else
btms_y .set(-1, math.log(min))
btms_x .set(-1, math.log(n))
btms_x2.set(-1, math.log(n)
* math.log(n))
arr.set(0, a_top), arr.set(1, b_top)
arr.set(2, a_btm), arr.set(3, b_btm)
refit := true
proActL := true
enough = peaks_x.size() > 1 and btms_x.size() > 1
if enough
draw(peaks_x, peaks_x2, peaks_y, btms_x, btms_x2, btms_y, top_points, prc_points, btm_points, refit)
else
if barstate.islast
txt = ''
if peaks_x.size() < 2
txt += str.format('{0} Top Swing', peaks_x.size())
if btms_x .size() < 2
if txt != ''
txt += ', '
txt += str.format('{0} Bottom Swing', btms_x .size())
txt += ' Change "Threshold" or timeframe for more Swings'
tb.cell(0, 0, txt, text_color=chart.fg_color, text_size=txtSize)
________________________________________________________________________________________________________________________ :='
⎞ Plot ⎛
(__----__) '
plot(n%2==0? 30 : na,'30' , color=color.new(chart.fg_color, 50), style=plot.style_linebr, display=display.pane)
plot(n%2==0? 70 : na,'70' , color=color.new(chart.fg_color, 50), style=plot.style_linebr, display=display.pane)
_100 = plot(100, 'na(100)', display=display.none)
_70 = plot( 70, 'na(70)' , display=display.none)
_60 = plot( 60, 'na(60)' , display=display.none)
_50 = plot( 50, 'na(50)' , display=display.none)
_40 = plot( 40, 'na(40)' , display=display.none)
_30 = plot( 30, 'na(30)' , display=display.none)
_00 = plot( 0, 'na(0)' , display=display.none)
fill(_100, _70, 100, 70, color.new(RED, 50), INV)
fill( _60, _50, 60, 50, INV, color.new(chart.fg_color, 85))
fill( _50, _40, 50, 40, color.new(chart.fg_color, 85), INV)
fill( _30, _00, 30, 0, INV, color.new(GRE, 75))
________________________________________________________________________________________________________________________ :='
⎞ End ⎛
(__---__) '
Indicators and strategies
Boring Candles by The School of Dalal StreetThis indicator highlights the "boring" candles. These are candles where the body is less than 50% in length as compared to the high and low length. This allows us to quickly find the lower timeframe demand/supply without switching the chart timeframe. The use case is to quickly find our targets based on lower time frames.
log regression forex and altcoin dom (caN)(0-100 Range)NO REPAİNTİNG
Stablecoin Dominance Indicator
The Stablecoin Dominance Indicator is a powerful tool designed to analyze the relative dominance of stablecoins within the cryptocurrency market. It utilizes a combination of regression analysis and standard deviation to provide valuable insights into market sentiment and potential turning points. This indicator is particularly useful for traders and investors looking to make informed decisions in the dynamic world of cryptocurrencies.
How to Read the Indicator:
The Stablecoin Dominance Indicator comprises three key lines, each serving a specific purpose:
Middle Line (Regression Line):
The middle line represents the Regression Line of stablecoin dominance, acting as a baseline showing the average or mean dominance of stablecoins in the market.
When the stablecoin dominance hovers around this middle line, it suggests a relatively stable market sentiment with no extreme overbought or oversold conditions.
Upper Line (2 Standard Deviations Above Mean):
The upper line, positioned 2 standard deviations above the Regression Line, indicates a significant deviation from the mean.
When stablecoin dominance approaches or surpasses this upper line, it may imply that the cryptocurrency market is experiencing oversold conditions, potentially signaling a market bottom. This is an opportune time for traders to consider increasing their exposure to cryptocurrencies.
Lower Line (2 Standard Deviations Below Mean):
The lower line, positioned 2 standard deviations below the Regression Line, shows a significant deviation in the opposite direction, indicating overbought conditions.
When stablecoin dominance approaches or falls below this lower line, it suggests overbought conditions in the market, possibly indicating a market top. Traders may consider reducing their cryptocurrency holdings or taking profits during this phase.
It's important to note that the Stablecoin Dominance Indicator should be used in conjunction with other analysis tools and strategies.
By understanding and applying the insights provided by this indicator, traders and investors can make more informed decisions in the ever-changing cryptocurrency landscape, potentially enhancing their trading strategies and risk management practices.
Ichimoku AdvancedGreetings. I present to you an improved version of the indicator from LuxAlgo - Ichimoku Theories.
I am grateful to them for the work they have done, since I myself have no experience in programming on Pine Script.
I have supplemented their indicator with such functions as:
Multi-timeframe Tenkan and Kijun lines - you will always know where on the lower timeframe there is a stronger resistance/support.
Ichimoku line formation areas - they can be used as a visualization of the number of bars that appear in the near lines, and for forecasting when the growth of the lines is caused by the fading of candles. They can also be used as measures for setting stop orders.
3-line pattern detector - Marker showing when the price is above/below the lines Tenkan ----> Kijun ----> Senkou A.
Please note that the calculation takes into account the CLOSING price of the candle.
3 Chikou Span lines - for those who use the 3 Chikou Span strategy -9, -26, -52 from the current bar ----> forward.
Points of the expected next direction of the Tenkan, Kijun, Senkou A and B lines and Senkou A and B with 0 offset.
Senkou A and B lines with 0 offset - for visualization of possible resistance/support
Calculation of the angle of inclination of the Ichimoku lines - for better perception of the trend strength. A 90° scale is used for measurement, where 0 is the horizontal position of the line
Measuring the distance from the current price to the Tenkan and Kijun lines - for better interpretation of the next possible price movements
Table - all key points for opening a position are displayed in the table. But please CONSIDER THE CONTENT and THE THEORY OF CYCLES AND WAVES by Goichi Hosoda.
May the take profit be with you!
Luma DCA Tracker (BTC)Luma DCA Tracker (BTC) – User Guide
Function
This indicator simulates a regular Bitcoin investment strategy (Dollar Cost Averaging). It calculates and visualizes:
Accumulated BTC amount
Average entry price
Total amount invested
Current portfolio value
Profit/loss in absolute and percentage terms
Settings
Investment per interval
Fixed amount to be invested at each interval (e.g., 100 USD)
Start date
The date when DCA simulation begins
Investment interval
Choose between:
daily, weekly, every 14 days, or monthly
Show investment data
Displays additional chart lines (total invested, value, profit, etc.)
Chart Elements
Orange line: Average DCA entry price
Grey dots: Entry points based on selected interval
Info box (bottom left): Live summary of all key values
Notes
Purchases are simulated at the closing price of each interval
No fees, slippage, or taxes are included
The indicator is a simulation only and not linked to an actual portfolio
RSI Confluence - 3 Timeframes V1.1RSI Confluence – 3 Timeframes V1.1
RSI Confluence – 3 Timeframes v1.1 is a powerful multi-timeframe momentum indicator that detects RSI alignment across three timeframes. It helps traders identify high-probability reversal or continuation zones where momentum direction is synchronized, offering more reliable entry signals.
✅ Key Features:
📊 3-Timeframe RSI Analysis: Compare RSI values from current, higher, and highest timeframes.
🔁 Customizable Timeframes: Select any combination of timeframes for precision across scalping, swing, or positional trading.
🎯 Overbought/Oversold Zones: Highlights when all RSI values align in extreme zones (e.g., <30 or >70).
🔄 Confluence Filter: Confirms trend reversals or continuations only when all RSIs agree in direction.
📈 Visual Signals: Displays visual cues (such as background color or labels) when multi-timeframe confluence is met.
⚙️ Inputs:
RSI Length: Define the calculation length for RSI.
Timeframe 1 (TF1): Lower timeframe (e.g., current chart)
Timeframe 2 (TF2): Medium timeframe (e.g., 1H or 4H)
Timeframe 3 (TF3): Higher timeframe (e.g., 1D or 1W)
OB/OS Levels: Customizable RSI overbought/oversold thresholds (default: 70/30)
Show Visuals: Toggle for background color or signal markers when confluence conditions are met
📈 Use Cases:
Identify trend continuation when all RSIs support the same direction
Spot strong reversal zones with RSI agreement across TFs
Improve entry accuracy by avoiding false signals on a single timeframe
Suitable for multi-timeframe strategy confirmation
Smart Reversal Signal (Stoch + RSI + EQH/EQL) v1.1📘 Smart Reversal Signal (Stoch + RSI + EQH/EQL)
The Smart Reversal Signal v1.1 is a multi-confirmation reversal indicator that combines momentum and price action signals across timeframes. It is designed to help traders detect high-probability reversal zones based on confluence between stochastic, RSI, and key price structures.
✅ Key Features:
📊 Stochastic Crossover: Detects K and D line crossovers to identify potential overbought/oversold reversal points.
📈 RSI Signal: Confirms momentum exhaustion by checking RSI crossing above/below overbought/oversold levels.
🏛️ EQH/EQL Detection: Identifies Equal Highs (EQH) and Equal Lows (EQL) from higher timeframes as strong reversal zones.
⏱ Multi-Timeframe Lookback: Uses selected timeframe and historical depth to improve signal quality and reduce noise.
🎯 Reversal Alerts: Highlights confluence zones where multiple conditions align for a potential trend reversal.
🌐 Custom Timeframe Support: Analyze signals using data from different timeframes, regardless of current chart.
⚙️ Inputs:
Stochastic Parameters: %K, %D length and smoothing
RSI Parameters: Length, Overbought/Oversold levels
EQH/EQL Settings: Timeframe, Lookback bars
Signal Conditions: Enable/disable RSI and Stoch filter logic
📈 Use Cases:
Catch trend reversals at exhaustion points
Identify smart entry zones near EQH/EQL levels
Combine momentum + structure for higher accuracy
Adaptable for both scalping and swing trading
Touch 30 EMA & 150 EMA - Candle Signal//@version=5
indicator("Touch 30 EMA & 150 EMA - Candle Signal", overlay=true)
// Calculate EMAs
ema30 = ta.ema(close, 30)
ema150 = ta.ema(close, 150)
// Candle types
isGreen = close > open
isRed = close < open
// Candle touches both EMAs (either open-high-low-close range includes both)
touchesBothEMAs = low <= ema30 and high >= ema30 and low <= ema150 and high >= ema150
// Signals
greenArrow = isGreen and touchesBothEMAs
redArrow = isRed and touchesBothEMAs
// Plot arrows
plotshape(greenArrow, title="Green Candle Touch", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.small)
plotshape(redArrow, title="Red Candle Touch", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.small)
// Plot EMAs for reference
plot(ema30, color=color.orange, title="EMA 30")
plot(ema150, color=color.blue, title="EMA 150")
Auto TrendlinesAuto Trendline – Indicator Description
The Auto Trendline indicator automatically draws trendlines based on recent swing highs and lows using pivot analysis. It helps traders quickly identify short-term and long-term market trends without manual drawing.
✅ Features:
Automatic drawing of trendlines based on pivot points (highs and lows)
Custom timeframe support: Use higher timeframe pivot data while working on lower charts
Trendlines update dynamically as new pivots are formed
Lines extend only to the current bar, keeping the chart clean
⚙️ How It Works:
The indicator detects recent swing highs and lows using pivot strength
Two most recent pivot points are connected to form each trendline:
Uptrend line from two higher lows
Downtrend line from two lower highs
Trendlines are redrawn as new pivots appear
Touch 30 EMA & 150 EMA - Candle Signal//@version=5
indicator("Touch 30 EMA & 150 EMA - Candle Signal", overlay=true)
// Calculate EMAs
ema30 = ta.ema(close, 30)
ema150 = ta.ema(close, 150)
// Candle types
isGreen = close > open
isRed = close < open
// Candle touches both EMAs (either open-high-low-close range includes both)
touchesBothEMAs = low <= ema30 and high >= ema30 and low <= ema150 and high >= ema150
// Signals
greenArrow = isGreen and touchesBothEMAs
redArrow = isRed and touchesBothEMAs
// Plot arrows
plotshape(greenArrow, title="Green Candle Touch", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.small)
plotshape(redArrow, title="Red Candle Touch", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.small)
// Plot EMAs for reference
plot(ema30, color=color.orange, title="EMA 30")
plot(ema150, color=color.blue, title="EMA 150")
MACD-VWAP-BB IndicatorThe Scalping Rainbow MACD-VWAP-BB Indicator is a simple tool for beginners to scalp (make quick trades) on a 1-minute chart in TradingView. It helps you decide when to buy or sell assets like forex (EUR/USD), crypto (BTC/USD), or stocks by showing clear signals directly on the candlestick chart. Here’s how to use it for scalping, explained in the easiest way:
Setup: Open TradingView, choose a 1-minute chart for a liquid asset (e.g., EUR/USD). Copy the indicator code into the Pine Editor (bottom tab), click “Add to Chart.” You’ll see green triangle-up signals below candles for buying and red triangle-down signals above candles for selling.
Buy Signal (Green Triangle Up): When a green triangle appears below a candle, it means the MACD, VWAP, and Bollinger Bands all suggest the price may rise. Action: Buy immediately, aiming for a small profit (5-10 pips in forex, 0.1-0.5% in crypto/stocks). Set a stop-loss 2-5 pips below the recent low to limit losses.
Sell Signal (Red Triangle Down): A red triangle above a candle signals a potential price drop. Action: Sell or short the asset, targeting a quick profit. Set a stop-loss 2-5 pips above the recent high.
Scalping Tips: Trade during busy market hours (e.g., 5:30 PM–9:30 PM IST for forex). Exit trades within 1-5 minutes. Only risk 1-2% of your account per trade. Check for support/resistance levels or candlestick patterns to confirm signals.
Practice: Use a demo account to test the indicator. Stick to 3-5 trades per session to avoid overtrading. If signals are too frequent, adjust “Signal Delay” to 2 in settings.
This indicator simplifies scalping by combining three reliable tools into clear buy/sell signals, perfect for beginners.
Liquidity Zones DetectorIdentifies high-probability liquidity zones by scanning for price levels repeatedly touched by candle wicks within a lookback period. Highlights potential buy- and sell-side liquidity areas as shaded boxes on the chart.
Strong Candle ReversalStrong Candle Reversal helps you identify strong candlestick reversal points based on:
✅ Key criteria for strong candle reversals:
Powerful candlestick patterns:
Engulfing
Hammer / Shooting Star
Unusually high volume
Optional confirmation using RSI reversal
Copper to Bitcoin RatioRatio: Divides copper price by Bitcoin price (copper / bitcoin). Since copper is in USD per pound and Bitcoin is in USD, the ratio is unitless but reflects copper’s value relative to Bitcoin.
Plotting: The ratio is plotted as a blue line, with an optional 20-period simple moving average (red line) for smoothing.
This can reflect market sentiment (e.g., industrial demand vs. crypto speculation).
30min to 1min Entry RefinerA multi-timeframe entry confirmation tool that aligns 30-minute RSI signals with 1-minute RSI crossovers and volume spikes. Ideal for precise intraday entries in trending markets, with optional support/resistance overlays from higher-timeframe pivots.
RSX OBV & VWAP Weighted+This indicator combines RSX (Relative Strength eXtra), OBV (On-Balance Volume), and VWAP (Volume-Weighted Average Price) into a powerful momentum oscillator. It helps traders identify overbought/oversold conditions, accumulation/distribution zones, and trend strength with volume confirmation.
Key Features:
RSX Fast & Slow Lines: Smoothed momentum oscillator with adjustable lengths.
Volume Weighting: Option to weight price action using OBV or VWAP for better trend confirmation.
Custom Moving Average: Choose between SMA, EMA, WMA, or DEMA applied to RSX values.
Accumulation/Distribution Zones: Visual thresholds for extreme momentum conditions.
Volume Histogram: Displays OBV/VWAP impact on momentum (optional).
How to Use It?
Trend Identification:
Fast RSX > Slow RSX → Bullish momentum.
Fast RSX < Slow RSX → Bearish momentum.
Overbought/Oversold Levels:
Above 71 (Upper Level) → Overbought (potential reversal/sell signal).
Below 29 (Lower Level) → Oversold (potential reversal/buy signal).
Volume Confirmation:
OBV/VWAP Histogram shows if volume supports the trend.
Custom MA:
Use the moving average as a dynamic support/resistance level.
Best Settings:
Intraday Trading: Fast RSX (7), Slow RSX (14).
Swing Trading: Fast RSX (14), Slow RSX (21).
Volume Weighting: Enable for stronger trend confirmation.
Что такое индикатор RSX OBV & VWAP Weighted+?
Этот индикатор объединяет RSX (Relative Strength eXtra), OBV (On-Balance Volume) и VWAP (Volume-Weighted Average Price) в мощный осциллятор. Он помогает определять перекупленность/перепроданность, зоны накопления/распределения и силу тренда с учетом объема.
Основные функции:
RSX Fast & Slow Lines: Сглаженный осциллятор с настраиваемыми периодами.
Взвешивание по объему: Возможность учитывать OBV или VWAP для усиления сигналов.
Скользящая средняя: На выбор SMA, EMA, WMA или DEMA, применяемая к значениям RSX.
Зоны накопления/распределения: Визуальные уровни для экстремальных состояний.
Гистограмма объема: Показывает влияние OBV/VWAP на импульс (опционально).
Как использовать?
Определение тренда:
Fast RSX > Slow RSX → Бычий импульс.
Fast RSX < Slow RSX → Медвежий импульс.
Уровни перекупленности/перепроданности:
Выше 71 (верхний уровень) → Перекупленность (сигнал к продаже).
Ниже 29 (нижний уровень) → Перепроданность (сигнал к покупке).
Подтверждение объемом:
Гистограмма OBV/VWAP показывает, поддерживает ли объем движение.
Скользящая средняя:
Используйте как динамический уровень поддержки/сопротивления.
Рекомендуемые настройки:
Внутридневная торговля: Fast RSX (7), Slow RSX (14).
Свинг-трейдинг: Fast RSX (14), Slow RSX (21).
Взвешивание по объему: Включите для более сильных сигналов.
Moving Average Exponential//@version=4
study(title="主图常用指标@小何", shorttitle="主图常用指标@小何",overlay=true)
emaSystem1 = input(false,title = "均线系统@斐波那契")//5,21,55,144
vegas = input(false,title = "Vegas双隧道")//144,169,576,676,12
emaSystem2 = input(false,title = "均线系统@常规时间周期")//10,20,30
boll = input(false, title = "布林带")
fastEma1 = emaSystem1?ema(close,5):na
midEma1 = emaSystem1?ema(close,21):na
slowEma1 = emaSystem1?ema(close,55):na
VIPslowEma1 = emaSystem1?ema(close,144):na
//输出均线系统1
plot(fastEma1,color = color.yellow,linewidth =2,title = "快线-5ema")
plot(midEma1,color = color.red,linewidth = 2,title = "中线-21ema")
plot(slowEma1,color = color.blue,linewidth = 2,title = "慢线-55ema")
plot(VIPslowEma1,color = color.white,linewidth = 2,title = "巨慢线-144ema")
fil1 = vegas?ema(close,12):na
fast4Ema = vegas?ema(close,576):na
slow4Ema = vegas?ema(close,676):na
fast1Ema = vegas?ema(close,144):na
slow1Ema = vegas?ema(close,169):na
//输出Vegas隧道
plot (fil1,color = color.green,linewidth = 2,title= "过滤线")
plot (fast4Ema,color = color.blue,linewidth = 2,title = "慢隧道快线")
plot (slow4Ema,color = color.blue,linewidth = 2,title = "慢隧道慢线")
plot (fast1Ema,color = color.yellow,linewidth = 2,title = "快隧道快线")
plot (slow1Ema,color = color.yellow,linewidth= 2,title = "快隧道慢线")
fastEma2 = emaSystem2?ema(close,10):na
midEma2 = emaSystem2?ema(close,20):na
slowEma2 = emaSystem2?ema(close,30):na
//输出均线系统2
plot(fastEma2,color = color.yellow,linewidth =2,title = "快线-5ema")
plot(midEma2,color = color.red,linewidth = 2,title = "中线-21ema")plot(slowEma2,color = color.blue,linewidth = 2,title = "慢线-55ema")
basis = boll?sma(close, 20):na
dev = 2 * stdev(close,20)//标准差
upper = boll?(basis + dev):na
lower = boll?(basis - dev):na
plot(basis, "中轨", color=#872323)
p1 = plot(upper, "上轨", color=color.teal)
p2 = plot(lower, "下轨", color=color.teal)
fill(p1, p2, title = "背景", color=#198787, transp=95)
Copper to Gold Ratioratio = copper / gold: Calculates the ratio by dividing copper price by gold price.
plot(ratio): Plots the ratio as a blue line.
ma = ta.sma(ratio, 20): Adds a 20-period simple moving average (optional) to smooth the ratio, plotted as a red line.
A rising Copper/Gold ratio often signals economic expansion (strong copper demand relative to gold), while a falling ratio may indicate economic uncertainty or recession fears, as gold outperforms copper.
The ratio is also used as a leading indicator for 10-year U.S. Treasury yields, with a rising ratio often correlating with higher yields.
EMA Hierarchy Alternating Alert MarkersThis script allows you to set EMA 5, 13 & 26 in a single indicator
// It allows you to set an alert when PCO or NCO happens where 5>13>26 (PCO) or 5<13<26 (NCO)
// It has been deisgned in such a way that the alert will only be sounded on the first PCO or NCO
// Once a PCO has happened then the next PCO alert will only come after the NCO has happened
// This feature helps you to avoid getting multiple alerts specially if you are using a lower timeframe
// EMA crossover strategy has been one of the favorite strategy which helps traders understand the trend in various timeframes and accordingly ride the wave - both upside and downside. This indicator helps to time your trade once you get an alert on crossover happening and eliminates the need for constant monitoring of the screen
// Scripts: Equities, F&O, Commodity, Crypto, Currency
// Time Frame: All
// By TrustingOwl83470
PriceLevels GBGoldbach Price Levels – Identify Algorithmic Key Zones
This open-source indicator is designed to help traders identify potential algorithmic key zones by highlighting price levels ending with specific numbers such as 03, 11, 29, 35, 65, and 71. These levels may act as inflection points or hesitation areas based on observed behavioral patterns in price movement.
What It Does:
📌 Scans and plots horizontal price levels where the price ends with one of the selected number combinations
🎯 Toggle on/off visibility for each number ending
🎨 Customize color and thickness for each level
🏷️ Shows price labels at the end of each line
🌗 Label styles (color/transparency) are adjustable for both dark and light chart themes
🧠 Why Use It:
This tool is ideal for discretionary traders who study market structure through static price anchors. It provides a visual reference for recurring numerical levels that may be used in algorithmic trading models or serve as psychological price zones.
⚠️ Disclaimer:
This script is open-source and intended for educational and analytical purposes only. No trading signals or performance guarantees are provided. Please use your own judgment when applying this tool in a trading context.
🔥 Smart Money Entry Bot (ICT Style)//@version=5
indicator("🔥 Smart Money Entry Bot (ICT Style)", overlay=true)
// === INPUTS ===
liqLookback = input.int(15, title="Liquidity Lookback Period")
useEngulfing = input.bool(true, title="Use Engulfing Candle Confirmation")
useFVG = input.bool(false, title="Use FVG Confirmation (Experimental)")
sessionFilter = input.bool(true, title="Only Trade During London & NY Sessions")
stopLossPerc = input.float(0.5, title="Stop Loss (%)", step=0.1)
takeProfitPerc = input.float(1.5, title="Take Profit (%)", step=0.1)
// === TIME FILTER ===
inSession = not sessionFilter or (time(timeframe.period, "0930-1130") or time(timeframe.period, "0300-0600"))
// === LIQUIDITY SWEEP ===
highestHigh = ta.highest(high, liqLookback)
lowestLow = ta.lowest(low, liqLookback)
sweptHigh = high > highestHigh
sweptLow = low < lowestLow
// === ENGULFING ===
bullishEngulfing = close > open and open < close and close > open
bearishEngulfing = close < open and open > close and close < open
// === BOS Logic (Mock: strong move in opposite direction after sweep) ===
bosDown = sweptHigh and close < close
bosUp = sweptLow and close > close
// === Fair Value Gap (Experimental) ===
fvgBull = low > high and low > high
fvgBear = high < low and high < low
// === ENTRY CONDITIONS ===
longEntry = sweptLow and bosUp and inSession and (not useEngulfing or bullishEngulfing) and (not useFVG or fvgBull)
shortEntry = sweptHigh and bosDown and inSession and (not useEngulfing or bearishEngulfing) and (not useFVG or fvgBear)
// === PLOT SIGNALS ===
plotshape(longEntry, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === ALERTS ===
alertcondition(longEntry, title="BUY Signal", message="BUY signal confirmed by Smart Money Bot")
alertcondition(shortEntry, title="SELL Signal", message="SELL signal confirmed by Smart Money Bot")
// === STOP LOSS / TAKE PROFIT LEVELS (Visual) ===
slLong = longEntry ? close * (1 - stopLossPerc / 100) : na
tpLong = longEntry ? close * (1 + takeProfitPerc / 100) : na
slShort = shortEntry ? close * (1 + stopLossPerc / 100) : na
tpShort = shortEntry ? close * (1 - takeProfitPerc / 100) : na
plot(slLong, color=color.red, style=plot.style_linebr, title="SL Long")
plot(tpLong, color=color.green, style=plot.style_linebr, title="TP Long")
plot(slShort, color=color.red, style=plot.style_linebr, title="SL Short")
plot(tpShort, color=color.green, style=plot.style_linebr, title="TP Short")
Adaptive RSI Oscillator📌 Adaptive RSI Oscillator
This indicator transforms the classic RSI into a fully adaptive, self-optimizing oscillator — normalized between -1 and 1, dynamically smoothed, and enhanced with divergence detection.
🔧 Key Features
Self-Optimizing RSI: Automatically selects the optimal RSI lookback length based on return stability (no hardcoded periods).
Dynamic Smoothing: Adapts to market conditions using a fraction of the optimized length.
Normalized Output : Converts traditional RSI to a consistent scale across all assets and timeframes.
Divergence Detection: Compares RSI behavior vs. price percentile ranks and scales the signal accordingly.
Gradient Visualization: Color-coded background and plot lines reflect the strength and direction of the signal with soft transitions.
Neutral Zone Adaptation: Dynamically widens or narrows the zone of inaction based on volatility, reducing noise.
🎯 Use Cases
Identify extreme momentum zones without relying on fixed 70/30 RSI levels
Detect divergences early with adaptive filtering
Highlight potential exhaustion or continuation
⚠️ Disclaimer: This indicator is for informational and educational purposes only. It does not constitute financial advice or a recommendation to buy or sell any security. Always conduct your own research and consult a licensed financial advisor before making investment decisions. Use at your own risk.
OBAdvanced Order Block & Liquidity Mapping Tool
This open-source script is designed to help traders identify market structure and key liquidity areas using a combination of fractal-based order block detection and dynamic/static liquidity mapping.
Features Overview:
- Detects bullish and bearish order blocks using 3-bar and 5-bar fractal patterns
- Automatic removal of invalidated order blocks when price bodies fully break above/below OB highs/lows
- Fair Value Gap (FVG) validation option to increase signal quality
- Time-based label system for session or bar analysis
- Highly customizable visuals: line styles, label positions, widths, colors, and time offsets
🛠️ Custom Enhancements:
This version introduces a key improvement: order blocks are automatically removed once they are considered invalid, specifically when the body of a future candle breaks through the high or low of the original OB — not just the wick. This enhances the clarity and reliability of the displayed levels by dynamically filtering out broken zones.
🧠 Based on Open Source Work:
This script includes adapted logic from the open-source Orderblocks script by Nephew_Sam_.
The original detection mechanism has been extended with new invalidation logic and improved visual rendering.
Recommended Usage:
Best suited for intraday or swing-trading strategies based on market structure and smart money concepts (SMC). Works well on 5m to 4h timeframes. Inputs are adjustable to suit varying volatility and session preferences.
⚠️ Disclaimer:
This tool is intended for educational and analytical purposes only. It is not financial advice, and no performance or profitability is guaranteed.
// Portions of the order block logic are adapted from the open-source "Orderblocks" script by Nephew_Sam_.
// Original:
// This version adds custom invalidation logic based on body breaches and enhanced cleanup behavior.