Volume weighted Forex Overwiew True Strenght IndexAdding volume weighting to the FOTSI strategy improves its effectiveness by making the indicator more sensitive to periods of high market activity. Here’s how:
Market Relevance: Futures volume reflects institutional and large trader participation. When volume is high, price moves are more likely to be meaningful and less likely to be noise.
Dynamic Weighting: By multiplying each currency’s momentum by its normalized futures volume, the indicator gives more weight to currencies that are actively traded at that moment, making signals more robust.
Filtering Out Noise: Low-volume periods are down-weighted, reducing the impact of illiquid or less relevant price changes.
Better Timing: Signals generated during high-volume periods are more likely to coincide with real market moves, improving entry and exit timing.
Indicateurs et stratégies
EMA 20/40 Crossover//@version=5
indicator(title="EMA 20/40 Crossover", shorttitle="EMA Cross", overlay=true)
// Calculate EMAs
ema20 = ta.ema(close, 20)
ema40 = ta.ema(close, 40)
// Detect crossovers
bullCross = ta.crossover(ema20, ema40) // EMA20 crosses above EMA40 (Buy signal)
bearCross = ta.crossunder(ema20, ema40) // EMA20 crosses below EMA40 (Sell signal)
// Plot EMA lines
plot(ema20, color=color.blue, title="EMA 20", linewidth=2)
plot(ema40, color=color.red, title="EMA 40", linewidth=2)
// Plot signals
plotshape(series=bullCross, title="Buy Signal", location=location.belowbar, style=shape.labelup, size=size.small, color=color.green, text="BUY")
plotshape(series=bearCross, title="Sell Signal", location=location.abovebar, style=shape.labeldown, size=size.small, color=color.red, text="SELL")
// Alert setup (optional)
alertcondition(bullCross, title="EMA Bullish Cross", message="EMA 20 crossed above EMA 40 - BUY!")
alertcondition(bearCross, title="EMA Bearish Cross", message="EMA 20 crossed below EMA 40 - SELL!")
Adaptive Jump Moving AverageAdaptive Jump Moving Average - Description
This indicator solves the classic moving average lag problem during significant price moves. Traditional MAs (like the 200-day) take forever to catch up after a major drop or rally because they average across all historical periods equally.
How it works:
Tracks price smoothly during normal market conditions
When price moves 20%+ away from the MA, it immediately "resets" to the current price level
Treats that new level as the baseline and continues smooth tracking from there
Advantages over normal MA:
No lag on major moves: A 40% crash doesn't get diluted over 200 days - the MA instantly adapts
Reduces false signals: You won't get late "death cross" signals months after a crash already happened
Better support/resistance: The MA stays relevant to current price action instead of reflecting outdated levels
Keeps the smoothness: During normal volatility, it behaves like a traditional MA without the noise of shorter periods
Double Top/Bottom Screener V1//@version=6
indicator("Double Top/Bottom Screener", overlay=true, max_lines_count=500)
// Inputs
leftBars = input.int(5, "Left Bars")
rightBars = input.int(5, "Right Bars")
tolerance = input.float(0.02, "Max Difference (e.g., 0.02 for 2 cents)", step=0.01)
atrLength = input.int(14, "ATR Length for Normalized Distance", minval=1)
requiredPeaks = input.int(3, "Required Identical Peaks", minval=2, maxval=5)
// Declarations of persistent variables and arrays
var array resistanceLevels = array.new(0)
var array resistanceCounts = array.new(0)
var array supportLevels = array.new(0)
var array supportCounts = array.new(0)
var array resLines = array.new(0)
var array supLines = array.new(0)
var bool hasDoubleTop = false
var bool hasDoubleBottom = false
var float doubleTopLevel = na
var float doubleBottomLevel = na
var int todayStart = na
var bool isNewDay = false
// Step 1: Identify Swing Highs/Lows
swingHigh = ta.pivothigh(high, leftBars, rightBars)
swingLow = ta.pivotlow(low, leftBars, rightBars)
// Today's premarket start (04:00 AM ET)
if dayofmonth != dayofmonth
todayStart := timestamp(syminfo.timezone, year, month, dayofmonth, 4, 0, 0)
isNewDay := true
else
isNewDay := false
// Clear arrays and reset flags only once at premarket start
if isNewDay and time >= todayStart
array.clear(resistanceLevels)
array.clear(supportLevels)
array.clear(resistanceCounts)
array.clear(supportCounts)
array.clear(resLines)
array.clear(supLines)
hasDoubleTop := false
hasDoubleBottom := false
doubleTopLevel := na
doubleBottomLevel := na
// Add new swings and check for identical peaks
if not na(swingHigh) and time >= todayStart
bool isEqualHigh = false
int peakIndex = -1
float prevLevel = na
if array.size(resistanceLevels) > 0
for i = 0 to array.size(resistanceLevels) - 1
prevLevel := array.get(resistanceLevels, i)
if math.abs(swingHigh - prevLevel) <= tolerance
isEqualHigh := true
peakIndex := i
break
if isEqualHigh and peakIndex >= 0
array.set(resistanceCounts, peakIndex, array.get(resistanceCounts, peakIndex) + 1)
if array.get(resistanceCounts, peakIndex) == requiredPeaks
hasDoubleTop := true
doubleTopLevel := prevLevel
else
array.push(resistanceLevels, swingHigh)
array.push(resistanceCounts, 1)
line newResLine = line.new(bar_index - rightBars, swingHigh, bar_index, swingHigh, color=color.red, width=2, extend=extend.right)
array.push(resLines, newResLine)
if not na(swingLow) and time >= todayStart
bool isEqualLow = false
int peakIndex = -1
float prevLevel = na
if array.size(supportLevels) > 0
for i = 0 to array.size(supportLevels) - 1
prevLevel := array.get(supportLevels, i)
if math.abs(swingLow - prevLevel) <= tolerance
isEqualLow := true
peakIndex := i
break
if isEqualLow and peakIndex >= 0
array.set(supportCounts, peakIndex, array.get(supportCounts, peakIndex) + 1)
if array.get(supportCounts, peakIndex) == requiredPeaks
hasDoubleBottom := true
doubleBottomLevel := prevLevel
else
array.push(supportLevels, swingLow)
array.push(supportCounts, 1)
line newSupLine = line.new(bar_index - rightBars, swingLow, bar_index, swingLow, color=color.green, width=2, extend=extend.right)
array.push(supLines, newSupLine)
// Monitor and remove broken levels/lines; reset pattern if the equal level breaks
if array.size(resistanceLevels) > 0
for i = array.size(resistanceLevels) - 1 to 0
float level = array.get(resistanceLevels, i)
if close > level
line.delete(array.get(resLines, i))
array.remove(resLines, i)
array.remove(resistanceLevels, i)
array.remove(resistanceCounts, i)
if level == doubleTopLevel
hasDoubleTop := false
doubleTopLevel := na
if array.size(supportLevels) > 0
for i = array.size(supportLevels) - 1 to 0
float level = array.get(supportLevels, i)
if close < level
line.delete(array.get(supLines, i))
array.remove(supLines, i)
array.remove(supportLevels, i)
array.remove(supportCounts, i)
if level == doubleBottomLevel
hasDoubleBottom := false
doubleBottomLevel := na
// Limit arrays (after removals)
if array.size(resistanceLevels) > 10
line oldLine = array.shift(resLines)
line.delete(oldLine)
array.shift(resistanceLevels)
array.shift(resistanceCounts)
if array.size(supportLevels) > 10
line oldLine = array.shift(supLines)
line.delete(oldLine)
array.shift(supportLevels)
array.shift(supportCounts)
// Pattern Signal: 1 only if the exact required number of peaks is met
patternSignal = (hasDoubleTop or hasDoubleBottom) and (array.size(resistanceCounts) > 0 and array.get(resistanceCounts, array.size(resistanceCounts) - 1) == requiredPeaks or array.size(supportCounts) > 0 and array.get(supportCounts, array.size(supportCounts) - 1) == requiredPeaks) ? 1 : 0
// New: Nearest Double Level Price
var float nearestDoubleLevel = na
if hasDoubleTop and not na(doubleTopLevel)
nearestDoubleLevel := doubleTopLevel
if hasDoubleBottom and not na(doubleBottomLevel)
nearestDoubleLevel := na(nearestDoubleLevel) ? doubleBottomLevel : (math.abs(close - doubleBottomLevel) < math.abs(close - nearestDoubleLevel) ? doubleBottomLevel : nearestDoubleLevel)
// New: Distance to Nearest Level (using ATR for normalization)
var float atr = ta.atr(atrLength)
var float distanceNormalizedATR = na
if not na(nearestDoubleLevel) and not na(atr) and atr > 0
distanceNormalizedATR := math.abs(close - nearestDoubleLevel) / atr
// Optional Bounce Signal (for reference)
bounceSignal = 0
if array.size(resistanceLevels) > 0
for i = 0 to array.size(resistanceLevels) - 1
float level = array.get(resistanceLevels, i)
if low <= level and high >= level and close < level
bounceSignal := 1
if array.size(supportLevels) > 0
for i = 0 to array.size(supportLevels) - 1
float level = array.get(supportLevels, i)
if high >= level and low <= level and close > level
bounceSignal := 1
// Outputs
plot(patternSignal, title="Pattern Signal", color=patternSignal == 1 ? color.purple : na, style=plot.style_circles)
plot(bounceSignal, title="Bounce Signal", color=bounceSignal == 1 ? color.yellow : na, style=plot.style_circles)
plot(nearestDoubleLevel, title="Nearest Double Level Price", color=color.orange)
plot(distanceNormalizedATR, title="Normalized Distance (ATR)", color=color.green)
bgcolor(patternSignal == 1 ? color.new(color.purple, 80) : na)
if patternSignal == 1 and barstate.isconfirmed
alert("Double Pattern detected on " + syminfo.ticker + " at " + str.tostring(close), alert.freq_once_per_bar_close)
if barstate.islast
var table infoTable = table.new(position.top_right, 1, 4, bgcolor=color.new(color.black, 50))
table.cell(infoTable, 0, 0, "Pattern: " + str.tostring(patternSignal), bgcolor=patternSignal == 1 ? color.purple : color.gray)
table.cell(infoTable, 0, 1, "Bounce: " + str.tostring(bounceSignal), bgcolor=bounceSignal == 1 ? color.yellow : color.gray)
table.cell(infoTable, 0, 2, "Level: " + str.tostring(nearestDoubleLevel, "#.##"), bgcolor=color.orange)
table.cell(infoTable, 0, 3, "ATR Dist: " + str.tostring(distanceNormalizedATR, "#.##"), bgcolor=color.green)
Highlight Selected WeekdaysThis indicator allows you to highlight selected trading days of the week directly on the chart with customizable colors.
Features:
Choose which weekdays to highlight (Sunday through Saturday).
Assign a different background color to each selected day.
Option to calculate the weekday based on the daily close or the active bar’s time.
Double Top/Bottom Screener 3-5 peaks //@version=6
indicator("Double Top/Bottom Screener", overlay=true, max_lines_count=500)
// Inputs
leftBars = input.int(5, "Left Bars")
rightBars = input.int(5, "Right Bars")
tolerance = input.float(0.02, "Max Difference (e.g., 0.02 for 2 cents)", step=0.01)
atrLength = input.int(14, "ATR Length for Normalized Distance", minval=1)
maxPeaks = input.int(5, "Max Identical Peaks", minval=2, maxval=5)
// Declarations of persistent variables and arrays
var array resistanceLevels = array.new(0)
var array resistanceCounts = array.new(0)
var array supportLevels = array.new(0)
var array supportCounts = array.new(0)
var array resLines = array.new(0)
var array supLines = array.new(0)
var bool hasDoubleTop = false
var bool hasDoubleBottom = false
var float doubleTopLevel = na
var float doubleBottomLevel = na
var int todayStart = na
var bool isNewDay = false
// Step 1: Identify Swing Highs/Lows
swingHigh = ta.pivothigh(high, leftBars, rightBars)
swingLow = ta.pivotlow(low, leftBars, rightBars)
// Today's premarket start (04:00 AM ET)
if dayofmonth != dayofmonth
todayStart := timestamp(syminfo.timezone, year, month, dayofmonth, 4, 0, 0)
isNewDay := true
else
isNewDay := false
// Clear arrays and reset flags only once at premarket start
if isNewDay and time >= todayStart
array.clear(resistanceLevels)
array.clear(supportLevels)
array.clear(resistanceCounts)
array.clear(supportCounts)
array.clear(resLines)
array.clear(supLines)
hasDoubleTop := false
hasDoubleBottom := false
doubleTopLevel := na
doubleBottomLevel := na
// Add new swings and check for identical peaks
if not na(swingHigh) and time >= todayStart
bool isEqualHigh = false
int peakIndex = -1
float prevLevel = na // Declare prevLevel with initial value
if array.size(resistanceLevels) > 0
for i = 0 to array.size(resistanceLevels) - 1
prevLevel := array.get(resistanceLevels, i)
if math.abs(swingHigh - prevLevel) <= tolerance
isEqualHigh := true
peakIndex := i
break
if isEqualHigh and peakIndex >= 0
array.set(resistanceCounts, peakIndex, array.get(resistanceCounts, peakIndex) + 1)
if array.get(resistanceCounts, peakIndex) >= maxPeaks
hasDoubleTop := true
doubleTopLevel := prevLevel
else
array.push(resistanceLevels, swingHigh)
array.push(resistanceCounts, 1)
line newResLine = line.new(bar_index - rightBars, swingHigh, bar_index, swingHigh, color=color.red, width=2, extend=extend.right)
array.push(resLines, newResLine)
if not na(swingLow) and time >= todayStart
bool isEqualLow = false
int peakIndex = -1
float prevLevel = na // Declare prevLevel with initial value
if array.size(supportLevels) > 0
for i = 0 to array.size(supportLevels) - 1
prevLevel := array.get(supportLevels, i)
if math.abs(swingLow - prevLevel) <= tolerance
isEqualLow := true
peakIndex := i
break
if isEqualLow and peakIndex >= 0
array.set(supportCounts, peakIndex, array.get(supportCounts, peakIndex) + 1)
if array.get(supportCounts, peakIndex) >= maxPeaks
hasDoubleBottom := true
doubleBottomLevel := prevLevel
else
array.push(supportLevels, swingLow)
array.push(supportCounts, 1)
line newSupLine = line.new(bar_index - rightBars, swingLow, bar_index, swingLow, color=color.green, width=2, extend=extend.right)
array.push(supLines, newSupLine)
// Monitor and remove broken levels/lines; reset pattern if the equal level breaks
if array.size(resistanceLevels) > 0
for i = array.size(resistanceLevels) - 1 to 0
float level = array.get(resistanceLevels, i)
if close > level
line.delete(array.get(resLines, i))
array.remove(resLines, i)
array.remove(resistanceLevels, i)
array.remove(resistanceCounts, i)
if level == doubleTopLevel
hasDoubleTop := false
doubleTopLevel := na
if array.size(supportLevels) > 0
for i = array.size(supportLevels) - 1 to 0
float level = array.get(supportLevels, i)
if close < level
line.delete(array.get(supLines, i))
array.remove(supLines, i)
array.remove(supportLevels, i)
array.remove(supportCounts, i)
if level == doubleBottomLevel
hasDoubleBottom := false
doubleBottomLevel := na
// Limit arrays (after removals)
if array.size(resistanceLevels) > 10
line oldLine = array.shift(resLines)
line.delete(oldLine)
array.shift(resistanceLevels)
array.shift(resistanceCounts)
if array.size(supportLevels) > 10
line oldLine = array.shift(supLines)
line.delete(oldLine)
array.shift(supportLevels)
array.shift(supportCounts)
// Pattern Signal: 1 if any pattern with maxPeaks is active and unbroken
patternSignal = (hasDoubleTop or hasDoubleBottom) ? 1 : 0
// New: Nearest Double Level Price
var float nearestDoubleLevel = na
if hasDoubleTop and not na(doubleTopLevel)
nearestDoubleLevel := doubleTopLevel
if hasDoubleBottom and not na(doubleBottomLevel)
nearestDoubleLevel := na(nearestDoubleLevel) ? doubleBottomLevel : (math.abs(close - doubleBottomLevel) < math.abs(close - nearestDoubleLevel) ? doubleBottomLevel : nearestDoubleLevel)
// New: Distance to Nearest Level (using ATR for normalization)
var float atr = ta.atr(atrLength)
var float distanceNormalizedATR = na
if not na(nearestDoubleLevel) and not na(atr) and atr > 0
distanceNormalizedATR := math.abs(close - nearestDoubleLevel) / atr
// Optional Bounce Signal (for reference)
bounceSignal = 0
if array.size(resistanceLevels) > 0
for i = 0 to array.size(resistanceLevels) - 1
float level = array.get(resistanceLevels, i)
if low <= level and high >= level and close < level
bounceSignal := 1
if array.size(supportLevels) > 0
for i = 0 to array.size(supportLevels) - 1
float level = array.get(supportLevels, i)
if high >= level and low <= level and close > level
bounceSignal := 1
// Outputs
plot(patternSignal, title="Pattern Signal", color=patternSignal == 1 ? color.purple : na, style=plot.style_circles)
plot(bounceSignal, title="Bounce Signal", color=bounceSignal == 1 ? color.yellow : na, style=plot.style_circles)
plot(nearestDoubleLevel, title="Nearest Double Level Price", color=color.orange)
plot(distanceNormalizedATR, title="Normalized Distance (ATR)", color=color.green)
bgcolor(patternSignal == 1 ? color.new(color.purple, 80) : na)
if patternSignal == 1 and barstate.isconfirmed
alert("Double Pattern detected on " + syminfo.ticker + " at " + str.tostring(close), alert.freq_once_per_bar_close)
if barstate.islast
var table infoTable = table.new(position.top_right, 1, 4, bgcolor=color.new(color.black, 50))
table.cell(infoTable, 0, 0, "Pattern: " + str.tostring(patternSignal), bgcolor=patternSignal == 1 ? color.purple : color.gray)
table.cell(infoTable, 0, 1, "Bounce: " + str.tostring(bounceSignal), bgcolor=bounceSignal == 1 ? color.yellow : color.gray)
table.cell(infoTable, 0, 2, "Level: " + str.tostring(nearestDoubleLevel, "#.##"), bgcolor=color.orange)
table.cell(infoTable, 0, 3, "ATR Dist: " + str.tostring(distanceNormalizedATR, "#.##"), bgcolor=color.green)
Anchored VWAP (Triple) MYRAXESAnchored VWAP Triple Indicator
The Anchored VWAP Triple indicator is a powerful tool for technical analysis, allowing traders to plot three customizable anchored Volume Weighted Average Price (VWAP) lines on a chart. Unlike traditional VWAP, which resets daily, this indicator lets you anchor each VWAP to a specific date and time, providing a unique perspective on price action relative to key market events.
Features
Three Independent VWAPs: Plot up to three VWAP lines, each anchored to a user-defined date and time.
Customizable Inputs: Set the year, month, day, hour, and minute for each VWAP anchor point. Choose distinct colors for easy identification.
Pure Anchored Design: VWAP lines start only from the anchor point, with no pre-anchor extensions, ensuring a clean and focused analysis.
Debug Mode: Optional display of hour and minute for troubleshooting or educational purposes.
Default Settings: Pre-configured with practical defaults (e.g., September 2025 dates) for immediate use.
How to Use
Add the indicator to your TradingView chart.
Adjust the anchor dates and times for each VWAP (VWAP 1, VWAP 2, VWAP 3) via the input settings.
Select custom colors for each VWAP line to differentiate them on the chart.
Enable Debug Mode if needed to verify time alignment.
Analyze price movements relative to the anchored VWAPs to identify support, resistance, or trend shifts.
Benefits
Ideal for swing traders and long-term analysts who need to anchor VWAP to significant price levels or events.
Enhances decision-making by comparing multiple VWAPs from different anchor points.
Fully compatible with TradingView’s Pine Script v6 for smooth performance.
This indicator is perfect for traders looking to deepen their market analysis with a flexible, multi-VWAP approach. Share your feedback or custom setups in the comments!
RSI(7) + MACD ZoneTitle: RSI(7) + MACD Zone Combo
Description:
This indicator combines RSI (7) and MACD (12,26,9) into a single panel with a unified scale for easier analysis.
RSI (7) is plotted in white and automatically turns red when the market reaches overbought (>70) or oversold (<30) conditions.
MACD is normalized to align with the RSI scale (0–100).
A value of 50 represents MACD = 0.
Above 50 (teal) indicates positive momentum.
Below 50 (red) indicates negative momentum.
This combination allows traders to quickly identify when short-term RSI conditions align with overall momentum shifts from MACD.
How to use:
Look for potential buy opportunities when RSI is oversold (<30) and MACD is above 50 (positive momentum).
Look for potential sell opportunities when RSI is overbought (>70) and MACD is below 50 (negative momentum).
Use in conjunction with price action and risk management — not as a standalone signal.
Phân tích Đa Khung Thời gian và Checklist
Multi-Timeframe Analysis and Checklist for EG System
It's a combination of two indicators: manual market trend analysis and a checklist for the EG System
Distance from SMAsimportant in trending markets. 1% deviation from 20D sma is a good point to sell 10-15 delta puts or calls depending upon the direction
Premarket Power MovePremarket Power Move is an intraday research tool that tracks what happens after strong premarket or opening gaps.
📊 Core Idea
• When a stock opens +X% above the prior close, it often attracts momentum traders.
• This script measures whether the stock continues to follow through higher or instead fades back down within the first trading hour.
• It calculates:
• The probability of a post-gap rally vs. a drawdown
• Average and maximum retracements after the surge
• Event-day hit rate (how many days actually triggered the condition)
🎯 Use Cases
• Identify “gap-and-go” opportunities where strong premarket strength leads to further gains.
• Spot potential fade setups where early enthusiasm quickly reverses.
• Backtest your intraday strategies with objective statistics instead of gut feeling.
⚙️ Features
• Customizable thresholds for premarket/open surge (%) and follow-through window (minutes).
• Marks the chart with reference lines:
• Prior close
• Surge threshold (e.g. +6%)
• Intraday high/low used for probability calculations.
• Outputs summary statistics (probabilities, averages, counts) directly on the chart.
🔔 Note
This is not a buy/sell signal generator. It is a probability and behavior analysis tool that helps traders understand how often strong premarket gaps continue vs. fade.
Trader Marks Trailing SL + TP (BE @ 60%)This script provides a unique stop-loss and take-profit management tool designed for swing traders.
It introduces a two-stage stop-loss logic that is not available in standard TradingView tools:
Break-Even Protection: Once a defined profit threshold (e.g. 66%) is reached, the stop-loss automatically moves to break-even.
ATR-Based Trailing Stop: After a chosen delay (e.g. 12 hours), the script activates a dynamic trailing stop that follows market volatility using the ATR.
Flexible Ratchet Mechanism: The stop-loss can be locked at new profit levels and will never move backwards.
This combination allows traders to secure profits while still giving the trade room to develop. The indicator is especially useful for swing trading on 4H and daily timeframes but can be applied to other styles as well.
How to use:
Enter your entry price, stop-loss, and take-profit levels.
Choose your trailing mode: Exact S/L+ (simple) or Advanced (Delay + BE + Ratchet).
Adjust parameters such as ATR length or activation delay to match your strategy.
The script helps you balance risk and reward by ensuring that once the trade moves in your favor, you cannot lose the initial risk, while still benefiting from extended market moves.
Shadow Corp 90min Boxes90-min cycle boxes, marks 90min session highs and lows with color coded boxes.
Long-short energy ratio /多空能量比值This indicator calculates the relative strength of bulls and bears by measuring the average candle body movement within a user-defined window (default: 50 bars).
Bull Energy = average percentage change of all bullish candles in the lookback period
Bear Energy = average percentage change of all bearish candles in the lookback period
Energy Ratio = Bull Energy ÷ Bear Energy
The ratio is plotted as a curve around the baseline of 1:
Ratio > 1 → Bull side shows stronger momentum
Ratio < 1 → Bear side shows stronger momentum
Ratio ≈ 1 → Balanced market conditions
This tool helps visualize short-term shifts in buying and selling pressure, offering a simple mean-reversion perspective or a confirmation of trend strength depending on the context.
Seasonality con números RAMÓN SEGOVIAMonthly Bands – Colored Monthly Stripes for Statistical Analysis
Short Description
This indicator paints vertical background stripes by calendar month on your chart, making it easy to run statistical/seasonality analysis, compare monthly performance, and visually identify recurring patterns across assets and timeframes.
How It Works
Detects each new month and applies a background band spanning from the first to the last candle of that month.
Alternates colors automatically so consecutive months are easy to distinguish, or use a single uniform color for a clean look.
Optional: add dotted lines at the start/end of each month for precise separation.
Inputs / Settings
Color mode: alternating (odd/even months) or single.
Colors & opacity of the bands.
Border style: none / solid / dotted.
Highlight specific months: e.g., “Jan, Apr, Oct” with a different color.
Labels option: show month & year abbreviations at the top/bottom of the chart.
Drawing zone: full background vs. price-only area (to avoid covering lower indicators).
Typical Use Cases
Seasonality studies: identify historically bullish/bearish months.
Visual backtesting: segment the chart by months to evaluate strategy performance.
Context tracking: quickly locate reports, monthly closes, or economic cycles.
Compatibility
Works on all timeframes, including intraday (each band covers the full calendar month).
Lightweight and visual-only; doesn’t interfere with price or indicators.
Pro Tips
Combine with monthly returns (%) or candle counters to quantify each stripe.
Use labels when preparing clean presentations or trade journal screenshots.
Notes
This is a visual tool only, not a buy/sell signal generator.
Default settings are optimized for clarity and minimal clutter.
BGT顺势交易发布V3Looking at your trading system code, I must say this is an exceptionally sophisticated quantitative strategy. Let me analyze its core advantages in detail:
📊 Multi-Dimensional Market Analysis Architecture
The system's greatest highlight is its three-tier progressive market analysis framework:
Macro Trend Identification Layer - Dynamically identifies primary market direction through adaptive algorithms
Meso Momentum Confirmation Layer - Secondary verification using price momentum and market strength
Micro Entry Precision Layer - Optimizes entry timing combining short-term oscillation and reversal signals
🎯 Intelligent Signal Filtering Mechanism
The system incorporates multiple filters, effectively reducing false signals:
Time Interval Filter - Prevents excessive trading from overly dense signals
Price Position Filter - Ensures new signals appear at better price levels
Trend Consistency Filter - All signals must align with the main trend direction
💡 Innovative Risk Management System
Dynamic Take-Profit/Stop-Loss Design
Automatically adjusts TP/SL positions based on market volatility
Provides 3 progressive profit targets to maximize profit potential
Intelligently identifies "AI Detected Opportunities" vs "Waiting for TP" status
Bidirectional Symmetric Trading Logic
The system employs completely symmetric trading rules for both long and short markets, ensuring consistent strategy performance across different market environments.
🔄 Adaptive Market Response
Intelligent Trend Tracking
Main trend line automatically adjusts slope and position based on market structure
Remains stable in ranging markets, responds quickly in trending markets
Multi-Timeframe Coordination
Allows users to customize main trend determination periods, achieving perfect coordination between different timeframes - capturing major trends while not missing short-term opportunities.
📈 Unique Signal Classification System
The system categorizes trading signals into 6 types:
Strong Signals (Strong Long/Short) - Optimal entry points at trend initiation
Oscillation Signals (Oscillation Long/Short) - Range trading opportunities
Trend-Following Signals (Trend Long/Short) - Add-on points for trend continuation
Exit Signals (Close Long/Short) - Intelligent exit timing
🛡️ Advanced Exit Filtering Feature
Innovative "Touch-Line Confirmation" mechanism:
Close-long signals require price to first touch overbought zone
Close-short signals require price to first touch oversold zone
Effectively prevents premature exits and profit loss
🎨 Superior Visualization Design
Gradient Fill Effects - Intuitively displays trend strength
Dynamic Label System - Real-time display of key price levels and trading suggestions
Multi-layered Signal Markers - Different shapes and colors distinguish signal types
Smart Bar Coloring - Market status at a glance
⚡ Performance Optimization Highlights
Avoids global variables, improving execution efficiency
Simplified calculation logic, reduced resource consumption
Modular design for easy maintenance and upgrades
🔔 Comprehensive Alert System
Independent alerts configured for each signal type, ensuring traders never miss important opportunities.
The core value of this system lies in the fact that it's not a simple stacking of indicators, but rather an organic integration of multiple analytical dimensions, forming a complete trading decision chain. From trend identification to entry timing, from risk control to profit optimization, every component has been meticulously designed, truly achieving the philosophy of "trade with the trend, execute with precision."
ScalpDaddyPREMIUM OPTIONS TRADING, PRESENTS:
ScalpDaddy, is a visual toolkit that helps you see where price is likely to react: liquidity pools, market structure shifts, daily/premarket levels, Fibonacci retracements/targets, and a compact multi‑timeframe status table.
It is designed for discretionary traders. Use it to plan, not to predict. No signals are “buy/sell”; they’re context.
Quick Start
Add to chart → keep defaults.
Watch the MTF table on the right: it tells you which timeframes are sitting in buy‑side (“BSL”), sell‑side (“SSL”), or both liquidity areas.
Turn on “Fibonacci Levels” and “Levels: Day & Premarket” to frame the day.
Wait for price to interact with a level (liquidity box, PMH/PML/HOD/LOD, or Fibonacci zone), then use your own trade plan for entries/exits.
Set alerts only after you’ve chosen the timeframes and features you care about (see Alerts).
What You’ll See
Liquidity Pools (boxes): Areas around clustered swing highs/lows where stops often sit. Boxes expand to the right until fully broken. Gray = inactive/hidden, colored = active. When broken, they can fade or recolor (your choice).
Market Structure (MSS/BOS): Optional labels and dotted lines to show shifts and break‑of‑structure. Useful for trend context and anchoring Fibs.
Day & Premarket Levels: Lines for PMH/PML and the official daily HOD/LOD (today, previous day, and optional 2nd previous). Labels like “PMH”, “HOD” keep it beginner‑friendly. Note: these levels intentionally show on minute charts up to 4h to avoid clutter.
Fibonacci Suite: Auto‑anchors from market structure or ZigZag swings, plus simple “Today Range” and “Previous Day Range” modes. Plots key retracements (38/50/62 highlighted) and optional targets. OTE zone (62–78.6) can be softly shaded for clarity. You can overlay a higher‑timeframe Fib for confluence.
MTF Liquidity + Momentum Table: Eight rows (customizable timeframes). Each row shows:
Liquidity status: BSL, SSL, or Both (price touching/straddling that TF’s pool/line).
RSI/ADX heat cell: a simple emoji/colour cue for momentum and stretch on that TF.
How To Use It (Beginner‑Friendly Flow)
Frame the Session
Turn on “Levels: Day & Premarket”. PMH/PML and HOD/LOD give you clean reference lines for the session narrative.
If you trade US stocks, keep Premarket Session at 04:00–09:30 (exchange time). Adjust if your venue differs.
Read the Table
Look for clusters: several lower TFs all showing SSL (for dip‑buy setups) or BSL (for fade setups). “Both” means price is straddling both sides and may be choppy—slow down there.
Use the RSI/ADX cell as a nudge, not a command. “Heat” hints where momentum is; warnings hint at potential exhaustion or churn.
Add Fibonacci Context
Start with “Auto (MSS)” so anchors follow structure. If swings feel too small/too big, try “ZigZag” or the Day/Prev Day options.
The OTE shade highlights the classic pullback area. Targets can help you plan partials.
Optional: turn on “Show Secondary Anchor” with a higher TF to see confluence.
Focus Your Chart
Leave “History Mode” on “Present” for speed; switch to “Full History” only when you need a full backtest view.
If the chart looks busy, hide labels first, then reduce which modules are shown.
Alerts
Built‑in Conditions (set from TradingView’s Alerts panel):
“BSL touch (any timeframe)” and “SSL touch (any timeframe)” fire when any selected TF in the table touches its pool/line.
“Fibonacci touch” fires when price reaches one of your plotted Fib levels within your chosen tolerance.
Direction Filter
“Bullish Only” focuses on sell‑side liquidity touches (SSL) that can fuel upward moves.
“Bearish Only” focuses on buy‑side liquidity touches (BSL) that can fuel downward moves.
Tips
Pick your timeframes first, then create the alert.
If you want stricter Fib alerts, lower the “Alert Tolerance %”. Choose “Close” vs “High/Low Range” depending on how strict you are about confirmation.
Key Settings To Tweak
History Mode: “Present” = faster and draws recent context; “Full History” = full chart.
Liquidity
“Show Broken Pools/Lines” to keep invalidated pools visible in a different colour, or hide them to reduce noise.
“# Visible Liq. boxes” limits clutter in one direction.
Day & Premarket Levels
“Use Group Colors” for a clean palette, or customize each line colour.
Line Style/Width/Extend to fit your chart theme.
Fibonacci Levels
Anchor Mode: Auto (structure), ZigZag, Today Range, or Previous Day Range.
“Min Leg Size (ATR multiples)” filters out tiny swings so your Fib doesn’t keep redrawing on noise.
“Highlight Levels Inside Liquidity Pools” thickens lines that overlap a live pool—easy confluence.
“Day Bias ATR Cushion” gently widens the day’s mid‑zone so bias doesn’t flip on tiny moves.
MTF Liquidity Alerts
Choose your 8 timeframes, how many zones to keep visible per TF, and whether touches use Close only or the full bar range.
Troubleshooting
“I don’t see PMH/PML or HOD/LOD.” Use minute charts up to 240 min (4h). Levels are intentionally limited to those to keep charts clean and fast.
“My chart feels slow.” Keep History Mode = Present, reduce visible liquidity boxes, and hide labels you don’t need.
“Fibonacci keeps moving.” Increase “Min Leg Size (ATR)” or use the Day/Prev Day anchor modes for steadier legs.
Good Practices
Plan first, execute second: wait for the candle close on your chosen TF if you want confirmation.
Confluence beats single‑signal: pool + day level + Fib + acceptable momentum is better than any one alone.
Record and review: keep screenshots and notes; small tweaks to tolerance and visibility can meaningfully improve clarity.
Notes & Limits
The tool avoids look‑ahead and uses confirmed data where appropriate, but anything based on live bars can update as a bar forms.
Max lookback is limited for performance; very old lines may be trimmed automatically.
Works across markets; premarket session times are exchange‑based—adjust for your venue.
Disclaimer
For education only. Not financial advice. Markets carry risk. You are responsible for your trades and settings.
3 6 9 Manipulation Detector369 is everything in this world, as per Nikola Tesla
it will found the hidden time as per 3 6 9 LAW, Tick Tok Tick Tok
FIRST TIME THEN PRICE
RSI DivergenceStrat WCredit to faytterro. Buy when RSI is staying flat or going up while the ticker price is going down. Sell when RSI is staying flat or going down while the ticker price is going up.
AD4President SMC Strong OB AlertsAD4President SMC Strong OB Alerts – Full Description
Overview:
The AD4President SMC Strong OB Alerts indicator is a multi-timeframe Smart Money Concepts (SMC) tool designed to help traders identify key Order Blocks (OBs) and potential high-probability areas of support and resistance. Inspired by premium SMC indicators, it focuses on strong OBs while filtering out weaker levels to reduce noise.
Features:
Strong vs. Weak Order Blocks
Strong OBs: Bright green (bullish) or bright red (bearish).
Weak OBs: Dimmed green (bullish) or dimmed red (bearish).
Only strong OBs trigger alerts, keeping signals clean and high-probability.
Multi-Timeframe Detection
Works across current timeframe and higher timeframes:
HTF1: 4H (configurable)
HTF2: Daily
HTF3: Weekly
Each timeframe’s OBs are visually distinct with unique colors.
50% Midpoint / Equilibrium Line
Draws a dashed line at the 50% mark of each order block.
Provides a visual reference for the OB’s equilibrium and potential price reaction points.
Alerts can trigger when price touches this midpoint for strong OBs.
Dynamic Color Coding
Strong bullish OB: Bright green
Weak bullish OB: Dim green
Strong bearish OB: Bright red
Weak bearish OB: Dim red
HTF OBs have unique color sets to distinguish them easily.
Alerts for High-Probability Levels
Alerts trigger only for strong OBs when:
Price enters the OB
Price touches the 50% midpoint of the OB
Alerts available for current timeframe and all higher timeframes.
Efficient Drawing & Cleanup
Supports up to 500 OB boxes, 500 lines, and 500 labels.
Automatically deletes old objects to prevent chart clutter.
Legend / Visual Guide
Shows which colors represent strong/weak OBs for each timeframe.
Provides quick reference to understand signals without confusion.
How Traders Use It:
Identify strong support/resistance levels via bullish and bearish OBs.
Spot potential supply and demand zones for entries or exits.
Combine with price action, break of structure, and liquidity hunts for advanced SMC trading strategies.
Alerts help you stay updated without watching charts continuously.
Settings & Customization:
lookback: Number of bars to analyze for OB formation.
show50: Enable/disable midpoint dashed line.
strongOBPct: Threshold for strong OB detection.
HTFs: Configure 3 higher timeframes to monitor multi-timeframe OBs.
showLegend: Toggle the visual legend.
Ideal For:
Swing traders, intraday traders, and position traders using Smart Money Concepts.
Traders looking to filter high-probability zones while avoiding noise from weaker OBs.