ChronoPulse MS-MACD Resonance StrategyChronoPulse MS-MACD Resonance Strategy
A systematic trading strategy that combines higher-timeframe market structure analysis with dual MACD momentum confirmation, ATR-based risk management, and real-time quality assurance monitoring.
Core Principles
The strategy operates on the principle of multi-timeframe confluence, requiring agreement between:
Market structure breaks (CHOCH/BOS) on a higher timeframe
Dual MACD momentum confirmation (classic and crypto-tuned profiles)
Trend alignment via directional EMAs
Volatility and volume filters
Quality score composite threshold
Strategy Components
Market Structure Engine : Detects Break of Structure (BOS) and Change of Character (CHOCH) events using confirmed pivots on a configurable higher timeframe. Default structure timeframe is 240 minutes (4H).
Dual MACD Fusion : Requires agreement between two MACD configurations:
Classic MACD: 12/26/9 (default)
Fusion MACD: 8/21/5 (default, optimized for crypto volatility)
Both must agree on direction before trade execution. This can be disabled to use single MACD confirmation.
Trend Alignment : Uses two EMAs for directional bias:
Directional EMA: 55 periods (default)
Execution Trend Guide: 34 periods (default)
Both must align with trade direction.
ATR Risk Management : All risk parameters are expressed in ATR multiples:
Stop Loss: 1.5 × ATR (default)
Take Profit: 3.0 × ATR (default)
Trail Activation: 1.0 × ATR profit required (default)
Trail Distance: 1.5 × ATR behind price (default)
Volume Surge Filter : Optional gate requiring current volume to exceed a multiple of the volume SMA. Default threshold is 1.4× the 20-period volume SMA.
Quality Score Gate : Composite score (0-1) combining:
Structure alignment (0.0-1.0)
Momentum strength (0.0-1.0)
Trend alignment (0.0-1.0)
ATR volatility score (0.0-1.0)
Volume intensity (0.0-1.0)
Default threshold: 0.62. Trades only execute when quality score exceeds this threshold.
Execution Discipline : Trade budgeting system:
Maximum trades per session: 6 (default)
Cooldown bars between entries: 5 (default)
Quality Assurance Console : Real-time monitoring panel displaying:
Structure status (pass/fail)
Momentum confirmation (pass/fail)
Volatility readiness (pass/fail)
Quality score (pass/fail)
Discipline compliance (pass/fail)
Performance metrics (win rate, profit factor)
Net PnL
Certification requires: Win Rate ≥ 40%, Profit Factor ≥ 1.4, Minimum 25 closed trades, and positive net profit.
Integrity Suite : Optional validation panel that audits:
Configuration sanity checks
ATR data readiness
EMA hierarchy validity
Performance realism checks
Strategy Settings
strategy(
title="ChronoPulse MS-MACD Resonance Strategy",
shorttitle="ChronPulse",
overlay=true,
max_labels_count=500,
max_lines_count=500,
initial_capital=100000,
currency=currency.USD,
pyramiding=0,
commission_type=strategy.commission.percent,
commission_value=0.015,
slippage=2,
default_qty_type=strategy.percent_of_equity,
default_qty_value=2.0,
calc_on_order_fills=true,
calc_on_every_tick=true,
process_orders_on_close=true
)
Key Input Parameters
Structure Timeframe : 240 (4H) - Higher timeframe for structure analysis
Structure Pivot Left/Right : 3/3 - Pivot confirmation periods
Structure Break Buffer : 0.15% - Buffer for structure break confirmation
MACD Fast/Slow/Signal : 12/26/9 - Classic MACD parameters
Fusion MACD Fast/Slow/Signal : 8/21/5 - Crypto-tuned MACD parameters
Directional EMA Length : 55 - Primary trend filter
Execution Trend Guide : 34 - Secondary trend filter
ATR Length : 14 - ATR calculation period
ATR Stop Multiplier : 1.5 - Stop loss in ATR units
ATR Target Multiplier : 3.0 - Take profit in ATR units
Trail Activation : 1.0 ATR - Profit required before trailing
Trail Distance : 1.5 ATR - Distance behind price
Volume Threshold : 1.4× - Volume surge multiplier
Quality Threshold : 0.62 - Minimum quality score (0-1)
Max Trades Per Session : 6 - Daily trade limit
Cooldown Bars : 5 - Bars between entries
Win-Rate Target : 40% - Minimum for QA certification
Profit Factor Target : 1.4 - Minimum for QA certification
Minimum Trades for QA : 25 - Required closed trades
Signal Generation Logic
A trade signal is generated when ALL of the following conditions are met:
Higher timeframe structure shows bullish (CHOCH/BOS) or bearish structure break
Both MACD profiles agree on direction (if fusion enabled)
Price is above both EMAs for longs (below for shorts)
ATR data is ready and above minimum threshold
Volume exceeds threshold × SMA (if volume gate enabled)
Quality score ≥ quality threshold
Trade budget available (under max trades per day)
Cooldown period satisfied
Risk Management
Stop loss and take profit are set immediately on entry
Trailing stop activates after 1.0 ATR of profit
Trailing stop maintains 1.5 ATR distance behind highest profit point
Position sizing uses 2% of equity per trade (default)
No pyramiding (single position per direction)
Limitations and Considerations
The strategy requires sufficient historical data for higher timeframe structure analysis
Quality gate may filter out many potential trades, reducing trade frequency
Performance metrics are based on historical backtesting and do not guarantee future results
Commission and slippage assumptions (0.015% + 2 ticks) may vary by broker
The strategy is optimized for trending markets with clear structure breaks
Choppy or ranging markets may produce false signals
Crypto markets may require different parameter tuning than traditional assets
Optimization Notes
The strategy includes several parameters that can be tuned for different market conditions:
Quality Threshold : Lower values (0.50-0.60) allow more trades but may reduce average quality. Higher values (0.70+) are more selective but may miss opportunities.
Structure Timeframe : Use 240 (4H) for intraday trading, Daily for swing trading, Weekly for position trading
Volume Gate : Disable for low-liquidity pairs or when volume data is unreliable
Dual MACD Fusion : Disable for mean-reverting markets where single MACD may be more responsive
Trade Discipline : Adjust max trades and cooldown based on your risk tolerance and market volatility
Non-Repainting Guarantee
All higher timeframe data requests use lookahead=barmerge.lookahead_off to prevent repainting. Pivot detection waits for full confirmation before registering structure breaks. All visual elements (tables, labels) update only on closed bars.
Alerts
Three alert conditions are available:
ChronoPulse Long Setup : Fires when all long entry conditions are met
ChronoPulse Short Setup : Fires when all short entry conditions are met
ChronoPulse QA Certification : Fires when Quality Assurance console reaches CERTIFIED status
Configure alerts with "Once Per Bar Close" delivery to match the non-repainting design.
Visual Elements
Structure Labels : CHOCH↑, CHOCH↓, BOS↑, BOS↓ markers on structure breaks
Directional EMA : Orange line showing trend bias
Trailing Stop Lines : Green (long) and red (short) trailing stop levels
Dashboard Panel : Real-time status display (structure, MACD, ATR, quality, PnL)
QA Console : Quality assurance monitoring panel
Integrity Suite Panel : Optional validation status display
Recommended Usage
Forward test with paper trading before live deployment
Monitor the QA console until it reaches CERTIFIED status
Adjust parameters based on your specific market and timeframe
Respect the trade discipline limits to avoid over-trading
Review quality scores and adjust threshold if needed
Use appropriate commission and slippage settings for your broker
Technical Implementation
The strategy uses Pine Script v6 with the following key features:
Multi-timeframe data requests with lookahead protection
Confirmed pivot detection for structure analysis
Dynamic trailing stop management
Real-time quality score calculation
Trade budgeting and cooldown enforcement
Comprehensive dashboard and monitoring panels
All source code is open and available for review and modification.
Disclaimer
This script is for educational and informational purposes only. It is not intended as financial, investment, or trading advice. Past performance does not guarantee future results. Trading involves substantial risk of loss and is not suitable for all investors. Always conduct your own research and consult with a qualified financial advisor before making any trading decisions. The author and TradingView are not responsible for any losses incurred from using this strategy.
Indicators and strategies
ATR ZigZag BreakoutATR ZigZag Breakout
This strategy uses my ATR ZigZag indicator (powered by the ZigZagCore library) to scalp breakouts at volatility-filtered highs and lows.
Everyone knows stops cluster around clear swing highs and lows. Breakout traders often pile in there, too. These levels are predictable areas where aggressive orders hit the tape. The idea here is simple:
→ Let ATR ZigZag define clean, volatility-filtered pivots
→ Arm a stop market order at those pivots
→ Join the breakout when the crowd hits the level
The key to greater success in this simple strategy lies in the ZigZag. Because the pivots are filtered by ATR instead of fixed bar counts or fractals, the levels tend to be more meaningful and less noisy.
This approach is especially suited for intraday trading on volatile instruments (e.g., NQ, GC, liquid crypto pairs).
How It Works
1. Pivot detection
The ATR ZigZag uses an ATR-based threshold to confirm swing highs and lows. Only when price has moved far enough in the opposite direction does a pivot become “official.”
2. Candidate breakout level
When a new swing direction is detected and the most recent high/low has not yet been broken in the current leg, the strategy arms a stop market order at that pivot.
• Long candidate → most recent swing high
• Short candidate → most recent swing low
These “candidate trades” are shown as dotted lines.
3. Entry, SL, and TP
If price breaks through the level, the stop order is filled and a bracket is placed:
• Stop loss = ATR × SL multiplier
• Take profit = SL distance × RR multiplier
Once a level has traded, it is not reused in the same swing leg.
4. Cancel & rotate
If the market reverses and forms a new swing in the opposite direction before the level is hit, the pending order is cancelled and a new candidate is considered in the new direction.
Additional Features
• Optional session filter for backtesting specific trading hours
Reversal WaveThis is the type of quantitative system that can get you hated on investment forums, now that the Random Walk Theory is back in fashion. The strategy has simple price action rules, zero over-optimization, and is validated by a historical record of nearly a century on both Gold and the S&P 500 index.
Recommended Markets
SPX (Weekly, Monthly)
SPY (Monthly)
Tesla (Weekly)
XAUUSD (Weekly, Monthly)
NVDA (Weekly, Monthly)
Meta (Weekly, Monthly)
GOOG (Weekly, Monthly)
MSFT (Weekly, Monthly)
AAPL (Weekly, Monthly)
System Rules and Parameters
Total capital: $10,000
We will use 10% of the total capital per trade
Commissions will be 0.1% per trade
Condition 1: Previous Bearish Candle (isPrevBearish) (the closing price was lower than the opening price).
Condition 2: Midpoint of the Body The script calculates the exact midpoint of the body of that previous bearish candle.
• Formula: (Previous Open + Previous Close) / 2.
Condition 3: 50% Recovery (longCondition) The current candle must be bullish (green) and, most importantly, its closing price must be above the midpoint calculated in the previous step.
Once these parameters are met, the system executes a long entry and calculates the exit parameters:
Stop Loss (SL): Placed at the low of the candle that generated the entry signal.
Take Profit (TP): Calculated by projecting the risk distance upward.
• Calculation: Entry Price + (Risk * 1).
Risk:Reward Ratio of 1:1.
About the Profit Factor
In my experience, TradingView calculates profits and losses based on the percentage of movement, which can cause returns to not match expectations. This doesn’t significantly affect trending systems, but it can impact systems with a high win rate and a well-defined risk-reward ratio. It only takes one large entry candle that triggers the SL to translate into a major drop in performance.
For example, you might see a system with a 60% win rate and a 1:1 risk-reward ratio generating losses, even though commissions are under control relative to the number of trades.
My recommendation is to manually calculate the performance of systems with a well-defined risk-reward ratio, assuming you will trade using a fixed amount per trade and limit losses to a fixed percentage.
Remember that, even if candles are larger or smaller in size, we can maintain a fixed loss percentage by using leverage (in cases of low volatility) or reducing the capital at risk (when volatility is high).
Implementing leverage or capital reduction based on volatility is something I haven’t been able to incorporate into the code, but it would undoubtedly improve the system’s performance dramatically, as it would fix a consistent loss percentage per trade, preventing losses from fluctuating with volatility swings.
For example, we can maintain a fixed loss percentage when volatility is low by using the following formula:
Leverage = % of SL you’re willing to risk / % volatility from entry point to exit or SL
And if volatility is high and exceeds the fixed percentage we want to expose per trade (if SL is hit), we could reduce the position size.
For example, imagine we only want to risk 15% per SL on Tesla, where volatility is high and would cause a 23.57% loss. In this case, we subtract 23.57% from 15% (the loss percentage we’re willing to accept per trade), then subtract the result from our usual position size.
23.57% - 15% = 8.57%
Suppose I use $200 per trade.
To calculate 8.57% of $200, simply multiply 200 by 8.57/100. This simple calculation shows that 8.57% equals about $17.14 of the $200. Then subtract that value from $200:
$200 - $17.14 = $182.86
In summary, if we reduced the position size to $182.86 (from the usual $200, where we’re willing to lose 15%), no matter whether Tesla moves up or down 23.57%, we would still only gain or lose 15% of the $200, thus respecting our risk management.
Final Notes
The code is extremely simple, and every step of its development is detailed within it.
If you liked this strategy, which complements very well with others I’ve already published, stay tuned. Best regards.
XAUUSD 1m SMC Zones (BOS + Flexible TP Modes + Trailing Runner)//@version=6
strategy("XAUUSD 1m SMC Zones (BOS + Flexible TP Modes + Trailing Runner)",
overlay = true,
initial_capital = 10000,
pyramiding = 10,
process_orders_on_close = true)
//━━━━━━━━━━━━━━━━━━━
// 1. INPUTS
//━━━━━━━━━━━━━━━━━━━
// TP / SL
tp1Pips = input.int(10, "TP1 (pips)", minval = 1)
fixedSLpips = input.int(50, "Fixed SL (pips)", minval = 5)
runnerRR = input.float(3.0, "Runner RR (TP2 = SL * RR)", step = 0.1, minval = 1.0)
// Daily risk
maxDailyLossPct = input.float(5.0, "Max daily loss % (stop trading)", step = 0.5)
maxDailyProfitPct = input.float(20.0, "Max daily profit % (stop trading)", step = 1.0)
// HTF S/R (1H)
htfTF = input.string("60", "HTF timeframe (minutes) for S/R block")
// Profit strategy (Option C)
profitStrategy = input.string("Minimal Risk | Full BE after TP1", "Profit Strategy", options = )
// Runner stop mode (your option 4)
runnerStopMode = input.string( "BE only", "Runner Stop Mode", options = )
// ATR trail settings (only used if ATR mode selected)
atrTrailLen = input.int(14, "ATR Length (trail)", minval = 1)
atrTrailMult = input.float(1.0, "ATR Multiplier (trail)", step = 0.1, minval = 0.1)
// Pip size (for XAUUSD: 1 pip = 0.10 if tick = 0.01)
pipSize = syminfo.mintick * 10.0
tp1Points = tp1Pips * pipSize
slPoints = fixedSLpips * pipSize
baseQty = input.float (1.0, "Base order size" , step = 0.01, minval = 0.01)
//━━━━━━━━━━━━━━━━━━━
// 2. DAILY RISK MANAGEMENT
//━━━━━━━━━━━━━━━━━━━
isNewDay = ta.change(time("D")) != 0
var float dayStartEquity = na
var bool dailyStopped = false
equityNow = strategy.initial_capital + strategy.netprofit
if isNewDay or na(dayStartEquity)
dayStartEquity := equityNow
dailyStopped := false
dailyPnL = equityNow - dayStartEquity
dailyPnLPct = dayStartEquity != 0 ? (dailyPnL / dayStartEquity) * 100.0 : 0.0
if not dailyStopped
if dailyPnLPct <= -maxDailyLossPct
dailyStopped := true
if dailyPnLPct >= maxDailyProfitPct
dailyStopped := true
canTradeToday = not dailyStopped
//━━━━━━━━━━━━━━━━━━━
// 3. 1H S/R ZONES (for direction block)
//━━━━━━━━━━━━━━━━━━━
htOpen = request.security(syminfo.tickerid, htfTF, open)
htHigh = request.security(syminfo.tickerid, htfTF, high)
htLow = request.security(syminfo.tickerid, htfTF, low)
htClose = request.security(syminfo.tickerid, htfTF, close)
// Engulf logic on HTF
htBullPrev = htClose > htOpen
htBearPrev = htClose < htOpen
htBearEngulf = htClose < htOpen and htBullPrev and htOpen >= htClose and htClose <= htOpen
htBullEngulf = htClose > htOpen and htBearPrev and htOpen <= htClose and htClose >= htOpen
// Liquidity sweep on HTF previous candle
htSweepHigh = htHigh > ta.highest(htHigh, 5)
htSweepLow = htLow < ta.lowest(htLow, 5)
// Store last HTF zones
var float htResHigh = na
var float htResLow = na
var float htSupHigh = na
var float htSupLow = na
if htBearEngulf and htSweepHigh
htResHigh := htHigh
htResLow := htLow
if htBullEngulf and htSweepLow
htSupHigh := htHigh
htSupLow := htLow
// Are we inside HTF zones?
inHtfRes = not na(htResHigh) and close <= htResHigh and close >= htResLow
inHtfSup = not na(htSupLow) and close >= htSupLow and close <= htSupHigh
// Block direction against HTF zones
longBlockedByZone = inHtfRes // no buys in HTF resistance
shortBlockedByZone = inHtfSup // no sells in HTF support
//━━━━━━━━━━━━━━━━━━━
// 4. 1m LOCAL ZONES (LIQUIDITY SWEEP + ENGULF + QUALITY SCORE)
//━━━━━━━━━━━━━━━━━━━
// 1m engulf patterns
bullPrev1 = close > open
bearPrev1 = close < open
bearEngulfNow = close < open and bullPrev1 and open >= close and close <= open
bullEngulfNow = close > open and bearPrev1 and open <= close and close >= open
// Liquidity sweep by previous candle on 1m
sweepHighPrev = high > ta.highest(high, 5)
sweepLowPrev = low < ta.lowest(low, 5)
// Local zone storage (one active support + one active resistance)
// Quality score: 1 = engulf only, 2 = engulf + sweep (we only trade ≥2)
var float supLow = na
var float supHigh = na
var int supQ = 0
var bool supUsed = false
var float resLow = na
var float resHigh = na
var int resQ = 0
var bool resUsed = false
// New resistance zone: previous bullish candle -> bear engulf
if bearEngulfNow
resLow := low
resHigh := high
resQ := sweepHighPrev ? 2 : 1
resUsed := false
// New support zone: previous bearish candle -> bull engulf
if bullEngulfNow
supLow := low
supHigh := high
supQ := sweepLowPrev ? 2 : 1
supUsed := false
// Raw "inside zone" detection
inSupRaw = not na(supLow) and close >= supLow and close <= supHigh
inResRaw = not na(resHigh) and close <= resHigh and close >= resLow
// QUALITY FILTER: only trade zones with quality ≥ 2 (engulf + sweep)
highQualitySup = supQ >= 2
highQualityRes = resQ >= 2
inSupZone = inSupRaw and highQualitySup and not supUsed
inResZone = inResRaw and highQualityRes and not resUsed
// Plot zones
plot(supLow, "Sup Low", color = color.new(color.lime, 60), style = plot.style_linebr)
plot(supHigh, "Sup High", color = color.new(color.lime, 60), style = plot.style_linebr)
plot(resLow, "Res Low", color = color.new(color.red, 60), style = plot.style_linebr)
plot(resHigh, "Res High", color = color.new(color.red, 60), style = plot.style_linebr)
//━━━━━━━━━━━━━━━━━━━
// 5. MODERATE BOS (3-BAR FRACTAL STRUCTURE)
//━━━━━━━━━━━━━━━━━━━
// 3-bar swing highs/lows
swHigh = high > high and high > high
swLow = low < low and low < low
var float lastSwingHigh = na
var float lastSwingLow = na
if swHigh
lastSwingHigh := high
if swLow
lastSwingLow := low
// BOS conditions
bosUp = not na(lastSwingHigh) and close > lastSwingHigh
bosDown = not na(lastSwingLow) and close < lastSwingLow
// Zone “arming” and BOS validation
var bool supArmed = false
var bool resArmed = false
var bool supBosOK = false
var bool resBosOK = false
// Arm zones when first touched
if inSupZone
supArmed := true
if inResZone
resArmed := true
// BOS after arming → zone becomes valid for entries
if supArmed and bosUp
supBosOK := true
if resArmed and bosDown
resBosOK := true
// Reset BOS flags when new zones are created
if bullEngulfNow
supArmed := false
supBosOK := false
if bearEngulfNow
resArmed := false
resBosOK := false
//━━━━━━━━━━━━━━━━━━━
// 6. ENTRY CONDITIONS (ZONE + BOS + RISK STATE)
//━━━━━━━━━━━━━━━━━━━
flatOrShort = strategy.position_size <= 0
flatOrLong = strategy.position_size >= 0
longSignal = canTradeToday and not longBlockedByZone and inSupZone and supBosOK and flatOrShort
shortSignal = canTradeToday and not shortBlockedByZone and inResZone and resBosOK and flatOrLong
//━━━━━━━━━━━━━━━━━━━
// 7. ORDER LOGIC – TWO PROFIT STRATEGIES
//━━━━━━━━━━━━━━━━━━━
// Common metrics
atrTrail = ta.atr(atrTrailLen)
// MINIMAL MODE: single trade, BE after TP1, optional trailing
// HYBRID MODE: two trades (Scalp @ TP1, Runner @ TP2)
// Persistent tracking
var float longEntry = na
var float longTP1 = na
var float longTP2 = na
var float longSL = na
var bool longBE = false
var float longRunEntry = na
var float longRunTP1 = na
var float longRunTP2 = na
var float longRunSL = na
var bool longRunBE = false
var float shortEntry = na
var float shortTP1 = na
var float shortTP2 = na
var float shortSL = na
var bool shortBE = false
var float shortRunEntry = na
var float shortRunTP1 = na
var float shortRunTP2 = na
var float shortRunSL = na
var bool shortRunBE = false
isMinimal = profitStrategy == "Minimal Risk | Full BE after TP1"
isHybrid = profitStrategy == "Hybrid | Scalp TP + Runner TP"
//━━━━━━━━━━ LONG ENTRIES ━━━━━━━━━━
if longSignal
if isMinimal
longEntry := close
longSL := longEntry - slPoints
longTP1 := longEntry + tp1Points
longTP2 := longEntry + slPoints * runnerRR
longBE := false
strategy.entry("Long", strategy.long)
supUsed := true
supArmed := false
supBosOK := false
else if isHybrid
longRunEntry := close
longRunSL := longRunEntry - slPoints
longRunTP1 := longRunEntry + tp1Points
longRunTP2 := longRunEntry + slPoints * runnerRR
longRunBE := false
// Two separate entries, each 50% of baseQty (for backtest)
strategy.entry("LongScalp", strategy.long, qty = baseQty * 0.5)
strategy.entry("LongRun", strategy.long, qty = baseQty * 0.5)
supUsed := true
supArmed := false
supBosOK := false
//━━━━━━━━━━ SHORT ENTRIES ━━━━━━━━━━
if shortSignal
if isMinimal
shortEntry := close
shortSL := shortEntry + slPoints
shortTP1 := shortEntry - tp1Points
shortTP2 := shortEntry - slPoints * runnerRR
shortBE := false
strategy.entry("Short", strategy.short)
resUsed := true
resArmed := false
resBosOK := false
else if isHybrid
shortRunEntry := close
shortRunSL := shortRunEntry + slPoints
shortRunTP1 := shortRunEntry - tp1Points
shortRunTP2 := shortRunEntry - slPoints * runnerRR
shortRunBE := false
strategy.entry("ShortScalp", strategy.short, qty = baseQty * 50)
strategy.entry("ShortRun", strategy.short, qty = baseQty * 50)
resUsed := true
resArmed := false
resBosOK := false
//━━━━━━━━━━━━━━━━━━━
// 8. EXIT LOGIC – MINIMAL MODE
//━━━━━━━━━━━━━━━━━━━
// LONG – Minimal Risk: 1 trade, BE after TP1, runner to TP2
if isMinimal and strategy.position_size > 0 and not na(longEntry)
// Move to BE once TP1 is touched
if not longBE and high >= longTP1
longBE := true
// Base SL: BE or initial SL
float dynLongSL = longBE ? longEntry : longSL
// Optional trailing after BE
if longBE
if runnerStopMode == "Structure trail" and not na(lastSwingLow) and lastSwingLow > longEntry
dynLongSL := math.max(dynLongSL, lastSwingLow)
if runnerStopMode == "ATR trail"
trailSL = close - atrTrailMult * atrTrail
dynLongSL := math.max(dynLongSL, trailSL)
strategy.exit("Long Exit", "Long", stop = dynLongSL, limit = longTP2)
// SHORT – Minimal Risk: 1 trade, BE after TP1, runner to TP2
if isMinimal and strategy.position_size < 0 and not na(shortEntry)
if not shortBE and low <= shortTP1
shortBE := true
float dynShortSL = shortBE ? shortEntry : shortSL
if shortBE
if runnerStopMode == "Structure trail" and not na(lastSwingHigh) and lastSwingHigh < shortEntry
dynShortSL := math.min(dynShortSL, lastSwingHigh)
if runnerStopMode == "ATR trail"
trailSLs = close + atrTrailMult * atrTrail
dynShortSL := math.min(dynShortSL, trailSLs)
strategy.exit("Short Exit", "Short", stop = dynShortSL, limit = shortTP2)
//━━━━━━━━━━━━━━━━━━━
// 9. EXIT LOGIC – HYBRID MODE
//━━━━━━━━━━━━━━━━━━━
// LONG – Hybrid: Scalp + Runner
if isHybrid
// Scalp leg: full TP at TP1
if strategy.opentrades > 0
strategy.exit("LScalp TP", "LongScalp", stop = longRunSL, limit = longRunTP1)
// Runner leg
if strategy.position_size > 0 and not na(longRunEntry)
if not longRunBE and high >= longRunTP1
longRunBE := true
float dynLongRunSL = longRunBE ? longRunEntry : longRunSL
if longRunBE
if runnerStopMode == "Structure trail" and not na(lastSwingLow) and lastSwingLow > longRunEntry
dynLongRunSL := math.max(dynLongRunSL, lastSwingLow)
if runnerStopMode == "ATR trail"
trailRunSL = close - atrTrailMult * atrTrail
dynLongRunSL := math.max(dynLongRunSL, trailRunSL)
strategy.exit("LRun TP", "LongRun", stop = dynLongRunSL, limit = longRunTP2)
// SHORT – Hybrid: Scalp + Runner
if isHybrid
if strategy.opentrades > 0
strategy.exit("SScalp TP", "ShortScalp", stop = shortRunSL, limit = shortRunTP1)
if strategy.position_size < 0 and not na(shortRunEntry)
if not shortRunBE and low <= shortRunTP1
shortRunBE := true
float dynShortRunSL = shortRunBE ? shortRunEntry : shortRunSL
if shortRunBE
if runnerStopMode == "Structure trail" and not na(lastSwingHigh) and lastSwingHigh < shortRunEntry
dynShortRunSL := math.min(dynShortRunSL, lastSwingHigh)
if runnerStopMode == "ATR trail"
trailRunSLs = close + atrTrailMult * atrTrail
dynShortRunSL := math.min(dynShortRunSL, trailRunSLs)
strategy.exit("SRun TP", "ShortRun", stop = dynShortRunSL, limit = shortRunTP2)
//━━━━━━━━━━━━━━━━━━━
// 10. RESET STATE WHEN FLAT
//━━━━━━━━━━━━━━━━━━━
if strategy.position_size == 0
longEntry := na
shortEntry := na
longBE := false
shortBE := false
longRunEntry := na
shortRunEntry := na
longRunBE := false
shortRunBE := false
//━━━━━━━━━━━━━━━━━━━
// 11. VISUAL ENTRY MARKERS
//━━━━━━━━━━━━━━━━━━━
plotshape(longSignal, title = "Long Signal", style = shape.triangleup,
location = location.belowbar, color = color.lime, size = size.tiny, text = "L")
plotshape(shortSignal, title = "Short Signal", style = shape.triangledown,
location = location.abovebar, color = color.red, size = size.tiny, text = "S")
5-Min Range Breakout (09:30 NY on MNQ)This is a 5 - min orb strat that a youtuber mentioned and i had a manual look for a while and thought it was actually pretty good but my results are bad. Feel free to look yourself with this code.
Basically this strat is using the 5min orb then go down to 1min timeframe and wait for a breakout with FVG confirmation. So candle after breaking candle is our entry only if FVG is formed.
However i do notice if you dump this code onto 5min timefraem and above you start consistently making money but it is a very small amount for me so you all can have it. Good starter strat on 5min or 10min timeframe
MACD Zero-Line Strategy (Long Only)Strategy to Open order when Mac-D Signal Cross up 0, Sell when it cross down 0
Katik EMA BUY SELLThis strategy uses EMA 9, EMA 20, and EMA 200 to generate Buy and Sell signals.
BUY Conditions
EMA 9 crosses above EMA 20
Stoploss: Recent Swing Low
Target: EMA 9 touches or crosses EMA 200
SELL Conditions
EMA 9 crosses below EMA 20
Stoploss: Recent Swing High
Target: EMA 9 touches or crosses EMA 200
Features
Automatic Long & Short entries
Dynamic swing-based stoploss
Clear EMA plots with line width 3
Works on all timeframes
Profitable Pair Correlation Divergence Scanner v6This strategy identifies divergence opportunities between two correlated assets using a combination of Z-Score spread analysis, trend confirmation, RSI & MACD momentum checks, correlation filters, and ATR-based stop-loss/take-profit management. It’s optimized for positive P&L and realistic trade execution.
Key Features:
Pair Divergence Detection:
Measures deviation between returns of two assets and identifies overbought/oversold spread conditions using Z-Score.
Trend Alignment:
Trades only in the direction of the primary asset’s trend using a fast EMA vs slow EMA filter.
Momentum Confirmation:
Confirms trades with RSI and MACD to reduce false signals.
Correlation Filter:
Ensures the pair is strongly correlated before taking trades, avoiding noisy signals.
Risk Management:
Dynamic ATR-based stop-loss and take-profit ensures proper reward-to-risk ratio.
Exit Conditions:
Automatically closes positions when Z-Score normalizes, or ATR-based exits are hit.
How It Works:
Calculate Returns:
Computes returns for both assets over the selected timeframe.
Z-Score Spread:
Calculates the spread between returns and normalizes it using moving average and standard deviation.
Trend Filter:
Only takes long trades if the fast EMA is above the slow EMA, and short trades if the fast EMA is below the slow EMA.
Momentum Confirmation:
Confirms trade direction with RSI (>50 for longs, <50 for shorts) and MACD alignment.
Correlation Check:
Ensures the pair’s recent correlation is strong enough to validate divergence signals.
Trade Execution:
Opens positions when Z-Score crosses thresholds and all conditions align. Positions close when Z-Score normalizes or ATR-based SL/TP is hit.
Plot Explanation:
Z-Score: Blue line shows divergence magnitude.
Entry Levels: Red/Green lines mark long/short thresholds.
Exit Zone: Gray lines show normalization zone.
EMA Trend Lines: Purple (fast), Orange (slow) for trend alignment.
Correlation: Teal overlay shows current correlation strength.
Usage Tips:
Use highly correlated pairs for best results (e.g., EURUSD/GBPUSD).
Run on higher timeframe charts (1h or 4h) to reduce noise.
Adjust ATR multiplier based on volatility to avoid premature stops.
Combine with alerts for automated notifications or webhook execution.
Conclusion:
The Profitable Pair Correlation Divergence Scanner v6 is designed for traders who want systematic, low-risk, positive P&L trading opportunities with minimal manual monitoring. By combining trend alignment, momentum confirmation, correlation filters, and dynamic exits, it reduces false signals and improves execution reliability.
Run it on TradingView and watch how it captures divergence opportunities while maintaining positive P&L across trades.
specific breakout FiFTOStrategy Description: 10:14 Breakout Only
Overview This is a time-based intraday trading strategy designed to capture momentum bursts that occur specifically after the 10:14 AM candle closes. It operates on the logic that if price breaks the high of this specific candle within a short window, a trend continuation is likely.
Core Logic & Rules
The Setup Candle (10:14 AM)
The strategy waits specifically for the minute candle at 10:14 to complete.
Once this candle closes, the strategy records its High price.
Defining the Entry Level
It calculates a trigger price by taking the 10:14 High and adding a user-defined Buffer (e.g., +1 point).
Formula: Entry Level = 10:14 High + Buffer
The "Active Window" (Expiry)
The trade setup does not remain open all day. It has a strict time limit.
By default, the setup is valid from 10:15 to 10:20.
If the price does not break the Entry Level by the expiry time (default 10:20), the setup is cancelled and no trade is taken for the day.
Entry Trigger
If a candle closes above the Entry Level while the window is open, a Long (Buy) position is opened immediately.
Exits (Risk Management)
Stop Loss: A fixed number of points below the entry price.
Target: A fixed number of points above the entry price.
Visual & Automation Features
Visual Boxes: Upon entry, the strategy draws a "Long Position" style visual on the chart. A green box highlights the profit zone, and a red box highlights the loss zone. These boxes extend automatically until the trade closes.
JSON Alerts: The strategy is pre-configured to send data-rich alerts for automation (e.g., Telegram bots).
Entry Alert: Includes Symbol, Entry Price, SL, and TP.
Exit Alerts: Specific messages for "Target Hit" or "SL Hit".
Summary of User Inputs
Entry Buffer: Extra points added to the high to filter false breaks.
Fixed Stop Loss: Risk per trade in points.
Fixed Target: Reward per trade in points.
Expiry Minute: The minute (10:xx) at which the setup becomes invalid if not triggered.
BTC Dynamic Volatility Trend Backtested from 2017 to present, this strategy has delivered a staggering 7100%+ cumulative return. It doesn't just track the market; it dominates it. By capturing major trends and strictly limiting drawdowns, it has significantly outperformed the standard 'Buy & Hold' BTC strategy, proving its ability to generate massive alpha across multiple bull and bear cycles.
自 2017 年至今,本策略实现了惊人的 7100%+ 累计收益率。它不仅仅是跟随市场,更是超越了市场。通过精准捕捉主升浪并严格控制回撤,该策略在穿越多轮牛熊周期后,大幅度跑赢了比特币‘买入持有’(Buy & Hold)的基准收益,展现了极致的阿尔法(Alpha)捕捉能力。"
Introduction :Simplicity is the ultimate sophistication. This strategy is designed specifically for Bitcoin (BTC), capturing its unique characteristics: high volatility, frequent fakeouts, and massive trend persistence. It abandons complex indicators in favor of a robust logic: "Follow the Trend, Filter the Noise, Let Profits Run."
Core Logic
Trend Filter (Fibonacci EMA 144): We use the 144-period Exponential Moving Average as the baseline. Longs are only taken above this line, and shorts only below. This keeps you on the right side of the major trend.
Volatility Breakout (Donchian Channel 20): Entries are triggered only when price breaks the 20-day high (for longs) or low (for shorts). This confirms momentum and avoids trading in chop.
Dynamic Risk Management (ATR Chandelier Exit):
Instead of fixed % stops, we use Average True Range (ATR) to calculate stop losses.
The Ratchet Mechanism: The stop loss moves up with the price but never moves down (for longs). This locks in profits automatically as the trend develops and exits immediately when volatility turns against you.
Why Use This Strategy?
Zero Repainting: All signals are confirmed.
No Curve Fitting: Uses classic parameters (144, 20) that have worked for decades.
Mental Peace: The strategy handles the exit. You don't need to guess where to sell. It holds through minor corrections and exits only when the trend truly reverses.
Settings
Leverage %: Adjust your position size based on equity (default 100% = 1x).
Timeframe: Recommended for 4H charts.
中文版 (Chinese Version)
简介 :大道至简。本策略专为 比特币 (BTC) 设计,针对其高波动、假突破多但趋势爆发力强的特点,摒弃了复杂的过度拟合指标,回归交易本质:“顺大势,滤噪音,截断亏损,让利润奔跑”。
核心逻辑
趋势过滤器 (斐波那契 EMA 144): 使用 144 周期指数移动平均线作为多空分水岭。价格在均线之上只做多,之下只做空。这能有效过滤掉大部分震荡市的噪音。
波动率突破 (唐奇安通道 20): 只有当价格突破过去 20 根 K 线的最高价(做多)或最低价(做空)时才进场。这确保了我们只在趋势确立的瞬间入场。
动态风控 (ATR 吊灯止损):
拒绝固定点数止损,使用 ATR(平均真实波幅)根据市场热度动态计算安全距离。
棘轮机制: 止损线会跟随价格上涨而上移,但绝不会下移(做多时)。这实现了自动化的“利润锁定”,既能扛住正常的波动回调,又能在大势反转时果断离场。
策略优势
绝不重绘: 所有信号均为收盘确认或实时触价。
拒绝拟合: 使用经过数十年市场验证的经典参数组合。
心态管理: 策略全自动管理出场。你不需要纠结何时止盈,它会帮你吃到完整的鱼身,直到趋势结束。
使用建议
资金管理: 可通过参数调整仓位占比(默认 100% = 1倍杠杆)。
推荐周期: 建议在4小时 图表上运行效果最佳。
US Market Long Horizon Momentum Summary in one paragraph
US Market Long Horizon Momentum is a trend following strategy for US index ETFs and futures built around a single eighteen month time series momentum measure. It helps you stay long during persistent bull regimes and step aside or flip short when long term momentum turns negative.
Scope and intent
• Markets. Large cap US equity indices, liquid US index ETFs, index futures
• Timeframes. 4h/ Daily charts
• Default demo used in the publication. SPY on 4h timeframe chart
• Purpose. Provide a minimal long bias index timing model that can reduce deep drawdowns and capture major cycles without parameter mining
• Limits. This is a strategy. Orders are simulated on standard candles only
Originality and usefulness
• Unique concept or fusion. One unscaled multiple month log return of an external benchmark symbol drives all entries and exits, with optional volatility targeting as a single risk control switch.
• Failure mode addressed. Fully passive buy and hold ignores the sign of long horizon momentum and can sit through multi year drawdowns. This script offers a way to step down risk in prolonged negative momentum without chasing short term noise.
• Testability. All parameters are visible in Inputs and the momentum series is plotted so users can verify every regime change in the Tester and on price history.
• Portable yardstick. The log return over a fixed window is a unit that can be applied to any liquid symbol with daily data.
Method overview in plain language
The method looks at how far the benchmark symbol has moved in log return terms over an eighteen month window in our example. If that long horizon return is positive the strategy allows a long stance on the traded symbol. If it is negative and shorts are enabled the strategy can flip short, otherwise it goes flat. There is an optional realised volatility estimate on the traded symbol that can scale position size toward a target annual volatility, but in the default configuration the model uses unit leverage and only the sign of momentum matters.
Base measures
Return basis. The core yardstick is the natural log of close divided by the close eighteen months ago on the benchmark symbol. Daily log returns of the traded symbol feed the realised volatility estimate when volatility targeting is enabled.
Components
• Component one Momentum eighteen months. Log of benchmark close divided by its close mom_lookback bars ago. Its sign defines the trend regime. No extra smoothing is applied beyond the long window itself.
• Component two Realised volatility optional. Standard deviation of daily log returns on the traded symbol over sixty three days. Annualised by the square root of 252. Used only when volatility targeting is enabled.
• Optional component Volatility targeting. Converts target annual volatility and realised volatility into a leverage factor clipped by a maximum leverage setting.
Fusion rule
The model uses a simple gate. First compute the sign of eighteen month log momentum on the benchmark symbol. Optionally compute leverage from volatility. The sign decides whether the strategy wants to be long, short, or flat. Leverage only rescales position size when enabled and does not change direction.
Signal rule
• Long suggestion. When eighteen month log momentum on the benchmark symbol is greater than zero, the strategy wants to be long.
• Short suggestion. When that log momentum is less than zero and shorts are allowed, the strategy wants to be short. If shorts are disabled it stays flat instead.
• Wait state. When the log momentum is exactly zero or history is not long enough the strategy stays flat.
• In position. In practice the strategy sits IN LONG while the sign stays positive and flips to IN SHORT or flat only when the sign changes.
Inputs with guidance
Setup
• Momentum Lookback (months). Controls the horizon of the log return on the benchmark symbol. Typical range 6 to 24 months. Raising it makes the model slower and more selective. Lowering it makes it more reactive and sensitive to medium term noise.
• Symbol. External symbol used for the momentum calculation, SPY by default. Changing it lets you time other indices or run signals from a benchmark while trading a correlated instrument.
Logic
• Allow Shorts. When true the strategy will open short positions during negative momentum regimes. When false it will stay flat whenever momentum is negative. Practical setting is tied to whether you use a margin account or an ETF that supports shorting.
Internal risk parameters (not exposed as inputs in this version) are:
• Target Vol (annual). Target annual volatility for volatility targeting, default 0.2.
• Vol Lookback (days). Window for realised volatility, default 63 trading days.
• Max Leverage. Cap on leverage when volatility targeting is enabled, default 2.
Usage recipes
Swing continuation
• Signal timeframe. Use the daily chart.
• Benchmark symbol. Leave at SPY for US equity index exposure.
• Momentum lookback. Eighteen months as a default, with twelve months as an alternative preset for a faster swing bias.
Properties visible in this publication
• Initial capital. 100000
• Base currency. USD
• Default order size method. 5% of the total capital in this example
• Pyramiding. 0
• Commission. 0.03 percent
• Slippage. 3 ticks
• Process orders on close. On
• Bar magnifier. Off
• Recalculate after order is filled. Off
• Calc on every tick. Off
• All request.security calls use lookahead = barmerge.lookahead_off
Realism and responsible publication
The strategy is for education and research only. It does not claim any guaranteed edge or future performance. All results in Strategy Tester are hypothetical and depend on the data vendor, costs, and slippage assumptions. Intrabar motion is not modeled inside daily bars so extreme moves and gaps can lead to fills that differ from live trading. The logic is built for standard candles and should not be used on synthetic chart types for execution decisions.
Performance is sensitive to regime structure in the US equity market, which may change over time. The strategy does not protect against single day crash risk inside bars and does not model gap risk explicitly. Past behavior of SPY and the momentum effect does not guarantee future persistence.
Honest limitations and failure modes
• Long sideways regimes with small net change over eighteen months can lead to whipsaw around the zero line.
• Very sharp V shaped reversals after deep declines will often be missed because the model waits for momentum to turn positive again.
• The sample size in a full SPY history is small because regime changes are infrequent, so any test must be interpreted as indicative rather than statistically precise.
• The model is highly dependent on the chosen lookback. Users should test nearby values and validate that behavior is qualitatively stable.
Legal
Education and research only. Not investment advice. You are responsible for your own decisions. Always test on historical data and in simulation with realistic costs before any live use.
Gold Mastermind Pro v6EMA50 / EMA200 trend (UP / DOWN / FLAT)
VWAP + ATR + RSI filters for entries
ATR-based stop & 2R target
Risk-based position sizing with max 5 contracts
Cooldown in bars after each entry
Long arrows = baby blue, Short arrows = bright orange
Simple dashboard label showing trend, qty, stop & target
Indian Scalper 2025 – PSAR + SMA50 + RSI≤50 + High Volume (75%)Best 1-min / 2-min scalping strategy for NIFTY, BANKNIFTY, FINNIFTY & liquid stocks in 2025
✓ PSAR flip + SMA-50 trend filter
✓ RSI ≤50 (avoids chasing)
✓ Only high-volume candles (bright colour)
✓ Loud mobile alerts with price & SL
✓ 1:2+ RR with PSAR trailing
Works like magic 9:15–11:30 AM and 2–3:20 PM
Made with love for the Indian trading community ♥
Momentum Reversal / Dip Buyer [Score Based]Strategy Overview
Momentum Reversal / Dip Buyer is a quantitative reversal engine designed to fade stretched moves and buy dips / sell rallies when multiple momentum and context factors line up. It’s built for liquid instruments especially for ticker CME_MINI:ES1! and works best on intraday timeframes like the 5-minute or 1-minute chart.
Core Logic
This strategy builds a composite Momentum Score by combining:
Price Location: Relative to 100 SMA, 1000 EMA, and VWAP (trend / regime filter).
RSI: Overbought/oversold and mid-zone strength.
VWMO (Volume-Weighted Momentum): Direction and strength of volume-weighted price drift.
ADX: Trend strength filter (high vs low trend environment).
Full Stoch (%K): Short-term exhaustion and mean-reversion context.
CCI: Overbought/oversold turns (key trigger).
MFI: Volume-confirmed buying/selling pressure.
ATR Regime: High vs low volatility environment.
Cumulative Delta: Whether net aggressor flow is rising or falling.
From this, a single Momentum Score is computed each bar:
Longs: Taken when the score is depressed (scoreLow) and CCI crosses up from oversold.
Shorts: Taken when the score is elevated (scoreHigh) and CCI crosses down from overbought.
Risk Management & Trade Logic
Max Daily Trades: Hard cap on entries per day.
Hard Stop: Fixed % stop based on entry price.
Profit Target: Target ATR Multiplier × main ATR from entry.
Breakeven Logic: Optional; moves stop to breakeven (plus optional offset) after price moves a configurable multiple of the main ATR in your favor.
Trailing Stop (Separate ATR): Optional; uses its own ATR length and ATR-based trigger and distance. This lets you run slower ATR for targets while using a tighter, more reactive ATR for the trail.
Session Control
Trading Window: Optional session filter (e.g., 09:30–16:00). Entries are only allowed inside the defined window.
Force Flat at Session End: Option to automatically close all open positions when the session ends.
Visuals
The script plots entry arrows and a compact dashboard displaying: current Momentum Score, daily trade usage, and CCI status.
Disclaimer:
This script is for educational and research purposes only and is not financial advice. Past performance does not guarantee future results. Always forward-test and adjust parameters to your own risk tolerance and market.
Shoutout and all credit goes to AuclairsCapital for building the base foundation of this strategy on ThinkScript
Ashok 07 Dec 25 updated scriptTried to fix the bugs in previous script. Even now improvements are needed, but for now it looks reasonably profiting.
CPR + EMA(20/50/200) Strategy (5m) - NIFTY styleindicator best suited for nifty for 5 minute time frame.
Inyerneck Quiet Bottom Hunter v36 — Last Sorta-Working VersionQuiet Bottom Hunter v36 — Accurate Description (the sorta-working version that fires signals)
Overview
A mean-reversion bottom-hunting strategy for small-cap stocks (<$2B market cap). Designed to catch slow-bleed stocks that quietly bottom out and rebound 20–60%+. Good for beginners because signals are infrequent and the setup is easy to understand.
Timeframe
Daily (D) — best results on 1-day charts. Works on weekly too, but signals are rarer.
Triggers / Conditions (all must be true at bar close)
Drop from high ≥ 25% from the highest high in the last 100 bars (previous bars only — no repainting)
Volume ≤ 80% of the 50-day average (quiet accumulation, no panic selling left)
RSI(14) ≤ 38 (oversold territory)
Green/flat streak ≥ 2 consecutive days where close ≥ open (shows sellers are exhausted)
When all four line up → tiny green “QB” triangle below the bar
Firing Frequency
1–4 signals per month on an average small-cap stock (depends on market conditions). Some months zero, some months a handful. Not spammy, but not ultra-rare either.
Usage Parameters
Position size: 10% of equity per trade (default — change to 5–20% depending on risk tolerance)
Profit target: 40%
Stop loss: 12%
Hold time: usually 2–8 weeks
Best on low-float, high-volatility small caps (TLRY, SNDL, MVIS, SOUN, INHD, etc.)
Expected Performance (backtested on 2025 small caps)
Win rate: ~80–85%
Average rebound on winners: +30–40%
Some losers when the bottom isn't "quiet" enough
How to use
Add to daily charts of your small-cap watchlist
When “QB” arrow appears, buy at next open or market
Set 40% target / 12% stop or trail it
Wait for the rebound — no day-trading needed
The Flody SniperA trend-following sniper strategy that uses two EMAs (21/55) and RSI to confirm momentum.
It enters long when price crosses above the fast EMA during an uptrend and RSI shows strength.
It enters short when price crosses below the fast EMA during a downtrend and RSI shows weakness.
Pyramiding is enabled so the strategy can add more positions as the trend continues.
Positions close when momentum weakens or price breaks back through the fast EMA.
Bollinger Bands Mean Reversion using RSI [Krishna Peri]How it Works
Long entries trigger when:
- RSI reaches oversold levels, and
- At least one bullish candle closes inside the lower Bollinger Band
Short entries trigger when:
- RSI reaches overbought levels, and
- At least one bearish candle closes inside the upper Bollinger Band
This approach aims to capture exhaustion moves where price pushes into extreme deviation from its mean and then snaps back toward the middle band.
Important Disclaimer
This is a mean-reversion strategy, which means it performs best in sideways, ranging, or slowly oscillating market conditions. When markets shift into strong trends, Bollinger Bands expand and volatility increases, which may cause some signals to become inaccurate or fail altogether.
For best results, combine this script with:
- Price action
- Market structure
- Higher-timeframe trend context
- Previous day/week/month highs & lows
- Untested liquidity levels or imbalance zones
- Session timing (Asia, London, NY)
Using these confluences helps filter out low-probability trades and significantly improves consistency and precision.
Adaptive Alligator - Asymmetric MH (Entry Only)
Adaptive Alligator – Asymmetric Mexican Hat (Entry Only)
This strategy combines adaptive cycle detection (wavelet + autocorrelation), directional entropy, and a Mexican Hat filter to generate highly selective LONG entry signals. Exits are based solely on the Alligator structure. The system is designed to detect asymmetric, strong, and accelerating bullish phases while filtering out market noise.
1. Adaptive Cycle Detection: The strategy analyzes the median price using wavelet decomposition (Haar, Daubechies D4/D6, Symlet 4), wavelet detail energy, and autocorrelation. It also incorporates the ratio of short-term to long-term ATR volatility. Based on these components, it computes a dominant_cycle value, which dynamically controls the lengths of the Alligator lines (Jaw, Teeth, Lips). This adaptive behavior allows the Alligator to speed up during trending phases and slow down during noise or consolidation.
2. Directional Entropy: Entropy is measured separately for upward and downward movements within the selected lookback window. The entropy difference: e_diff = entropy_down - entropy_up represents the directional bias of the market. When e_diff > 0, the market shows an organized bullish pressure; when < 0, bearish dominance.
3. Mexican Hat Filter: The Mexican Hat (Ricker Wavelet) acts as a second-derivative filter, detecting local maxima in the acceleration of directional entropy. The filtered output (mh_out) is compared against an adaptive noise level computed as SMA(|mh_out|). A signal is considered strong only when: – mh_out exceeds the adaptive noise level, – mh_out is rising relative to the previous bar. This step is critical for eliminating false signals produced by random fluctuations.
4. Entry Logic: A LONG entry requires all three layers: (1) Alligator structure: Lips > Teeth > Jaw. (2) Directional entropy bias: e_diff > 0. (3) A strong, accelerating Mexican Hat signal confirmed by a user-defined number of bars. Once all conditions are satisfied, a buy_final entry is triggered.
5. Exit Logic: Exits are intentionally simple and rely solely on the Alligator: crossunder(lips, teeth) This clean separation ensures precise, adaptive entries and stable, consistent exits.
6. Visual Components: – Alligator lines: Jaw (blue), Teeth (red), Lips (green), plotted with their characteristic offsets. – Background coloring reflects signal strength: dark green (STRONG BUY), lime (acceleration), yellow (weak bias), transparent otherwise. – A dedicated panel displays e_diff (entropy difference), mh_out (Mexican Hat output), and the adaptive noise band.
7. Diagnostic Table: A compact diagnostic dashboard shows: – MH Value, – Noise Level, – MH Acceleration (YES/NO), – Signal Status (STRONG BUY / ACCELERATING / WEAK / BEARISH). It updates on the last bar, making it suitable for live monitoring.
8. Use Case: This strategy is highly selective and ideal as an entry module within trend-following systems. By combining wavelets, entropy, and adaptive noise modeling, it effectively filters out consolidation periods and focuses only on statistically significant bullish transitions. It can be integrated with various exit frameworks such as ATR stops, channel-based exits, range boxes, or trailing logic.
Options Scalper v2 - SPY/QQQHere's a comprehensive description of the Options Scalper v2 strategy:
---
## Options Scalper v2 - SPY/QQQ
### Overview
A multi-indicator confluence-based scalping strategy designed for trading SPY and QQQ options on short timeframes (1-5 minute charts). The strategy uses a scoring system to generate high-probability CALL and PUT signals by requiring alignment across multiple technical indicators before triggering entries.
---
### Core Logic
The strategy operates on a **scoring system (0-9 points)** where both bullish (CALL) and bearish (PUT) conditions are evaluated independently. A signal only fires when:
1. A recent EMA crossover occurred (within the last 3 bars)
2. The direction's score meets the minimum threshold (default: 4 points)
3. The signal's score is higher than the opposite direction
4. Enough bars have passed since the last signal (cooldown period)
5. Price action occurs during valid trading sessions
---
### Indicators Used
| Indicator | Purpose | CALL Condition | PUT Condition |
|-----------|---------|----------------|---------------|
| **9/21 EMA Cross** | Primary trigger | Fast EMA crosses above slow | Fast EMA crosses below slow |
| **200 EMA** | Trend filter | Price above 200 EMA | Price below 200 EMA |
| **RSI (14)** | Momentum filter | RSI between 45-65 | RSI between 35-55 |
| **VWAP** | Institutional level | Price above VWAP | Price below VWAP |
| **MACD (12,26,9)** | Momentum confirmation | MACD line > Signal line | MACD line < Signal line |
| **Stochastic (14,3)** | Overbought/Oversold | Oversold or K > D | Overbought or K < D |
| **Volume** | Participation confirmation | Spike on green candle | Spike on red candle |
| **Price Structure** | Breakout detection | Higher high formed | Lower low formed |
---
### Scoring Breakdown
**CALL Score (Max 9 points):**
- Recent EMA cross up: +2 pts
- EMA alignment (fast > slow): +1 pt
- RSI in bullish range: +1 pt
- Above VWAP: +1 pt
- MACD bullish: +1 pt
- Volume spike on green candle: +1 pt
- Stochastic setup: +1 pt
- Above 200 EMA: +1 pt
- Breaking higher high: +1 pt
**PUT Score (Max 9 points):**
- Recent EMA cross down: +2 pts
- EMA alignment (fast < slow): +1 pt
- RSI in bearish range: +1 pt
- Below VWAP: +1 pt
- MACD bearish: +1 pt
- Volume spike on red candle: +1 pt
- Stochastic setup: +1 pt
- Below 200 EMA: +1 pt
- Breaking lower low: +1 pt
---
### Risk Management
The strategy uses **ATR-based dynamic stops and targets**:
| Parameter | Default | Description |
|-----------|---------|-------------|
| Stop Loss | 1.5x ATR | Distance below entry for longs, above for shorts |
| Take Profit | 2.0x ATR | Creates a 1:1.33 risk-reward ratio |
Positions are also closed on:
- Opposite direction signal (flip trade)
- Take profit or stop loss hit
---
### Session Filtering
Trades are restricted to high-liquidity periods by default:
- **Morning Session:** 9:30 AM - 11:00 AM EST
- **Afternoon Session:** 2:30 PM - 3:55 PM EST
This avoids choppy midday price action and captures the highest volume periods.
---
### Input Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| Fast EMA | 9 | Fast moving average period |
| Slow EMA | 21 | Slow moving average period |
| Trend EMA | 200 | Long-term trend filter |
| RSI Length | 14 | RSI calculation period |
| RSI Overbought | 65 | Upper RSI threshold |
| RSI Oversold | 35 | Lower RSI threshold |
| Volume Multiplier | 1.2x | Volume spike detection threshold |
| Min Signal Strength | 4 | Minimum score required to trigger |
| Crossover Lookback | 3 | Bars to consider crossover "recent" |
| Min Bars Between Signals | 5 | Cooldown period between signals |
---
### Visual Elements
**Chart Plots:**
- Green line: 9 EMA (fast)
- Red line: 21 EMA (slow)
- Gray line: 200 EMA (trend)
- Purple dots: VWAP
**Signal Markers:**
- Green triangle up + "CALL" label: Buy call signal
- Red triangle down + "PUT" label: Buy put signal
- Small circles: EMA crossover reference points
**Info Table (Top Right):**
- Real-time CALL and PUT scores
- RSI, MACD, Stochastic values
- VWAP and 200 EMA position
- Recent crossover status
- Current signal state
---
### Alerts
| Alert Name | Trigger |
|------------|---------|
| CALL Entry | Standard call signal fires |
| PUT Entry | Standard put signal fires |
| Strong CALL | Call signal with score ≥ 6 |
| Strong PUT | Put signal with score ≥ 6 |
---
### Recommended Usage
| Setting | 0DTE Scalping | Intraday Swings |
|---------|---------------|-----------------|
| Timeframe | 1-2 min | 5 min |
| Min Signal Strength | 5-6 | 4 |
| ATR Stop Mult | 1.0 | 1.5 |
| ATR TP Mult | 1.5 | 2.0 |
| Option Delta | 0.40-0.50 | 0.30-0.40 |
---
### Key Improvements Over v1
1. **Requires actual crossover** - Eliminates false signals from simple trend continuation
2. **Balanced scoring** - Both directions evaluated equally, highest score wins
3. **Signal cooldown** - Prevents overtrading with minimum bar spacing
4. **Multi-indicator confluence** - 8 factors must align for signal generation
5. **Volume-candle alignment** - Volume spikes only count when matching candle direction
---
### Disclaimer
This strategy is for educational purposes. Backtest thoroughly before live trading. Options trading involves significant risk of loss. Past performance does not guarantee future results.






















