swingHigh Rtrend-followingmediumBest TF: 4hFailed out-of-sampleTV: Compiled (Pine v6 PASS)

EMA Pullback

In a trending market, wait for price to pull back to the 20-EMA, then enter in the direction of the trend.

Profitability — TV multi-year derived

NEGATIVE EV
RM/Day
-135
net MYR ÷ trading days
Trades/Day
1.4
avg trade frequency
Monthly Est
RM -2,972
RM/day × 22 days
Trading Days
1,038
2022-01-01 → 2026-04-25
Philosophy

Trends breathe. The 20-EMA is where institutional money often re-enters. Don't chase — wait for the pullback, even if it means missing some moves.

Walk-forward status: Failed out-of-sample

Every variant we walk-forward-tested collapsed out-of-sample (OOS SQN < 1.0 or negative). The in-sample numbers shown below are the RAW backtest — they did NOT transfer to unseen data. Reject for live trading.

This strategy: Mode A walk-forward on legacy_5m: ema100 variant had OOS SQN -3.80 (severe fail). Featured snap_4h config is untested on rolling, but the lower-TF variant collapses hard, which argues against the system in general.

Authoritative result · TV multi-year backtest

TradingView 5m, multi-year history

TV UNPROFITABLE
Net (MYR)
-140,235
Profit Factor
0.44
Win rate
16.1%
Trades
1406
Max DD (MYR)
+140,235

TV Wave-2 multi-year on 5m: WORST of the wave. -140k MYR, 16% WR, 1,406 trades. EMA20 gets touched constantly on 5m so the pullback bounce fires nonstop. This is a daily-TF strategy mis-applied to intraday.

Tested 2026-04-25. This is the load-bearing evidence — it overrides the 1-month sweep below.

Local 1-month sweep — in-sample only, weak signal

In-sample only — weak signal
SQN
0.94
Profit Factor
1.28
Win rate
42.9%
Trades
63
Net profit
MYR +5,535
Max drawdown
MYR +5,160
Dataset
snap_4h
Timeframe
4h

Strategy properties

Style
swing
Profile
High R
Trades / day
2.86
Avg bars held
TV compile status
Compiled (Pine v6 PASS)
Walk-forward
Failed out-of-sample
Low WR but big winners. Long losing streaks are normal — the rare runaway pays for them.

Parameters

emaPeriod
20
touchTicks
3

Applies to

  • Market: FCPO (Crude Palm Oil Futures, Bursa Malaysia)
  • Timeframe: 4h
  • Style: Swing (hours to days)
  • Complexity: 2-3 rules, some discretion

When it works

Did not show a stable edge in the sample — treat with caution.

Pine Script coming soon

Related strategies (trend-following)

Full raw backtest result
{
  "dataset": "snap_4h",
  "tf": "4h",
  "params": {
    "emaPeriod": 20,
    "touchTicks": 3
  },
  "trades": 63,
  "winRate": 42.86,
  "netProfitMYR": 5535,
  "profitFactor": 1.28,
  "sqn": 0.94,
  "maxDrawdownMYR": 5160
}