Crypto Strength MatrixOverview
The "Crypto Strength Matrix" is a custom Pine Script v5 indicator designed for cryptocurrency traders to assess the relative strength of major crypto market segments against traditional markets (e.g., the U.S. Dollar Index) and Bitcoin dominance. This indicator plots the strength of Altcoins (excluding ETH and SOL), Ethereum (ETH), Solana (SOL), the Dollar Index (DXY) versus Altcoins, and Bitcoin Dominance (DOM) on a 0-100 scale, using the Relative Strength Index (RSI) methodology. It provides a visual and intuitive way to identify overbought (>70) or oversold (<30) conditions across these assets, helping traders spot potential entry or exit points in the crypto market.
How It Works
The indicator fetches real-time data from various crypto and forex symbols available on TradingView, including:
CRYPTOCAP:TOTAL2 (total altcoin market cap),
CRYPTOCAP:ETH and CRYPTOCAP:SOL (market caps of ETH and SOL),
CRYPTO:ETHUSD and CRYPTO:SOLUSD (ETH and SOL prices),
CRYPTOCAP:BTC.D (Bitcoin dominance),
TVC:DXY (U.S. Dollar Index).
Calculations:
Altcoin Strength (OTH): Measures the RSI of the normalized market cap of all altcoins excluding ETH and SOL (calculated as TOTAL2 - ETH - SOL), relative to the total altcoin market cap. This reflects the strength of smaller altcoins.
ETH Strength: Computes the RSI of ETH/USD price adjusted by the DXY, isolating ETH's performance against the dollar.
SOL Strength: Similar to ETH, calculates the RSI of SOL/USD price adjusted by the DXY, focusing on Solana's strength.
DXY vs Altcoins: Uses the RSI of the DXY divided by the normalized total altcoin market cap, indicating the dollar's strength relative to altcoins.
Bitcoin Dominance (DOM): Directly applies RSI to Bitcoin dominance data, showing BTC's market control.
Each metric is plotted as a line with a unique color (OTH in aqua, ETH in teal, SOL in purple, DXY in green, DOM in orange) and labeled at the end of the chart for easy identification. Horizontal lines at 70 (overbought), 50 (neutral), and 30 (oversold) provide reference levels.
How to Use
Add the Indicator: Apply the "Crypto Strength Matrix" to a cryptocurrency chart (e.g., BTC/USD or ETH/USD) on a daily or 4-hour timeframe for optimal results.
Interpret the Lines:
OTH (Altcoins excluding ETH and SOL): A value above 70 suggests strong momentum in smaller altcoins, while below 30 indicates weakness. Monitor for divergence with ETH and SOL.
ETH and SOL: High values (>70) signal potential overbought conditions for these assets, while low values (<30) may indicate oversold opportunities.
DXY: Rising above 70 may suggest a stronger dollar, potentially pressuring crypto prices, while below 30 could indicate a weakening dollar, favoring crypto.
DOM: A value above 70 reflects strong Bitcoin dominance, often leading to altcoin underperformance, while below 30 may signal altcoin season.
Combine with Price Action: Use the indicator alongside candlestick patterns or volume analysis to confirm trade signals.
Adjust RSI Length: The default RSI length is 14, but you can tweak this input in the indicator settings to suit your trading style (e.g., 7 for shorter-term, 21 for longer-term trends).
Monitor Trends: Look for crossovers between lines (e.g., OTH rising above DXY) or alignment with the 50 neutral line to gauge market shifts.
Tips
Timeframe Selection: Daily charts provide a broad market view, while 4-hour charts offer more frequent signals. Avoid very short timeframes (e.g., 5m) due to noise.
Contextual Awareness: Combine with macroeconomic news (e.g., U.S. dollar strength) and Bitcoin price movements for better decision-making.
Risk Management: Use the indicator as a supplementary tool, not a standalone signal, and always set stop-losses based on your risk tolerance.
This indicator is ideal for crypto traders seeking a comprehensive view of market dynamics without the complexity of multiple charts. Enjoy trading with the "Crypto Strength Matrix"!
Индикаторы и стратегии
% of stocks in spx above 200 ma— Simplified (30/70 levels)S5TH Breadth Suite — Simplified (30/70 Levels)
This indicator tracks the S&P 500 % of stocks above their 200-day moving average (S5TH), plotted on a 0–100 scale.
• Line Plot: Blue line shows the breadth percentage.
• Key Levels:
• 70 → Overbought zone
• 50 → Neutral midpoint
• 30 → Oversold zone
• Background Shading:
• Red tint = Oversold (<30)
• Green tint = Overbought (>70)
• Signals & Alerts:
• Circles mark midline crossovers.
• Arrows show exits from extreme zones (oversold/overbought).
• Alerts can be set for each condition.
✅ Clean design — no moving averages.
✅ Helps spot breadth extremes, reversals, and trend shifts.
✅ Works on any timeframe (default is chart TF).
Momentum Matrix SignalMomentum Matrix Signals is a real-time indicator that finds BUY/SELL signals using a VWMA trend, closing momentum, and a strength score. It allows for re-entries & exits. ⚠️ WARNING: This version repaints; signals can disappear before a bar closes.
Signal Scoring
A signal is only considered if it first meets two mandatory conditions: a momentum trend and VWMA trend alignment.
If these are met, the signal is then scored from 0 to 5 based on a checklist of five factors:
2-Bar Trend: Confirms initial momentum.
3-Bar Trend: Confirms sustained momentum.
VWMA Trend: Confirms main trend alignment.
Volume Pressure (OBV): Confirms money flow.
Volume Spike (RVOL): Confirms market interest.
A higher score indicates a stronger, higher-conviction signal.
Vietnamese: Swing Low Detection with SMA Bands & BackgroundThis script detects **swing lows** using a dynamic SMA-based logic and visually highlights them on the chart.
Features
Customizable Moving Averages: Supports multiple MA types (SMA, EMA, WMA, RMA, HMA, DEMA, TEMA, VWMA).
Swing Low Visualization: Identifies swing lows when price closes below the SMA of lows and exits once price trades above the SMA of highs.
Smart Rectangles: Marks detected swing lows with labeled boxes for clear visual reference.
Background Highlights**: Dynamically shades the chart background when price breaks below recent swing lows, helping traders spot potential breakdown zones.
Configurable Parameters: Period length, rectangle length, and MA source can all be tuned.
Use Cases
Spot breakdown/bearish continuation signals when price closes under recent lows.
Combine with higher timeframe trend analysis for confluence.
Notes
* This tool is designed for **visual analysis** and is not a standalone buy/sell signal.
* Works best when combined with broader trend analysis, support/resistance levels, and volume.
123Scalp-AHTDetector de patrones con confirmación para scalping.
Identifica Hammer/Shooting Star, Engulfing, Morning/Evening Star y Doji. Genera BUY/SELL con Entry/SL/TP (1R/1.5R/2R), opción 1-bar exit, filtro EMA, y alertas. Render Classic o Anchored (ABS) anclado al precio. No repinta tras la confirmación; pensado para intradía/scalping.
Scalp Pattern Signals — fast pattern/confirmation for intraday.
Detects Hammer/Shooting Star, Engulfing, Morning/Evening Star, and Doji. Produces BUY/SELL with Entry/SL/TP (1R/1.5R/2R), optional 1-bar exit, EMA trend filter, and alerts. Choose Classic or Anchored (ABS) rendering (anchored to price). No repaint after confirmation; built for scalping/intraday.
Ichimoku + SuperTrend + Oscillator + Divergence + SMC Lite//@version=5
indicator("Ichimoku + SuperTrend + Oscillator + Divergence + SMC Lite", overlay=true, max_labels_count=500, max_lines_count=500, max_boxes_count=500, max_bars_back=1000)
// ====================
// === CODE BLOCK 1: Ichimoku + SuperTrend + Oscillator Monitor + Divergence ===
// ====================
// --- User Inputs ---
lowerTF = input.timeframe("5", "Lower Timeframe (Ichimoku + SuperTrend)")
higherTF = input.timeframe("60", "Higher Timeframe (Tenkan/Kijun check)")
tenkanLength = input.int(9, "Tenkan-sen Length (Lower TF)")
kijunLength = input.int(26, "Kijun-sen Length (Lower TF)")
senkouSpanBLength = input.int(52, "Senkou Span B Length (Lower TF)")
displacement = input.int(26, "Displacement (Lower TF)")
showCloud = input.bool(true, "Show Kumo Cloud (Lower TF)")
buyColor = input.color(color.new(color.green, 0), "Buy Candle Color")
sellColor = input.color(color.new(color.red, 0), "Sell Candle Color")
crossCandleColor = input.color(color.new(color.yellow, 0), "Cross Candle Color")
bodyFilterColor = input.color(color.new(color.lime,0), "Body Filter Active Color")
htfCrossColor = input.color(color.new(color.orange,0), "HTF Cross Signal Color")
stopColor = input.color(color.new(color.red,0), "Stop Line Color")
targetColor = input.color(color.new(color.blue,0), "Target Line Color")
cooldownBars = input.int(5, "Cooldown Bars After Signal")
// --- Higher TF Ichimoku ---
tenkanLengthHTF = input.int(36, "Tenkan Length (Higher TF)")
kijunLengthHTF = input.int(103, "Kijun Length (Higher TF)")
showTenkanHTF = input.bool(true, "Show Tenkan (HTF)")
showKijunHTF = input.bool(true, "Show Kijun (HTF)")
tenkanHTFValue = request.security(syminfo.tickerid, higherTF, (ta.highest(high, tenkanLengthHTF)+ta.lowest(low, tenkanLengthHTF))/2)
kijunHTFValue = request.security(syminfo.tickerid, higherTF, (ta.highest(high, kijunLengthHTF)+ta.lowest(low, kijunLengthHTF))/2)
plot(showTenkanHTF ? tenkanHTFValue : na, color=color.blue, linewidth=2, title="Tenkan HTF")
plot(showKijunHTF ? kijunHTFValue : na, color=color.red, linewidth=2, title="Kijun HTF")
// --- Lower TF Ichimoku ---
tenkan = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, tenkanLength) + ta.lowest(low, tenkanLength)) / 2)
kijun = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, kijunLength) + ta.lowest(low, kijunLength)) / 2)
senkouA = request.security(syminfo.tickerid, lowerTF, (tenkan + kijun) / 2)
senkouB = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, senkouSpanBLength) + ta.lowest(low, senkouSpanBLength)) / 2)
plot(tenkan, color=color.blue, title="Tenkan-sen (LTF)", linewidth=2)
plot(kijun, color=color.red, title="Kijun-sen (LTF)", linewidth=2)
sA = plot(senkouA , display=display.none)
sB = plot(senkouB , display=display.none)
cloudColor = showCloud ? (senkouA > senkouB ? color.new(color.green, 80) : color.new(color.red, 80)) : na
fill(sA, sB, color=cloudColor)
// --- Detect Crosses ---
crossUp = ta.crossover(tenkan, kijun)
crossDown = ta.crossunder(tenkan, kijun)
crossUpHTF = ta.crossover(tenkanHTFValue, kijunHTFValue)
crossDownHTF = ta.crossunder(tenkanHTFValue, kijunHTFValue)
candle2AboveCloud = close > math.max(senkouA , senkouB )
candle2BelowCloud = close < math.min(senkouA , senkouB )
// --- SuperTrend Lower TF ---
atrPeriodLTF = 12
multiplierLTF = 3.0
atrValueLTF = ta.atr(atrPeriodLTF)
upLTF = hl2 - multiplierLTF * atrValueLTF
dnLTF = hl2 + multiplierLTF * atrValueLTF
var int trendLTF = 1
trendLTF := trendLTF == -1 and close > dnLTF ? 1 : trendLTF == 1 and close < upLTF ? -1 : trendLTF
// --- SuperTrend Higher TF ---
useHTFST = input.bool(true, "Use HTF SuperTrend")
atrPeriodHTF = input.int(12, "HTF SuperTrend ATR")
multiplierHTF = input.float(3.0, "HTF SuperTrend Multiplier")
hl2HTF = request.security(syminfo.tickerid, higherTF, hl2)
atrHTF = request.security(syminfo.tickerid, higherTF, ta.atr(atrPeriodHTF))
upHTF = hl2HTF - multiplierHTF * atrHTF
dnHTF = hl2HTF + multiplierHTF * atrHTF
var int trendHTF = 1
trendHTF := trendHTF == -1 and close > dnHTF ? 1 : trendHTF == 1 and close < upHTF ? -1 : trendHTF
// --- Body Filter ---
useBodyFilter = input.bool(true, "Use Body Filter")
bodyMinPerc = input.float(20, "Min Body %")
bodyMaxPerc = input.float(100, "Max Body %")
bodyLen = math.abs(close - open)
candleLen = high - low
bodyPerc = (bodyLen / candleLen) * 100
bodyFilterPass = not useBodyFilter or (bodyPerc >= bodyMinPerc and bodyPerc <= bodyMaxPerc)
// --- Reward Filter ---
useReward = input.bool(true, "Use Reward 1:1 Filter")
stopLossPerc = input.float(1.5, "Stop Loss %")
reward1 = input.float(1.0, "Target 1 R/R")
reward2 = input.float(2.0, "Target 2 R/R")
reward3 = input.float(3.0, "Target 3 R/R")
rewardPass = not useReward or ((math.abs(close - tenkanHTFValue) * reward1) <= math.abs(kijunHTFValue - close))
// --- TSI Higher TF ---
tsiLong = input.int(25, "TSI Long")
tsiShort = input.int(13, "TSI Short")
tsiHTF = ta.tsi(request.security(syminfo.tickerid, higherTF, close), tsiLong, tsiShort)
// --- Lower TF Signals ---
buySignalLTF = (crossUp and candle2AboveCloud) and trendLTF == 1
sellSignalLTF = (crossDown and candle2BelowCloud) and trendLTF == -1
plotshape(crossUpHTF, title="HTF Buy Cross", location=location.belowbar, color=htfCrossColor, style=shape.triangleup, size=size.small)
plotshape(crossDownHTF, title="HTF Sell Cross", location=location.abovebar, color=htfCrossColor, style=shape.triangledown, size=size.small)
buyConfirmedRaw = (buySignalLTF and close > tenkanHTFValue and (not useHTFST or trendHTF==1)) and rewardPass and (tsiHTF > 0)
sellConfirmedRaw = (sellSignalLTF and close < tenkanHTFValue and (not useHTFST or trendHTF==-1)) and rewardPass and (tsiHTF < 0)
// --- Cooldown ---
var int barsSinceSignal = cooldownBars
barsSinceSignal += 1
buyConfirmed = buyConfirmedRaw and barsSinceSignal >= cooldownBars
sellConfirmed = sellConfirmedRaw and barsSinceSignal >= cooldownBars
if buyConfirmed or sellConfirmed
barsSinceSignal := 0
// --- Plot Final Signals ---
plotshape(buyConfirmed and bodyFilterPass, title="Buy Signal", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.small)
plotshape(sellConfirmed and bodyFilterPass, title="Sell Signal", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.small)
plotshape(buyConfirmed and not bodyFilterPass, title="Buy Signal (Filtered)", location=location.belowbar, color=bodyFilterColor, style=shape.triangleup, size=size.tiny)
plotshape(sellConfirmed and not bodyFilterPass, title="Sell Signal (Filtered)", location=location.abovebar, color=bodyFilterColor, style=shape.triangledown, size=size.tiny)
barcolor(crossUp or crossDown ? crossCandleColor : na)
barcolor(buyConfirmed and bodyFilterPass ? buyColor : sellConfirmed and bodyFilterPass ? sellColor : na)
// --- Stop & Targets ---
var float lastBuyPrice = na
var float lastSellPrice = na
var bool buyActive = false
var bool sellActive = false
f_drawLine(_price) =>
line.new(bar_index, _price, bar_index+3, _price, color=targetColor, width=2, style=line.style_dotted)
if buyConfirmed and not buyActive and not sellActive
buyActive := true
lastBuyPrice := close
line.new(bar_index, close*(1-stopLossPerc/100), bar_index+3, close*(1-stopLossPerc/100), color=stopColor, width=2, style=line.style_dotted)
f_drawLine(close*(1+reward1/100))
f_drawLine(close*(1+reward2/100))
f_drawLine(close*(1+reward3/100))
if buyActive
if low <= lastBuyPrice*(1-stopLossPerc/100) or high >= lastBuyPrice*(1+reward1/100)
buyActive := false
if sellConfirmed and not sellActive and not buyActive
sellActive := true
lastSellPrice := close
line.new(bar_index, close*(1+stopLossPerc/100), bar_index+3, close*(1+stopLossPerc/100), color=stopColor, width=2, style=line.style_dotted)
f_drawLine(close*(1-reward1/100))
f_drawLine(close*(1-reward2/100))
f_drawLine(close*(1-reward3/100))
if sellActive
if high >= lastSellPrice*(1+stopLossPerc/100) or low <= lastSellPrice*(1-reward1/100)
sellActive := false
// --- Oscillator Panel ---
showPanel = input.bool(true, "Show Oscillator Panel")
panelX = input.int(20, "Panel X Offset (Bars)")
panelY = input.int(50, "Panel Y Offset (Pixels)")
panelBgColor = input.color(color.new(color.black, 85), "Panel Background Color")
panelTextSize = input.string("normal", "Text Size", options= )
// MACD
macdFast = input.int(12)
macdSlow = input.int(26)
macdSignal= input.int(9)
= ta.macd(close, macdFast, macdSlow, macdSignal)
macdBull = macdLine > signalLine
// RSI
rsiLen = input.int(14)
rsiVal = ta.rsi(close, rsiLen)
rsiBull = rsiVal > 50
// TSI
tsiVal = ta.tsi(close, 25, 13)
tsiBull = tsiVal > 0
// Divergence detection (RSI, MACD, TSI)
leftBars = input.int(2)
rightBars = input.int(2)
rsiLow = ta.pivotlow(rsiVal, leftBars, rightBars)
rsiHigh = ta.pivothigh(rsiVal, leftBars, rightBars)
bullDivRSI = not na(rsiLow) and low < low and rsiVal > rsiVal
bearDivRSI = not na(rsiHigh) and high > high and rsiVal < rsiVal
macdLow = ta.pivotlow(macdLine, leftBars, rightBars)
macdHigh = ta.pivothigh(macdLine, leftBars, rightBars)
bullDivMACD = not na(macdLow) and low < low and macdLine > macdLine
bearDivMACD = not na(macdHigh) and high > high and macdLine < macdLine
tsiLow = ta.pivotlow(tsiVal, leftBars, rightBars)
tsiHigh = ta.pivothigh(tsiVal, leftBars, rightBars)
bullDivTSI = not na(tsiLow) and low < low and tsiVal > tsiVal
bearDivTSI = not na(tsiHigh) and high > high and tsiVal < tsiVal
// Plot divergence on chart
plotshape(bullDivRSI, style=shape.labelup, text="R d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivRSI, style=shape.labeldown, text="R d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
plotshape(bullDivMACD, style=shape.labelup, text="M d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivMACD, style=shape.labeldown, text="M d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
plotshape(bullDivTSI, style=shape.labelup, text="T d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivTSI, style=shape.labeldown, text="T d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
// Panel
var label panelLabel = label.new(bar_index + panelX, close, "", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_label_left, color=panelBgColor, size=panelTextSize)
if showPanel
label.set_xy(panelLabel, bar_index + panelX, close + panelY * syminfo.mintick)
label.set_text(panelLabel, "MACD: " + (macdBull ? "↑" : "↓") + (bullDivMACD ? " d+" : bearDivMACD ? " d-" : "") + " " +
"RSI : " + (rsiBull ? "↑" : "↓") + (bullDivRSI ? " d+" : bearDivRSI ? " d-" : "") + " " +
"TSI : " + (tsiBull ? "↑" : "↓") + (bullDivTSI ? " d+" : bearDivTSI ? " d-" : "") + " " +
"ST : " + (trendLTF==1 ? "↑" : "↓"))
label.set_textcolor(panelLabel, color.white)
// ====================
// === CODE BLOCK 2: FluidTrades - SMC Lite (Light) ===
// ====================
// === SETTINGS ===
swing_length = input.int(10, "Swing High/Low Length", minval=1, maxval=50)
history_keep = input.int(20, "History To Keep", minval=5, maxval=50)
box_width = input.float(2.5, "Supply/Demand Box Width", minval=1, maxval=10, step=0.5)
show_labels = input.bool(false, "Show Price Action Labels")
supply_color = input.color(color.new(#EDEDED,70), "Supply Color")
supply_outline = input.color(color.new(color.white,75), "Supply Outline")
demand_color = input.color(color.new(#00FFFF,70), "Demand Color")
demand_outline = input.color(color.new(color.white,75), "Demand Outline")
bos_color = input.color(color.white, "BOS Label Color")
poi_color = input.color(color.white, "POI Label Color")
label_color = input.color(color.black, "Swing Label Color")
// === FUNCTIONS ===
f_add_pop(arr, val) =>
array.unshift(arr, val)
array.pop(arr)
f_draw_swing_label(values, swing_type) =>
var string txt = na
if swing_type == 1
txt := array.get(values,0) >= array.get(values,1) ? "HH" : "LH"
label.new(bar_index - swing_length, array.get(values,0), txt, style=label.style_label_down, textcolor=label_color, color=color.new(label_color,100), size=size.tiny)
else
txt := array.get(values,0) >= array.get(values,1) ? "HL" : "LL"
label.new(bar_index - swing_length, array.get(values,0), txt, style=label.style_label_up, textcolor=label_color, color=color.new(label_color,100), size=size.tiny)
f_check_overlap(new_poi, box_arr, atr) =>
ok = true
for i=0 to array.size(box_arr)-1
b = array.get(box_arr,i)
top = box.get_top(b)
bot = box.get_bottom(b)
mid = (top+bot)/2
threshold = atr*2
if new_poi >= mid - threshold and new_poi <= mid + threshold
ok := false
break
ok
f_create_box(vals, bn_arr, box_arr, label_arr, type_box, atr) =>
atr_buf = atr*(box_width/10)
left = array.get(bn_arr,0)
right = bar_index
var float top=0.0
var float bottom=0.0
var float poi=0.0
if type_box==1
top := array.get(vals,0)
bottom := top - atr_buf
else
bottom := array.get(vals,0)
top := bottom + atr_buf
poi := (top+bottom)/2
if f_check_overlap(poi, box_arr, atr)
box.delete(array.get(box_arr,array.size(box_arr)-1))
f_add_pop(box_arr, box.new(left, top, right, bottom, border_color=type_box==1?supply_outline:demand_outline,
bgcolor=type_box==1?supply_color:demand_color, extend=extend.right, text=type_box==1?"SUPPLY":"DEMAND",
text_halign=text.align_center, text_valign=text.align_center, text_color=poi_color, text_size=size.small, xloc=xloc.bar_index))
box.delete(array.get(label_arr,array.size(label_arr)-1))
f_add_pop(label_arr, box.new(left, poi, right, poi, border_color=color.new(poi_color,90),
bgcolor=color.new(poi_color,90), extend=extend.right, text="POI", text_halign=text.align_left, text_valign=text.align_center, text_color=poi_color, text_size=size.small, xloc=xloc.bar_index))
f_to_bos(box_arr, bos_arr, label_arr, type_box) =>
for i=0 to array.size(box_arr)-1
b = array.get(box_arr,i)
lvl = type_box==1? box.get_top(b) : box.get_bottom(b)
cond = type_box==1? close>=lvl : close<=lvl
if cond
cbox = box.copy(b)
f_add_pop(bos_arr, cbox)
mid = (box.get_top(b)+box.get_bottom(b))/2
box.set_top(cbox, mid)
box.set_bottom(cbox, mid)
box.set_extend(cbox, extend.none)
box.set_right(cbox, bar_index)
box.set_text(cbox, "BOS")
box.set_text_color(cbox, bos_color)
box.set_text_size(cbox, size.small)
box.set_text_halign(cbox, text.align_center)
box.set_text_valign(cbox, text.align_center)
box.delete(b)
box.delete(array.get(label_arr,i))
f_extend(box_arr) =>
for i=0 to array.size(box_arr)-1
box.set_right(array.get(box_arr,i), bar_index+100)
// === CALCULATIONS ===
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_vals = array.new_float(5,0.0)
var swing_low_vals = array.new_float(5,0.0)
var swing_high_bn = array.new_int(5,0)
var swing_low_bn = array.new_int(5,0)
var supply_boxes = array.new_box(history_keep, na)
var demand_boxes = array.new_box(history_keep, na)
var supply_poi = array.new_box(history_keep, na)
var demand_poi = array.new_box(history_keep, na)
var bos_supply = array.new_box(5, na)
var bos_demand = array.new_box(5, na)
// NEW SWING HIGH
if not na(swing_high)
f_add_pop(swing_high_vals, swing_high)
f_add_pop(swing_high_bn, bar_index )
if show_labels
f_draw_swing_label(swing_high_vals,1)
f_create_box(swing_high_vals, swing_high_bn, supply_boxes, supply_poi, 1, atr)
// NEW SWING LOW
if not na(swing_low)
f_add_pop(swing_low_vals, swing_low)
f_add_pop(swing_low_bn, bar_index )
if show_labels
f_draw_swing_label(swing_low_vals,-1)
f_create_box(swing_low_vals, swing_low_bn, demand_boxes, demand_poi, -1, atr)
f_to_bos(supply_boxes, bos_supply, supply_poi, 1)
f_to_bos(demand_boxes, bos_demand, demand_poi, -1)
f_extend(supply_boxes)
f_extend(demand_boxes)
//@version=6
length = input.int(9, minval=1)
src = input(close, title="Source")
e1 = ta.ema(src, length)
e2 = ta.ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=#43A047)
Ichimoku + SuperTrend + Oscillator + Divergence + SMC Lite//@version=5
indicator("Ichimoku + SuperTrend + Oscillator + Divergence + SMC Lite", overlay=true, max_labels_count=500, max_lines_count=500, max_boxes_count=500, max_bars_back=1000)
// ====================
// === CODE BLOCK 1: Ichimoku + SuperTrend + Oscillator Monitor + Divergence ===
// ====================
// --- User Inputs ---
lowerTF = input.timeframe("5", "Lower Timeframe (Ichimoku + SuperTrend)")
higherTF = input.timeframe("60", "Higher Timeframe (Tenkan/Kijun check)")
tenkanLength = input.int(9, "Tenkan-sen Length (Lower TF)")
kijunLength = input.int(26, "Kijun-sen Length (Lower TF)")
senkouSpanBLength = input.int(52, "Senkou Span B Length (Lower TF)")
displacement = input.int(26, "Displacement (Lower TF)")
showCloud = input.bool(true, "Show Kumo Cloud (Lower TF)")
buyColor = input.color(color.new(color.green, 0), "Buy Candle Color")
sellColor = input.color(color.new(color.red, 0), "Sell Candle Color")
crossCandleColor = input.color(color.new(color.yellow, 0), "Cross Candle Color")
bodyFilterColor = input.color(color.new(color.lime,0), "Body Filter Active Color")
htfCrossColor = input.color(color.new(color.orange,0), "HTF Cross Signal Color")
stopColor = input.color(color.new(color.red,0), "Stop Line Color")
targetColor = input.color(color.new(color.blue,0), "Target Line Color")
cooldownBars = input.int(5, "Cooldown Bars After Signal")
// --- Higher TF Ichimoku ---
tenkanLengthHTF = input.int(36, "Tenkan Length (Higher TF)")
kijunLengthHTF = input.int(103, "Kijun Length (Higher TF)")
showTenkanHTF = input.bool(true, "Show Tenkan (HTF)")
showKijunHTF = input.bool(true, "Show Kijun (HTF)")
tenkanHTFValue = request.security(syminfo.tickerid, higherTF, (ta.highest(high, tenkanLengthHTF)+ta.lowest(low, tenkanLengthHTF))/2)
kijunHTFValue = request.security(syminfo.tickerid, higherTF, (ta.highest(high, kijunLengthHTF)+ta.lowest(low, kijunLengthHTF))/2)
plot(showTenkanHTF ? tenkanHTFValue : na, color=color.blue, linewidth=2, title="Tenkan HTF")
plot(showKijunHTF ? kijunHTFValue : na, color=color.red, linewidth=2, title="Kijun HTF")
// --- Lower TF Ichimoku ---
tenkan = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, tenkanLength) + ta.lowest(low, tenkanLength)) / 2)
kijun = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, kijunLength) + ta.lowest(low, kijunLength)) / 2)
senkouA = request.security(syminfo.tickerid, lowerTF, (tenkan + kijun) / 2)
senkouB = request.security(syminfo.tickerid, lowerTF, (ta.highest(high, senkouSpanBLength) + ta.lowest(low, senkouSpanBLength)) / 2)
plot(tenkan, color=color.blue, title="Tenkan-sen (LTF)", linewidth=2)
plot(kijun, color=color.red, title="Kijun-sen (LTF)", linewidth=2)
sA = plot(senkouA , display=display.none)
sB = plot(senkouB , display=display.none)
cloudColor = showCloud ? (senkouA > senkouB ? color.new(color.green, 80) : color.new(color.red, 80)) : na
fill(sA, sB, color=cloudColor)
// --- Detect Crosses ---
crossUp = ta.crossover(tenkan, kijun)
crossDown = ta.crossunder(tenkan, kijun)
crossUpHTF = ta.crossover(tenkanHTFValue, kijunHTFValue)
crossDownHTF = ta.crossunder(tenkanHTFValue, kijunHTFValue)
candle2AboveCloud = close > math.max(senkouA , senkouB )
candle2BelowCloud = close < math.min(senkouA , senkouB )
// --- SuperTrend Lower TF ---
atrPeriodLTF = 12
multiplierLTF = 3.0
atrValueLTF = ta.atr(atrPeriodLTF)
upLTF = hl2 - multiplierLTF * atrValueLTF
dnLTF = hl2 + multiplierLTF * atrValueLTF
var int trendLTF = 1
trendLTF := trendLTF == -1 and close > dnLTF ? 1 : trendLTF == 1 and close < upLTF ? -1 : trendLTF
// --- SuperTrend Higher TF ---
useHTFST = input.bool(true, "Use HTF SuperTrend")
atrPeriodHTF = input.int(12, "HTF SuperTrend ATR")
multiplierHTF = input.float(3.0, "HTF SuperTrend Multiplier")
hl2HTF = request.security(syminfo.tickerid, higherTF, hl2)
atrHTF = request.security(syminfo.tickerid, higherTF, ta.atr(atrPeriodHTF))
upHTF = hl2HTF - multiplierHTF * atrHTF
dnHTF = hl2HTF + multiplierHTF * atrHTF
var int trendHTF = 1
trendHTF := trendHTF == -1 and close > dnHTF ? 1 : trendHTF == 1 and close < upHTF ? -1 : trendHTF
// --- Body Filter ---
useBodyFilter = input.bool(true, "Use Body Filter")
bodyMinPerc = input.float(20, "Min Body %")
bodyMaxPerc = input.float(100, "Max Body %")
bodyLen = math.abs(close - open)
candleLen = high - low
bodyPerc = (bodyLen / candleLen) * 100
bodyFilterPass = not useBodyFilter or (bodyPerc >= bodyMinPerc and bodyPerc <= bodyMaxPerc)
// --- Reward Filter ---
useReward = input.bool(true, "Use Reward 1:1 Filter")
stopLossPerc = input.float(1.5, "Stop Loss %")
reward1 = input.float(1.0, "Target 1 R/R")
reward2 = input.float(2.0, "Target 2 R/R")
reward3 = input.float(3.0, "Target 3 R/R")
rewardPass = not useReward or ((math.abs(close - tenkanHTFValue) * reward1) <= math.abs(kijunHTFValue - close))
// --- TSI Higher TF ---
tsiLong = input.int(25, "TSI Long")
tsiShort = input.int(13, "TSI Short")
tsiHTF = ta.tsi(request.security(syminfo.tickerid, higherTF, close), tsiLong, tsiShort)
// --- Lower TF Signals ---
buySignalLTF = (crossUp and candle2AboveCloud) and trendLTF == 1
sellSignalLTF = (crossDown and candle2BelowCloud) and trendLTF == -1
plotshape(crossUpHTF, title="HTF Buy Cross", location=location.belowbar, color=htfCrossColor, style=shape.triangleup, size=size.small)
plotshape(crossDownHTF, title="HTF Sell Cross", location=location.abovebar, color=htfCrossColor, style=shape.triangledown, size=size.small)
buyConfirmedRaw = (buySignalLTF and close > tenkanHTFValue and (not useHTFST or trendHTF==1)) and rewardPass and (tsiHTF > 0)
sellConfirmedRaw = (sellSignalLTF and close < tenkanHTFValue and (not useHTFST or trendHTF==-1)) and rewardPass and (tsiHTF < 0)
// --- Cooldown ---
var int barsSinceSignal = cooldownBars
barsSinceSignal += 1
buyConfirmed = buyConfirmedRaw and barsSinceSignal >= cooldownBars
sellConfirmed = sellConfirmedRaw and barsSinceSignal >= cooldownBars
if buyConfirmed or sellConfirmed
barsSinceSignal := 0
// --- Plot Final Signals ---
plotshape(buyConfirmed and bodyFilterPass, title="Buy Signal", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.small)
plotshape(sellConfirmed and bodyFilterPass, title="Sell Signal", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.small)
plotshape(buyConfirmed and not bodyFilterPass, title="Buy Signal (Filtered)", location=location.belowbar, color=bodyFilterColor, style=shape.triangleup, size=size.tiny)
plotshape(sellConfirmed and not bodyFilterPass, title="Sell Signal (Filtered)", location=location.abovebar, color=bodyFilterColor, style=shape.triangledown, size=size.tiny)
barcolor(crossUp or crossDown ? crossCandleColor : na)
barcolor(buyConfirmed and bodyFilterPass ? buyColor : sellConfirmed and bodyFilterPass ? sellColor : na)
// --- Stop & Targets ---
var float lastBuyPrice = na
var float lastSellPrice = na
var bool buyActive = false
var bool sellActive = false
f_drawLine(_price) =>
line.new(bar_index, _price, bar_index+3, _price, color=targetColor, width=2, style=line.style_dotted)
if buyConfirmed and not buyActive and not sellActive
buyActive := true
lastBuyPrice := close
line.new(bar_index, close*(1-stopLossPerc/100), bar_index+3, close*(1-stopLossPerc/100), color=stopColor, width=2, style=line.style_dotted)
f_drawLine(close*(1+reward1/100))
f_drawLine(close*(1+reward2/100))
f_drawLine(close*(1+reward3/100))
if buyActive
if low <= lastBuyPrice*(1-stopLossPerc/100) or high >= lastBuyPrice*(1+reward1/100)
buyActive := false
if sellConfirmed and not sellActive and not buyActive
sellActive := true
lastSellPrice := close
line.new(bar_index, close*(1+stopLossPerc/100), bar_index+3, close*(1+stopLossPerc/100), color=stopColor, width=2, style=line.style_dotted)
f_drawLine(close*(1-reward1/100))
f_drawLine(close*(1-reward2/100))
f_drawLine(close*(1-reward3/100))
if sellActive
if high >= lastSellPrice*(1+stopLossPerc/100) or low <= lastSellPrice*(1-reward1/100)
sellActive := false
// --- Oscillator Panel ---
showPanel = input.bool(true, "Show Oscillator Panel")
panelX = input.int(20, "Panel X Offset (Bars)")
panelY = input.int(50, "Panel Y Offset (Pixels)")
panelBgColor = input.color(color.new(color.black, 85), "Panel Background Color")
panelTextSize = input.string("normal", "Text Size", options= )
// MACD
macdFast = input.int(12)
macdSlow = input.int(26)
macdSignal= input.int(9)
= ta.macd(close, macdFast, macdSlow, macdSignal)
macdBull = macdLine > signalLine
// RSI
rsiLen = input.int(14)
rsiVal = ta.rsi(close, rsiLen)
rsiBull = rsiVal > 50
// TSI
tsiVal = ta.tsi(close, 25, 13)
tsiBull = tsiVal > 0
// Divergence detection (RSI, MACD, TSI)
leftBars = input.int(2)
rightBars = input.int(2)
rsiLow = ta.pivotlow(rsiVal, leftBars, rightBars)
rsiHigh = ta.pivothigh(rsiVal, leftBars, rightBars)
bullDivRSI = not na(rsiLow) and low < low and rsiVal > rsiVal
bearDivRSI = not na(rsiHigh) and high > high and rsiVal < rsiVal
macdLow = ta.pivotlow(macdLine, leftBars, rightBars)
macdHigh = ta.pivothigh(macdLine, leftBars, rightBars)
bullDivMACD = not na(macdLow) and low < low and macdLine > macdLine
bearDivMACD = not na(macdHigh) and high > high and macdLine < macdLine
tsiLow = ta.pivotlow(tsiVal, leftBars, rightBars)
tsiHigh = ta.pivothigh(tsiVal, leftBars, rightBars)
bullDivTSI = not na(tsiLow) and low < low and tsiVal > tsiVal
bearDivTSI = not na(tsiHigh) and high > high and tsiVal < tsiVal
// Plot divergence on chart
plotshape(bullDivRSI, style=shape.labelup, text="R d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivRSI, style=shape.labeldown, text="R d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
plotshape(bullDivMACD, style=shape.labelup, text="M d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivMACD, style=shape.labeldown, text="M d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
plotshape(bullDivTSI, style=shape.labelup, text="T d+", color=color.lime, textcolor=color.white, location=location.belowbar, size=size.tiny)
plotshape(bearDivTSI, style=shape.labeldown, text="T d-", color=color.red, textcolor=color.white, location=location.abovebar, size=size.tiny)
// Panel
var label panelLabel = label.new(bar_index + panelX, close, "", xloc=xloc.bar_index, yloc=yloc.price, style=label.style_label_left, color=panelBgColor, size=panelTextSize)
if showPanel
label.set_xy(panelLabel, bar_index + panelX, close + panelY * syminfo.mintick)
label.set_text(panelLabel, "MACD: " + (macdBull ? "↑" : "↓") + (bullDivMACD ? " d+" : bearDivMACD ? " d-" : "") + " " +
"RSI : " + (rsiBull ? "↑" : "↓") + (bullDivRSI ? " d+" : bearDivRSI ? " d-" : "") + " " +
"TSI : " + (tsiBull ? "↑" : "↓") + (bullDivTSI ? " d+" : bearDivTSI ? " d-" : "") + " " +
"ST : " + (trendLTF==1 ? "↑" : "↓"))
label.set_textcolor(panelLabel, color.white)
// ====================
// === CODE BLOCK 2: FluidTrades - SMC Lite (Light) ===
// ====================
// === SETTINGS ===
swing_length = input.int(10, "Swing High/Low Length", minval=1, maxval=50)
history_keep = input.int(20, "History To Keep", minval=5, maxval=50)
box_width = input.float(2.5, "Supply/Demand Box Width", minval=1, maxval=10, step=0.5)
show_labels = input.bool(false, "Show Price Action Labels")
supply_color = input.color(color.new(#EDEDED,70), "Supply Color")
supply_outline = input.color(color.new(color.white,75), "Supply Outline")
demand_color = input.color(color.new(#00FFFF,70), "Demand Color")
demand_outline = input.color(color.new(color.white,75), "Demand Outline")
bos_color = input.color(color.white, "BOS Label Color")
poi_color = input.color(color.white, "POI Label Color")
label_color = input.color(color.black, "Swing Label Color")
// === FUNCTIONS ===
f_add_pop(arr, val) =>
array.unshift(arr, val)
array.pop(arr)
f_draw_swing_label(values, swing_type) =>
var string txt = na
if swing_type == 1
txt := array.get(values,0) >= array.get(values,1) ? "HH" : "LH"
label.new(bar_index - swing_length, array.get(values,0), txt, style=label.style_label_down, textcolor=label_color, color=color.new(label_color,100), size=size.tiny)
else
txt := array.get(values,0) >= array.get(values,1) ? "HL" : "LL"
label.new(bar_index - swing_length, array.get(values,0), txt, style=label.style_label_up, textcolor=label_color, color=color.new(label_color,100), size=size.tiny)
f_check_overlap(new_poi, box_arr, atr) =>
ok = true
for i=0 to array.size(box_arr)-1
b = array.get(box_arr,i)
top = box.get_top(b)
bot = box.get_bottom(b)
mid = (top+bot)/2
threshold = atr*2
if new_poi >= mid - threshold and new_poi <= mid + threshold
ok := false
break
ok
f_create_box(vals, bn_arr, box_arr, label_arr, type_box, atr) =>
atr_buf = atr*(box_width/10)
left = array.get(bn_arr,0)
right = bar_index
var float top=0.0
var float bottom=0.0
var float poi=0.0
if type_box==1
top := array.get(vals,0)
bottom := top - atr_buf
else
bottom := array.get(vals,0)
top := bottom + atr_buf
poi := (top+bottom)/2
if f_check_overlap(poi, box_arr, atr)
box.delete(array.get(box_arr,array.size(box_arr)-1))
f_add_pop(box_arr, box.new(left, top, right, bottom, border_color=type_box==1?supply_outline:demand_outline,
bgcolor=type_box==1?supply_color:demand_color, extend=extend.right, text=type_box==1?"SUPPLY":"DEMAND",
text_halign=text.align_center, text_valign=text.align_center, text_color=poi_color, text_size=size.small, xloc=xloc.bar_index))
box.delete(array.get(label_arr,array.size(label_arr)-1))
f_add_pop(label_arr, box.new(left, poi, right, poi, border_color=color.new(poi_color,90),
bgcolor=color.new(poi_color,90), extend=extend.right, text="POI", text_halign=text.align_left, text_valign=text.align_center, text_color=poi_color, text_size=size.small, xloc=xloc.bar_index))
f_to_bos(box_arr, bos_arr, label_arr, type_box) =>
for i=0 to array.size(box_arr)-1
b = array.get(box_arr,i)
lvl = type_box==1? box.get_top(b) : box.get_bottom(b)
cond = type_box==1? close>=lvl : close<=lvl
if cond
cbox = box.copy(b)
f_add_pop(bos_arr, cbox)
mid = (box.get_top(b)+box.get_bottom(b))/2
box.set_top(cbox, mid)
box.set_bottom(cbox, mid)
box.set_extend(cbox, extend.none)
box.set_right(cbox, bar_index)
box.set_text(cbox, "BOS")
box.set_text_color(cbox, bos_color)
box.set_text_size(cbox, size.small)
box.set_text_halign(cbox, text.align_center)
box.set_text_valign(cbox, text.align_center)
box.delete(b)
box.delete(array.get(label_arr,i))
f_extend(box_arr) =>
for i=0 to array.size(box_arr)-1
box.set_right(array.get(box_arr,i), bar_index+100)
// === CALCULATIONS ===
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_vals = array.new_float(5,0.0)
var swing_low_vals = array.new_float(5,0.0)
var swing_high_bn = array.new_int(5,0)
var swing_low_bn = array.new_int(5,0)
var supply_boxes = array.new_box(history_keep, na)
var demand_boxes = array.new_box(history_keep, na)
var supply_poi = array.new_box(history_keep, na)
var demand_poi = array.new_box(history_keep, na)
var bos_supply = array.new_box(5, na)
var bos_demand = array.new_box(5, na)
// NEW SWING HIGH
if not na(swing_high)
f_add_pop(swing_high_vals, swing_high)
f_add_pop(swing_high_bn, bar_index )
if show_labels
f_draw_swing_label(swing_high_vals,1)
f_create_box(swing_high_vals, swing_high_bn, supply_boxes, supply_poi, 1, atr)
// NEW SWING LOW
if not na(swing_low)
f_add_pop(swing_low_vals, swing_low)
f_add_pop(swing_low_bn, bar_index )
if show_labels
f_draw_swing_label(swing_low_vals,-1)
f_create_box(swing_low_vals, swing_low_bn, demand_boxes, demand_poi, -1, atr)
f_to_bos(supply_boxes, bos_supply, supply_poi, 1)
f_to_bos(demand_boxes, bos_demand, demand_poi, -1)
f_extend(supply_boxes)
f_extend(demand_boxes)
//@version=6
length = input.int(9, minval=1)
src = input(close, title="Source")
e1 = ta.ema(src, length)
e2 = ta.ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=#43A047)
WAE SHK Teyla 3MDesigned to detect high-pressure market moments, where momentum and volume converge to trigger explosive moves. Ideal as an entry trigger in scalping strategies, especially when paired with STC and ST-MA.
Futures Rotation Strategy - Overlay (Tables & Signals)This strategy focuses on the laggards and leaders of the market indices and does some weird stuff and determines which to long or short.
Estrategia REGLA DE OROit is an indicator that allows you to design the nearest support and resistance + buy and sell alert.
VXN RSI VWAP basedThis indicator is based on other open source scripts. It's designed for trading Nasdaq futures (NQ and MNQ). It generates trading signals based on the Relative Strength Index (RSI) calculated from multiple VWAP-based price series with different lengths. The VXN index (CBOE Nasdaq Volatility Index) is used to filter signals via background color.
- RSI Signals: Bullish signals occur when any RSI crosses above the 20 level (oversold), and bearish signals occur when any RSI crosses below the 80 level (overbought). These are plotted as green/red circles.
- VXN Filter: Traders should only take bullish signals (RSI > 20) when the background is green (VXN 1-period EMA < 200-period SMA, indicating bullish sentiment) and bearish signals (RSI < 80) when the background is red (VXN 1-period EMA > 200-period SMA, indicating bearish sentiment).
- Additional Signals: Optional signals are generated when all RSI lines are simultaneously bullish (green) or bearish (red), plotted as triangles if enabled.
Usage: Apply this indicator to a Nasdaq futures chart (NQ or MNQ) in TradingView. Wait for RSI crossovers above 20 when the background is green for long trades, and crossunders below 80 when the background is red for short trades. Adjust VWAP lengths, RSI length, and VXN settings to suit your trading strategy.
10 Points from 9 EMA//@version=6
indicator("10 Points from 9 EMA", overlay=true)
// Calculate the 9-period EMA
ema9 = ta.ema(close, 9)
// Define the levels based on the EMA
tenPointsAboveEMA = ema9 + 10
tenPointsBelowEMA = ema9 - 10
// Create labels based on the distance from EMA
if (high >= tenPointsAboveEMA or low <= tenPointsBelowEMA)
label.new(bar_index, close, "10", color=color.blue, textcolor=color.white, style=label.style_label_up, size=size.small)
Multi-EMA System (9,34,50,200)This script gives you:
Yellow line: 9 EMA (your fastest momentum indicator)
Orange line: 34 EMA (good for short-term trend confirmation)
Blue line: 50 EMA (classic medium-term trend line)
Red line: 200 EMA (the big daddy - long-term trend and major support/resistance)
I made the 200 EMA a bit thicker since it's usually the most significant level. You can adjust the colors in the script if you prefer different ones.
Near-Hammer & Near-Inverted-Hammer by Steph70 percent of wick is bigger than other side of wick alert indicator
VXN VWAP & TWAPThis indicator is based on other open source scripts. It's designed for trading Nasdaq futures (NQ and MNQ). It provides directional guidance by combining the VXN index (CBOE Nasdaq Volatility Index) with VWAP and TWAP.
- VXN: Helps assess market volatility and sentiment for Nasdaq futures. A 1-period EMA and 200-period SMA of VXN are used to determine bullish (EMA < SMA) or bearish (EMA > SMA) conditions, visualized via background color.
- VWAP: Calculates the volume-weighted average price, serving as a dynamic support/resistance level. Its direction (rising or falling) indicates bullish or bearish momentum.
- TWAP: Calculates the time-weighted average price over a user-defined anchor period, useful for identifying average price trends over time.
Usage: Traders should align their trades with the direction of VWAP and TWAP (green for bullish, red for bearish) and use the VXN EMA vs. SMA crossover to confirm market sentiment (green background for bullish, red for bearish).
10 Points Mark on Bars with Wicks Why It Matters
- Precision: Traders using fixed-point strategies (e.g., targeting 10-point gains) rely on identifying such bars.
- Volatility gauge: A 10-point bar can indicate a sudden price move, useful for momentum trading.
10 Points Mark on BarsWhy It Matters
- Precision: Traders using fixed-point strategies (e.g., targeting 10-point gains) rely on identifying such bars.
- Volatility gauge: A 10-point bar can indicate a sudden price move, useful for momentum trading.
Multi-Factor Crypto SignalsMulti-Factor Crypto Signals - Advanced Technical Indicator**
📊 **General Description**
The Multi-Factor Crypto Signals is an advanced technical indicator designed specifically for cryptocurrency analysis. This system combines 6 independent technical factors to generate more accurate and reliable buy and sell signals, significantly reducing the false positives common in simpler indicators.
🎯 **Technical Methodology**
**Theoretical Foundation**
This indicator is built on the principles of multi-factor technical analysis, where multiple independent indicators must align before generating a signal. This approach is widely recognized in financial literature as more effective than standalone indicators.
**Analyzed Factors**
1. **Time Momentum Oscillator (TMO)**
- **Function**: Detects overbought and oversold conditions
- **Calculation**: Based on the sum of price movements relative to the previous period
- **Application**: Identifies potential reversal points
- **Settings**: Length (14), Calculation Period (5), Smoothing (3)
2. **Customized MACD**
- **Function**: Analyzes momentum and trend changes
- **Modifications**: Optimized periods for crypto (8, 21, 5)
- **Application**: Detects bullish/bearish crossovers and histogram momentum
- **Advantage**: More responsive than traditional MACD (12, 26, 9)
3. **Volume Analysis**
- **Function**: Confirms the strength of price movements
- **Method**: Current volume vs. moving average with a multiplier
- **Application**: Filters signals without volume support
- **Settings**: MA Period (20), Multiplier (1.5)
4. **DXY Filter (U.S. Dollar Index)**
- **Function**: Considers the strength/weakness of the U.S. dollar
- **Correlation**: Weak DXY → bullish for crypto / Strong DXY → bearish for crypto
- **Data**: Uses TVC:DXY as the source
- **Settings**: 21-period EMA to determine trend
5. **Stochastic RSI**
- **Function**: A more sensitive version of RSI for reversals
- **Advantage**: Anticipates movements before traditional RSI
- **Levels**: Oversold < 20, Overbought > 80
- **Settings**: %K (14), %D (3)
6. **Precision Indicators**
- **Williams %R**: Momentum in volatile markets (-80/-20)
- **Money Flow Index (MFI)**: RSI with volume incorporation (20/80)
- **Bollinger Bands**: Price extremes with reversal (20, 2.0)
⚙️ **Settings and Parameters**
**Basic Settings**
- **TMO Length**: 14 (periods for TMO calculation)
- **TMO Calc Length**: 5 (periods for momentum)
- **TMO Smoothing**: 3 (line smoothing)
- **TMO Overbought/Oversold**: 6/-6 (entry levels)
**MACD Settings**
- **Fast Length**: 8 (fast EMA)
- **Slow Length**: 21 (slow EMA)
- **Signal Length**: 5 (signal line)
**Volume Settings**
- **Volume MA Length**: 20 (volume moving average)
- **High Volume Threshold**: 1.5 (multiplier for high volume)
**DXY Settings**
- **Use DXY Filter**: true/false (enable/disable filter)
- **DXY EMA Length**: 21 (EMA periods)
**Precision Settings**
- **Stochastic %K**: 14 (stochastic period)
- **Williams %R Length**: 14 (Williams period)
- **MFI Length**: 14 (MFI period)
- **BB Length/Multiplier**: 20/2.0 (Bollinger Bands)
**Main Setting**
- **Minimum Factors Required**: 3-6 (minimum factors to generate a signal)
🎨 **Visual Interpretation**
**Main Signals**
- 🚀 **Strong Buy (Large Green Arrow)**: 5+ factors aligned for a buy
- 🟢 **Buy Signal (Normal Green Arrow)**: 3-4 factors aligned for a buy
- 💥 **Strong Sell (Large Red Arrow)**: 5+ factors aligned for a sell
- 🔴 **Sell Signal (Normal Red Arrow)**: 3-4 factors aligned for a sell
**Warning Signals**
- ⚠️ **Yellow Triangle**: 2 bullish factors (approaching a buy signal)
- ⚠️ **Orange Triangle**: 2 bearish factors (approaching a sell signal)
📈 **How to Use**
**Step 1: Initial Setup**
- Add the indicator to the chart
- Adjust "Minimum Factors Required" (recommended: 3 for beginners, 4-5 for experienced traders)
- Configure periods based on your trading style
**Step 2: Signal Interpretation**
- **Strong Signals**: Wait for large arrows (5+ factors) for higher reliability
- **Normal Signals**: Normal arrows (3-4 factors) for frequent opportunities
- **Confirmation**: Check the status table to see which factors are active
**Step 3: Risk Management**
- **Stop Loss**: Place stops below/above supports/resistances
- **Take Profit**: Use Fibonacci levels or technical resistances
- **Timeframes**: Test across multiple timeframes for confirmation
**Recommended Settings by Profile**
- **Conservative Trader**:
- Minimum Factors: 4-5
- Use DXY Filter: true
- Use Volume Confirmation: true
- **Aggressive Trader**:
- Minimum Factors: 3
- Shorter indicator periods
- Focus on higher-frequency signals
- **Scalper**:
- TMO shorter periods (10, 3, 2)
- Faster MACD (5, 13, 3)
- Timeframes: 1m, 5m, 15m
🔔 **Available Alerts**
- 🟢 **Multi-Factor Buy**: Normal buy signal
- 🔴 **Multi-Factor Sell**: Normal sell signal
- 🚀 **Strong Buy**: Strong buy signal (5+ factors)
- 💥 **Strong Sell**: Strong sell signal (5+ factors)
Usage Recommendations**
- **Combine with Fundamental Analysis**: Use as a complement, not a standalone tool
- **Test in Paper Trading**: Practice before using real capital
- **Adjust Parameters**: Optimize for specific assets and timeframes
- **Risk Management**: Always use stops and size positions appropriately
📚 **Scientific Basis and References**
**Academic Foundation**
- **Multi-Factor Technical Analysis**: Based on studies by Murphy (1999) and Pring (2002)
- **Momentum Oscillators**: Grounded in Wilder (1978) and Lane (1984)
- **Confirmation Theory**: Dow Theory and convergence/divergence principles
- **Volume Analysis**: Concepts from Granville (1963) and Williams (1973)
**Implemented Innovations**
- **Crypto-Specific Combination**: Parameters optimized for high volatility
- **DXY Filter**: Incorporates crypto-dollar inverse correlation
- **Scoring System**: Quantitative approach to reduce subjectivity
- **Advanced Visual Interface**: Real-time feedback on factor status
💡 **Advanced Tips**
**Market Optimization**
- **Bitcoin/Ethereum**: Use default settings
- **Low-Cap Altcoins**: Increase sensitivity (shorter periods)
- **Stablecoins**: Not recommended (low volatility)
**Combination with Other Indicators**
- **Supports/Resistances**: Use for entry/exit timing
- **Moving Averages**: Combine with long-term trend
- **Volume Profile**: Confirm with high-activity levels
**Backtesting**
- Test in periods of high and low volatility
- Compare performance across different timeframes
- Adjust parameters based on historical results
10 Points Bar from Open to CloseWhy It Matters
- Precision: Traders using fixed-point strategies (e.g., targeting 10-point gains) rely on identifying such bars.
- Volatility gauge: A 10-point bar can indicate a sudden price move, useful for momentum trading.
Cilbaga Indikator Tables General Purpose
This indicator provides decision support by multidimensionally analyzing the technical information of an asset (stocks, crypto, forex, etc.) with personalized visual charts and signals. It supports both trend tracking and multi-timeframe analysis. Key Features and Functions Multi EMA/SMA Analysis Displays Exponential Moving Averages (EMA) and Simple Moving Averages (SMA) on monthly, weekly, and daily bases.
Indicates whether the price is above or below these averages with / symbols.
Generates signals from crossovers, such as EMA50/200, EMA5/13, and EMA5/21.
Crossover Signals EMA crossovers (e.g., 50 and 200) are labeled as "BUY" or "SELL" signals.
Shows how long ago the crossover occurred (e.g., "5 days ago").
These signals can be displayed as labels on the chart (optional).
T3 Indicator and T3 Fibo The T3 indicator, an advanced smoothing tool for trend tracking, generates BUY/SELL signals based on direction (up/down).
T3 Fibo is an alternative T3 version calculated with different weights (e.g., 0.618 golden ratio).
Both are drawn with colors (green = bullish, red = bearish).
Multi-Timeframe Analysis Displays trend status based on the 144 EMA across different timeframes (1D, 15m, 1H, 4H, daily, etc.).
Provides users with "Long" (buy) or "Short" (sell) signals for short- and long-term trend perspectives.
Technical Indicator Signal Unit (Signal Table)
Combines the status of the following in a table: Trend: 55 EMA and 200 EMA
MACD: Positive or negative?
Ichimoku: Is the price above or below the cloud?
OBV (On-Balance Volume): Is the volume trend upward?
RSI: Overbought/oversold levels
Stoch RSI: Short-term momentum
Bollinger Bands % (BB%): Price position relative to the bands
CCI: Overbought/oversold and momentum
RS Rating: Relative strength compared to a selected index (e.g., BIST:XU100)
ATR(STOP!): Volatility-based support/resistance levels
Visual Presentation
Three customizable tables provide: EMA/SMA Status and Crossovers
Summary Table of All Signals
Multi-Timeframe Trend (EzAlgo)
Users can adjust the content, colors, transparency, and visibility of the tables.
User Customization Options Enable/disable lines, labels, and tables.
Customize visual settings such as color, position, and size.
Select a custom benchmark for RS Rating (e.g., SP500, BIST100).
Adjust T3 parameters (length, volume factor).
Who Is This Indicator For? Ideal for those who rely on technical analysis and trend tracking.
Suitable for day traders and medium- to long-term investors monitoring multiple timeframes.
Acts as a decision-support system for those who want to view signals from multiple indicators in one place.
In Summary:
The "Cilbaga Indicator Tables" is a user-friendly decision-support indicator with multi-timeframe and multi-indicator analysis, supported by visual charts. It combines trend, momentum, and relative strength analyses in one place to inform buy/sell decisions.
TitanFlow Position CalculatorTitanFlow Position Calculator - Professional Risk Management Tool
Transform your trading with precision position sizing and advanced risk management
The TitanFlow Position Calculator is a comprehensive Pine Script indicator designed for serious traders who demand professional-grade risk management tools. Whether you're trading forex, commodities, indices, or crypto, this calculator ensures you never risk more than intended while maximizing your profit potential.
🎯 Key Features:
SMART POSITION SIZING
Automatic lot size calculation based on your risk parameters
Support for percentage risk, fixed amount, or losing streak buffer modes
Real-time position size updates as market conditions change
Double-up mode for aggressive trading strategies
MULTI-ASSET SUPPORT
Pre-configured settings for Forex Major/Minor pairs
Commodities: Gold, Silver, Oil with accurate pip values
Stock indices with proper contract specifications
Cryptocurrency trading support
Custom instrument configuration for any asset
ADVANCED RISK MANAGEMENT
Visual risk level categorization (Conservative, Moderate, Aggressive, Extreme)
Color-coded risk warnings with threshold alerts
Margin requirement calculations with leverage integration
Take profit level planning with lot distribution
PROFESSIONAL THEMES
TitanFlow Dark theme matching the professional trading platform
TitanFlow Light theme for bright chart environments
Classic dark/light themes for traditional traders
Full custom colour control for personalized setups
COMPREHENSIVE LEVERAGE SUPPORT
Complete leverage options from 1:1 to 1:500 including:
1:1, 1:10, 1:15, 1:20, 1:30, 1:50, 1:100, 1:200, 1:300, 1:400, 1:500
📊 What You'll See:
REAL-TIME CALCULATIONS
Position size in lots displayed prominently
Risk level percentage with color coding
Margin requirements in your account currency
Stop loss distance in pips
Take profit distribution across multiple levels
CLEAN INFORMATION TABLE
Account balance and currency display
Current risk amount being wagered
Calculated position size and margin needs
Risk categorization with visual indicators
Leverage ratio confirmation
SMART ALERTS
Extreme risk warnings (>5% per trade)
Large position alerts (>10 lots)
High margin usage notifications (>50% account)
Real-time risk assessment updates
🚀 Take Your Trading Further with TitanFlow
Want more than just position sizing?
Visit titanflow.co.uk to discover the complete TitanFlow trading ecosystem:
✅ Advanced Trading Dashboard - Comprehensive portfolio tracking and analytics
✅ Trade Journal Integration - Log and analyze every trade automatically
✅ AI-Powered Coaching - Get personalized trading insights and recommendations
✅ Monthly Performance Reports - Detailed analytics delivered to your inbox
✅ Risk Management Suite - Professional tools for serious traders
✅ Trading Calendar - Never miss important market events
✅ Community Access - Connect with successful traders worldwide
Special Offer: TradingView users get exclusive access to premium features. Transform your trading from guesswork to systematic success. coming soon
🎨 Customization Options:
Theme Selection
Choose from 5 professional themes
Customize every colour element
Match your chart aesthetic perfectly
Professional branding options
Display Controls
Position table in any corner
Show/hide alerts and warnings
Adjustable text sizes
Clean, distraction-free interface
💡 Perfect For:
Day Traders who need quick position sizing decisions
Swing Traders planning multi-level exits
Scalpers requiring precise risk control
Portfolio Managers overseeing multiple accounts
Risk Managers monitoring exposure levels
Trading Educators teaching proper risk management
🚀 How to Use:
Set Your Account - Enter balance and currency
Choose Risk Mode - Percentage (recommended 1-2%), fixed amount, or losing streak buffer
Configure Instrument - Select asset type or use custom settings
Set Stop Loss - Enter your stop distance in pips
Read Results - Get instant position size and risk analysis
⚠️ Risk Management Excellence:
This calculator embodies the core principle that successful trading is about risk management, not just profit hunting. By using proper position sizing, you'll:
Survive losing streaks with capital intact
Compound profits systematically
Sleep better knowing your risk is controlled
Build consistent trading habits
Protect your trading capital long-term
Ready to elevate your entire trading operation? Start with this position calculator, then visit titanflow.co.uk to unlock the full potential of systematic, professional trading.
This indicator is part of the TitanFlow trading ecosystem. titanflow.co.uk coming soon here you'll be able to obtain the complete professional trading platform.