Video: This Strategy Should Be Required Viewing Before You Take Another Trade
Creator: TradeGenius
Original Video: Watch the original video
Difficulty: Intermediate
The Big Idea
A pullback signal is a candidate trade, not an instruction to enter. TradeGenius combines two closing-price exponential moving averages with a separate oscillator check. Price establishes direction, a pullback creates the setup, and the oscillator determines whether the presenter accepts or skips the signal.
The central distinction is selectivity. Similar-looking labels can receive different decisions because the oscillator is in a different state. The supplied transcript illustrates that process, but it provides no complete trade sample, performance table or evidence that the filter improves returns after costs.
The Source Setup
| Component | Settings described in the transcript | Role |
|---|---|---|
| Fast EMA | 45 periods, close | Pullback reference and reclaim/break line |
| Slow EMA | 200 periods, close | Broader price-direction reference |
| Pullback back steps | 5 | Lookback used by the named signal tool |
| Range Oscillator | Minimum range length 200; width multiplier 1.5 | Additional acceptance filter |
| Oscillator zone | Between −100 and +100 | The presenter’s preferred transitional zone |
| Profit objective | 2R or 3R | Target relative to the planned stop distance |
The video names a double-EMA pullback indicator attributed to Hannibal and a Range Oscillator attributed in the transcript to “Zireman.” The exact identity and implementation of the first tool are not established by the transcript. The identifiable public Range Oscillator by Zeiierman (paid link) describes adaptive range detection, a weighted equilibrium calculation and heatmap coloring. Consequently, a simple EMA-distance formula should not be presented as that indicator.
How the Presenter Selects a Trade
For the short example, price is below both averages. It pulls back toward the fast line, then breaks back below the lines and produces a sell label. The presenter accepts the example when the oscillator is white and inside the two thresholds. A similar price signal is skipped when the oscillator is red and below the lower threshold.
The long example reverses the price structure: price is above the averages, pulls back toward the fast EMA, then recovers above it. A green oscillator reading above the upper threshold causes the presenter to skip the illustrated buy label.
These are the video’s decision rules. “Overbought” does not establish that a market cannot rise further, and “oversold” does not establish that a decline has exhausted itself. Strong trends can remain extended. A neutral-zone requirement may avoid some late entries while also excluding profitable continuation trades. Whether that tradeoff helps is a research question.
The source gives a choice of stop reference: a recent swing high for shorts, or a moving-average level when it supplies the cleaner location. It describes targets two or three times the amount risked. It does not turn “recent swing” or “cleanest level” into a mechanical calculation. The supplied excerpt ends as the presenter introduces the full process, so it should not be treated as a complete specification of every later instruction.
A Checklist Before Entry
- Identify direction. Determine where price sits relative to the 45- and 200-period averages.
- Wait for the pullback and recovery or break. Distinguish a completed signal from one still forming.
- Check the oscillator on that same decision bar. Record its numerical value, not just a screenshot color.
- Choose the invalidation level before entry. Establish a consistent stop rule rather than switching references after seeing the outcome.
- Calculate size and target. Convert the stop distance into monetary exposure and choose 2R or 3R in advance.
- Check execution conditions. Include spread, liquidity, gaps and, for shorts, availability and borrowing costs.
For example, an intended short at $100 with a $102 stop has $2 of planned risk per share. A 2R target is $96; a 3R target is $94. This arithmetic is an illustration, not a trade recommendation. Actual fills, costs and a gap through the stop change the realized result.
What Must Be Defined Before Backtesting
The EMA lengths are explicit, but the exact label algorithm is not. A five-bar back-step input does not tell us whether the original script checks a wick touch, a closing-price crossing, consecutive candles or another sequence. Nor does it establish whether labels can change before a candle closes.
The following baseline therefore tests a separate, transparent hypothesis. A long requires a confirmed close crossing above the fast EMA while above the slow EMA, plus a low touching or crossing the fast EMA within the preceding five bars. Shorts mirror those rules. It does not add a requirement that the fast EMA be above the slow EMA because that ordering is not specified in the supplied excerpt.
The oscillator proxy measures closing-price distance from a 200-period EMA, normalized by 1.5 times a 200-period ATR and scaled by 100. Values strictly inside −100 and +100 pass the proxy filter. That calculation is our research assumption; it is not Zeiierman’s weighted, adaptive range implementation. The baseline’s filter toggle allows a controlled comparison with the same pullback rules and no oscillator gate.
Stops use the most extreme high or low over the current five-bar window, including the signal candle, with a one-tick buffer. These rolling extremes are not confirmed swing pivots. The baseline fixes the stop and target at entry rather than choosing the better-looking moving-average reference afterward.
Pine Script Research Baseline
Show Pine Script research baseline
//@version=6
strategy("CandleChasers EMA Pullback Research Proxy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.05, slippage=1, process_orders_on_close=true)
// Independent proxy, not a recreation of either named indicator.
fastLength = input.int(45, "Fast EMA", minval=1)
slowLength = input.int(200, "Slow EMA", minval=2)
lookback = input.int(5, "Touch / stop window", minval=1)
rangeLength = input.int(200, "Proxy EMA and ATR length", minval=2)
width = input.float(1.5, "Proxy ATR width", minval=0.1, step=0.1)
rr = input.float(2.0, "Signal-price reward/risk", minval=0.1, step=0.5)
useFilter = input.bool(true, "Apply neutral-zone proxy filter")
allowShorts = input.bool(false, "Allow shorts (requires separate shorting assumptions)")
fast = ta.ema(close, fastLength)
slow = ta.ema(close, slowLength)
center = ta.ema(close, rangeLength)
atr = ta.atr(rangeLength)
osc = atr > 0 ? 100 * (close - center) / (width * atr) : na
neutral = not na(osc) and osc > -100 and osc < 100
longTouch = ta.lowest(low - fast, lookback)[1] <= 0
shortTouch = ta.highest(high - fast, lookback)[1] >= 0
crossUp = ta.crossover(close, fast)
crossDown = ta.crossunder(close, fast)
longStopCandidate = ta.lowest(low, lookback) - syminfo.mintick
shortStopCandidate = ta.highest(high, lookback) + syminfo.mintick
ready = bar_index >= math.max(math.max(fastLength, slowLength), rangeLength) + lookback
longSignal = ready and barstate.isconfirmed and close > slow and crossUp and longTouch
shortSignal = ready and barstate.isconfirmed and close < slow and crossDown and shortTouch
permit = not useFilter or neutral
var float activeStop = na
var float activeTarget = na
// A position closing on this bar prevents immediate same-bar re-entry.
closedThisBar = strategy.closedtrades > nz(strategy.closedtrades[1], 0)
if strategy.position_size == 0 and not closedThisBar and permit
if longSignal and close > longStopCandidate
activeStop := longStopCandidate
activeTarget := close + rr * (close - activeStop)
strategy.entry("Long", strategy.long)
strategy.exit("Long bracket", "Long", stop=activeStop, limit=activeTarget)
else if allowShorts and shortSignal and shortStopCandidate > close
activeStop := shortStopCandidate
activeTarget := close - rr * (activeStop - close)
strategy.entry("Short", strategy.short)
strategy.exit("Short bracket", "Short", stop=activeStop, limit=activeTarget)
if strategy.position_size > 0
strategy.exit("Long bracket", "Long", stop=activeStop, limit=activeTarget)
if strategy.position_size < 0
strategy.exit("Short bracket", "Short", stop=activeStop, limit=activeTarget)
plot(fast, "45 EMA", color=color.blue)
plot(slow, "200 EMA", color=color.yellow)
plot(strategy.position_size != 0 ? activeStop : na, "Frozen stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size != 0 ? activeTarget : na, "Frozen target", color=color.green, style=plot.style_linebr)
plot(osc, "Independent oscillator proxy", display=display.data_window)
This independent Pine Script v6 strategy uses 10% equity exposure per entry, one position at a time, no pyramiding and long trades by default. A shorting toggle is available for a separate experiment. It uses illustrative commission of 0.05% per order and one tick of slippage; replace those assumptions with suitable costs for the instrument under study.
Orders are modeled at the confirmed signal candle’s close. That makes the example easy to inspect but can be optimistic for a signal discovered only at the close, particularly at a stock session’s final bar. The target is calculated from the signal close, so slippage means the actual fill-to-stop reward/risk will differ slightly from the selected multiple. Test next-bar execution separately before treating the results as implementable.
Validation status: The code is provided as a complete research baseline. It has not been compiled in TradingView or backtested here, and no profit, win-rate or drawdown result is claimed.
How to Run a Useful Experiment
Begin with standard candles and one clearly defined stock/timeframe sample. Record the data dates, trading session and adjustment settings. Reserve later data for evaluation instead of choosing settings on the entire history. The source excerpt does not establish a preferred market or timeframe, so a daily-stock test is an application choice rather than a faithful recreation of the video’s demonstrations.
Compare filter on and filter off while holding the EMA settings, entry timing, stop rule, sizing and costs constant. Report total trades, net expectancy, average win and loss, maximum drawdown and exposure. Inspect which opportunities the filter removed, including winners it excluded. A higher win rate with very few trades or materially larger losses may not represent an improvement.
Evaluate 2R and 3R as separate planned variants. Before costs, a system winning exactly 2R and losing exactly 1R needs a win rate above 33.3% to have positive expectancy; at 3R the threshold is above 25%. Those break-even figures are arithmetic under fixed-outcome assumptions. Partial exits, gaps, fees and uneven realized losses change them.
Inspect bars where a stop and target are both touched. Historical OHLC data does not establish their true intrabar order. Compare more detailed execution modeling where available. Also inspect the final open trade: this script has no time exit or forced end-of-sample liquidation, so an unclosed position is not a completed result.
Where the Setup Can Fail
- Repeated EMA crossings: A sideways market can generate many pullback candidates without useful continuation.
- Filter tradeoffs: An extended oscillator may precede further trend acceleration, while a neutral reading can precede a reversal.
- Stop inconsistency: Alternating between swings and averages introduces discretion unless the choice is defined before testing.
- Opening and overnight gaps: A stop order does not guarantee a fill at the intended price.
- Shorting constraints: A chart signal does not establish borrow availability or include financing and locate costs.
- Proxy mismatch: Results from this script describe its own explicit rules, not the original indicators or the creator’s trading performance.
Final Takeaway
The useful lesson is the distinction between recognizing a setup and deciding whether to trade it. TradeGenius uses an EMA pullback signal with a second acceptance check. A disciplined evaluation must define that check, the stop selection and the execution model precisely enough that another researcher can reproduce the decisions.
Treat the source as an idea to examine. The baseline above supplies one transparent proxy for that examination; it does not establish an edge or reproduce the video’s exact labels.
Risk Disclosure
This guide is educational and is not personalized investment advice. Trading can cause substantial losses. Historical or simulated results do not guarantee future returns. Stops, liquidity, gaps and execution costs can produce losses beyond planned risk. Short selling adds borrowing constraints and potentially unlimited loss.
Independence
CandleChasers is not affiliated with TradeGenius, the named indicator authors or TradingView. Mentioning a video, indicator or membership does not constitute an endorsement. The research script is independently written and does not reproduce either named indicator’s source code.