Markets › FX · EURUSD spot (broker data), daily candles

5 SMA Daily Strategy Backtest: the Forex Factory “Monthly Profit” System on 22 Years of EUR/USD

A 5-period simple moving average on the daily chart, a candle whose body crosses it, a Bollinger band it must not touch, and fifteen minutes a day. We turned the popular Forex Factory thread into fixed rules and backtested its three exits on EUR/USD daily candles from 2004 to 2026, with costs, swap and against random days.

EUR/USD · daily candles (17:00 New York) from 1-minute data · SMA 5 slope and cross, Bollinger 20/2, stop under the candle - 15 pips; exit at the day's end, at 3R with breakeven, or trailed to the band · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

The five-day average turned. The price did not follow.

BornFrozen 29 Oct 2026 (sma5_spec.md), before any SMA was computed
Died29 Oct 2026

Variants tried: 3 · Passed every gate: 0 · Best: 2 of 6 · Holdout opened: yes (already used)

Short answer: not in our test. The Forex Factory “Monthly Profit” system (a bullish daily candle crossing a rising 5-day SMA without touching the upper Bollinger band, a stop under the candle minus 15 pips) made -0.007 R a trade on EUR/USD from 2004 to 2026 closed at the end of the day, -0.041 R with a 3R target and -0.040 R with a trailing stop, after a 1-pip cost. The same trades on random days did as well.

00The verdict in three lines

  • Does the 5 SMA daily strategy work? Not in our test: buying when a bullish daily candle crosses a rising 5-day SMA without touching the upper Bollinger band (and selling the mirror) made -0.007 R a trade on EUR/USD from 2004 to 2026 when closed at the end of the day (822 trades), -0.041 R with a 3R target (593) and -0.040 R with a trailing stop (742).
  • Not a cost problem: on a daily chart the stop was about 107 pips, so 1 pip of cost was 0.010 R. Before costs the signal made +0.003 R a trade held for a day, and lost with the other two exits.
  • Buried with no proven edge: the same trades on random days did as well, all three lost in 2004 to 2012, and two lost again from 2020.

01The “Monthly Profit” rules from Forex Factory

The system comes from the Forex Factory thread “Monthly Profit - Daily Trading using SMA”, started in July 2016 and still running in 2026, over 600 pages long. Its first post sells it as “the simplest strategy for stress free day trading”: fifteen minutes a day after the daily close.

  • Chart: daily only (the post warns that even 4-hour charts are not reliable), with a 5-period SMA and Bollinger Bands, marked optional.
  • Direction: long only when the SMA points up, short only when it points down, nothing when it is flat.
  • Entry: long when the previous daily candle is bullish, its body has clearly crossed the SMA and it did not touch the upper band; short is the mirror.
  • Stop: the previous candle's low minus 15 pips (high plus 15 for a short), or the candle before it if the candle is too short.
  • Exits: take two positions; close the first after taking profit the same day; let the second run, moving its stop “as per S&R”; you may exit when a candle touches the opposite band, or after a 1:3 move; exit at breakeven if the trade turns against you.

One setting changed early in the thread. The author's first charts, in July and August 2016, drew the SMA shifted three days to the right (period 5, shift 3), so a candle had to cross the 5-day average as it stood three days earlier; by late September 2016 the thread had moved to no shift, which is what the first post says today (“SMA 5,0”). We tested the rule as it is written now.

The post also suggests risking up to 5% of the account a trade and argues that if enough traders used the system, they would push the market their way. We test the rules, not the sizing; results are in R, the risk of each trade.

02How we made the rules mechanical

  • Daily candles close at 17:00 New York, as the broker's chart does (Sunday evening belongs to Monday). SMA 5 of the closes; Bollinger 20 days, 2 standard deviations; ATR(14) only to turn the post's words into numbers.
  • Flat = the SMA moved less than 0.05 ATR from the day before. Clearly crossed = the candle opened below the SMA and closed at least 0.1 ATR above it. Did not touch the band = its high stayed below the upper band. Too short = a range under half an ATR; then the stop goes under the lower of the two last lows.
  • Entry at the next day's open; one position at a time; an opposite signal closes the trade and opens the new one.
  • Three exits, one for each the post describes: SMA-1D closes at the end of the entry day (the first position); SMA-3R takes 3R and moves the stop to the entry after +1R (the “1:3” and breakeven rules); SMA-TRAIL moves the stop to each day's low minus 15 pips, our reading of “S&R”, and exits on the close of a day that touches the opposite band (the second position).

The numbers for “flat”, “clearly” and “too short” are ours, written down before any result; the thread does not define them. Of 5,908 daily closes, 824 gave a signal:

The first condition that failed at a daily closeDays
The SMA was flat (slope within 0.05 ATR)814
The candle was the wrong colour for the slope1,778
The candle opened on the wrong side of the SMA2,003
It closed across the SMA, but by less than 0.1 ATR254
It touched the Bollinger band216
A signal824

03How we tested it

EUR/USD, the 1-minute bid history of an IC Markets MetaTrader 4 demo server, January 2004 to 28 September 2026, built into daily candles; stops and targets checked minute by minute. Costs: 1 pip a round trip, as in our other EUR/USD tests, with 2.5 pips and two overnight financing scenarios shown too. Results in R: the result of a trade divided by its risk, entry to stop. Periods: 2004 to 2012, 2013 to 2019, and a holdout from 2020 already used by our earlier EUR/USD tests; first-period bar t ≥ 2.5, because average and trend rules have been tried several times on this pair. Control: every trade moved to another day, with the same direction, stop distance and exit rule, 500 times. Engine check: 50 checks, among them hand-worked SMA, band and ATR values, each entry condition failing on its own and each exit on hand-made days, and an independent re-implementation that matched every trade of all three versions; of five deliberate bugs put into the engine, four were caught and the fifth turned out to change nothing (sma5_selftest_result.txt).

04Results: does the 5 SMA daily strategy work?

VariantExitTradesWin rateBefore costs per tradeNet per tradeNet totalProfit factorVerdict
SMA-1DThe first position: closed at the end of the entry day82246.6%+0.003 R-0.007 R-6 R0.97Buried
SMA-3RTarget 3R ("1:3"), stop to breakeven after +1R, an opposite signal reverses59325.0%-0.031 R-0.041 R-24 R0.92Buried
SMA-TRAILThe second position: stop moved to each day's low - 15 pips, exit when a day touches the opposite band, an opposite signal reverses74237.2%-0.030 R-0.040 R-30 R0.89Buried
-30 R-20 R-10 R0 R10 R20042007201020132016201920222025validationholdout*SMA-TRAILSMA-3RSMA-1D

Cumulative net R by month. * Holdout already used before this test.

How the trades ended

VariantDay closeTargetBreakevenInitial stopTrailing stopBandOpposite signalMedian days heldLargest drawdown (closed trades)
SMA-1D89.5%----10.5%------0-25.1 R
SMA-3R--11.5%19.6%37.8%----31.2%4-41.7 R
SMA-TRAIL------11.3%55.4%29.9%3.4%1-34.1 R

The 3R target was reached in only 11.5% of the trades; most ended at the stop, at breakeven or on an opposite signal. Without their ten best trades the three versions lost -30.7 R, -56.5 R and -63.6 R. Longs and shorts gave no consistent picture: with the 3R exit the shorts lost more (-0.075 R against -0.010 R), with the trailing stop the longs did (-0.052 R against -0.027 R).

05SMA cross or random day?

VariantTradesReal net per tradeMoved trades, medianMoved, 5th to 95thPercentile (95 needed)
SMA-1D822-0.007 R-0.007 R-0.050 R to +0.036 R48.2
SMA-3R593-0.041 R-0.011 R-0.114 R to +0.090 R31.8
SMA-TRAIL742-0.040 R-0.025 R-0.085 R to +0.040 R34.6

Moving every trade to another day, with the same stop and the same exit, did as well as the real signal or better. The cross of the 5-day SMA, the colour of the candle and the band did not pick better days than chance.

06Costs, swap and the optional Bollinger filter

VariantBefore costs1 pip (base)2.5 pips1 pip + financing A1 pip + swap BWithout the band condition (trades)
SMA-1D+0.003 R-0.007 R-0.023 R-0.014 R-0.007 R-0.001 R (1,038)
SMA-3R-0.031 R-0.041 R-0.056 R-0.087 R-0.064 R-0.015 R (645)
SMA-TRAIL-0.030 R-0.040 R-0.055 R-0.058 R-0.047 R-0.026 R (957)

With a stop of about 107 pips, even 2.5 pips of cost is small. Positions held over several nights pay financing: A charges 2% a year of the price per day held, B uses today's IC Markets EUR/USD swap; both make the multi-day versions worse. The post calls the Bollinger Bands optional: without the band condition the three versions made -0.001 R, -0.015 R and -0.026 R a trade, no better.

07By period and by year

Variant2004 to 2012 (trades)2013 to 2019 (trades)Holdout* 2020 to Sep 2026 (trades)t, first periodPF, second period
SMA-1D-0.027 R (358)+0.014 R (244)+0.001 R (220)-0.791.06
SMA-3R-0.006 R (253)+0.005 R (180)-0.148 R (160)-0.071.01
SMA-TRAIL-0.062 R (328)+0.022 R (215)-0.071 R (199)-1.361.06
YearSMA-1D net (trades)SMA-3R net (trades)SMA-TRAIL net (trades)
2004-6.7 R (46)-4.3 R (31)-10.2 R (44)
2005-2.0 R (40)-6.6 R (29)-5.3 R (38)
2006-5.9 R (35)-8.1 R (28)-5.3 R (34)
2007-6.8 R (48)-8.4 R (34)-11.2 R (44)
2008+0.4 R (41)+11.1 R (30)+1.9 R (37)
2009+2.9 R (45)+5.0 R (28)+4.4 R (37)
2010+12.1 R (33)+6.7 R (19)+13.1 R (29)
2011-2.2 R (37)-1.4 R (29)-1.6 R (33)
2012-1.6 R (33)+4.4 R (25)-6.1 R (32)
2013-3.6 R (42)+3.8 R (29)+1.7 R (37)
2014-2.0 R (36)+2.6 R (24)-4.7 R (34)
2015-0.6 R (26)+3.6 R (23)-0.5 R (23)
2016+3.4 R (35)-4.2 R (28)+2.9 R (32)
2017-1.0 R (38)-0.5 R (26)-2.9 R (33)
2018+5.2 R (33)+0.8 R (24)+5.3 R (28)
2019+2.0 R (34)-5.3 R (26)+2.9 R (28)
2020-1.0 R (30)+4.6 R (23)+1.5 R (27)
2021-2.1 R (35)+4.8 R (21)-2.6 R (32)
2022+2.7 R (29)-4.5 R (24)-0.4 R (26)
2023+1.2 R (39)-8.9 R (26)-0.0 R (31)
2024-5.6 R (33)-12.2 R (27)-12.4 R (32)
2025+4.9 R (26)-3.4 R (19)+1.1 R (25)
2026 (to 28 Sep)+0.2 R (28)-4.1 R (20)-1.2 R (26)

* The holdout years were already used by our earlier EUR/USD tests.

SMA-1D lost in 13 of the 23 years, SMA-3R in 13 and SMA-TRAIL in 14. From 2017, the thread's first full year, to September 2026 the day-close version made +6.5 R on 325 trades, a few hundredths of R each, while the 3R and trailing versions lost -28.7 R and -8.8 R. The daily breakout rules of the Turtle traders were buried on the same data: Turtle trading on EUR/USD.

08The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.5 on development4. Above the 95th percentile of the moved-trade control5. Positive without the 10 best trades6. Holdout net positive (already used)
SMA-1D822failpassfailfailfailpass
SMA-3R593failpassfailfailfailfail
SMA-TRAIL742failpassfailfailfailfail
VariantCauseGates failedVerdict
SMA-1DCosts1, 3, 4, 5Buried
SMA-3RNo proven edge1, 3, 4, 5, 6Buried
SMA-TRAILNo proven edge1, 3, 4, 5, 6Buried

The data-gap check removed 13, 33 and 21 trades open across a known gap in the data; no verdict changed. SMA-1D is labelled Costs by the protocol's rule (positive before costs, negative after), but +0.003 R a trade before costs is nothing: its moved trades did as well, so cheaper execution would not make it a proven edge.

TWhat this shows, and what to take into your own tests

What the results show

  • The 5-day SMA cross from the Forex Factory thread, made mechanical on EUR/USD daily candles, lost money from 2004 to 2026 with all three exits the first post describes: -0.007 R, -0.041 R and -0.040 R a trade.
  • Costs were not the problem. On a daily chart the stop was about 107 pips, so 1 pip cost only 0.010 R; the signal made almost nothing before costs (+0.003 R a trade held for a day) or lost.
  • The same trades moved to random days did as well or better (the 48th, 32th and 35th percentiles), and leaving out the Bollinger condition changed nothing.

What remains unknown

  • The thread's judgement calls: what "clearly crossed", "flat" and "S&R" mean to each member. Our numbers for them were fixed before the test, but a trader reading the chart may choose differently.
  • Other pairs and the members' own variations (an EMA instead of the SMA, a CCI filter), which we did not test.
  • Position sizing: the thread suggests risking up to 5% of the account a trade, which changes how far the account swings, not the average per trade.

Why it was buried

2013 to 2019 was the only period with a profit, and a small one; 2004 to 2012 was a loss for SMA-1D, SMA-3R and SMA-TRAIL, and the last two lost again from 2020. None beat the same trades placed on random days, and without the ten best trades all three were clearly negative. A cost of 1 pip is a hundredth of the risk on a daily stop, so cheaper execution would not change the verdict.

What you can apply to your own tests

  • A daily chart makes costs small, which removes an excuse: if a daily rule loses, it is the signal, not the spread.
  • When a system leaves "clearly", "flat" or "S&R" to the trader, write a number down for each before looking at the results; otherwise every losing trade can be explained away.
  • Test the optional filter both ways: here the Bollinger condition removed up to a fifth of the trades and made no difference.

A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.

FAQCommon questions

Does the 5 SMA daily strategy work?

Not in our backtest on EUR/USD daily candles from 2004 to 2026: 822 trades at -0.007 R each with the one-day exit, 593 at -0.041 R with a 3R target and 742 at -0.040 R with a trailing stop. None beat the same trades placed on random days.

Is the cost the problem with a daily SMA strategy?

No. With a stop of about 107 pips, a 1-pip cost is about 0.010 R a trade. The signal itself made almost nothing before costs (+0.003 R a trade held for a day) and lost with the longer exits.

Does the Bollinger Band filter help the 5 SMA strategy?

Not here. The thread calls the bands optional; without the band condition the three versions made -0.001 R, -0.015 R and -0.026 R a trade.

What is the win rate of the 5 SMA daily strategy?

46.6% with the one-day exit, 25.0% with a 3R target and 37.2% with the trailing stop on EUR/USD, none enough to pay for the losers.

How was the 5 SMA strategy tested?

On EUR/USD 1-minute data from 2004 to 2026 built into daily candles closing at 17:00 New York, with the meaning of “clearly crossed”, “flat” and “too short” written down as numbers before any result, and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.

09Check our arithmetic

Frozen specificationThe thread's rules, our mechanical reading of each phrase, the three exits, costs, periods, gates and control, dated before any SMA was computed.
sma5_spec.md
CodeThe engine (its readings of the rules at the top), the independent re-implementation, the self-test and the run (node sma5_run.js). Needs the MT4 EUR/USD history.
sma5_lib.js · sma5_ref.js · sma5_selftest.js · sma5_run.js
Shared code and data checksThe MT4 path, statistics and control helpers, the EUR/USD gap list and the data manifest.
control_audit_lib.js · fb_clock.js · fx_data.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · data_holes_eur.json · data_manifest.md
ResultsSelf-test result, the console output of the run (with the signal counts and the cost scenarios) and all numbers.
sma5_selftest_result.txt · sma5_results.txt · sma5_summary.json
Trade logs (CSV)Every trade: date, entry and exit (New York time), direction, fill, stop and whether the short-candle rule set it, exit, risk in pips, exit reason, days held, net pips, gross and net R, net R with each financing scenario.
SMA-1D · SMA-3R · SMA-TRAIL

Code provenance: our own code, written from the rules in the first post of the thread and the readings in the specification. The thread is cited for its rules only.

10Data notes

Source. A broker's demo history of spot EUR/USD (bid prices) on the New York clock; gaps longer than 30 minutes inside the week are listed in data_holes_eur.json and never filled. Our clock audit found the labels an hour early in many weeks of 2004 to 2014; there a daily candle closes at 16:00 instead of 17:00, which moves one hour between neighbouring candles. Fills: entries at the day's first minute; stops and targets at their level, or at a minute's open if it opened beyond it; a flat 1 pip a round trip, which understates the wider spread at the 17:00 rollover, where every entry of this system happens.

11Corrections

29 Oct 2026, correction: section 01 said the thread started in December 2016; it started on 26 July 2016, the date of its first post (18 December 2016 is when that post was last edited). Section 07 said “since the thread started (2017 to September 2026)”; it now says from 2017, the thread's first full year, with the same numbers. Added in section 01: the author's first charts used the SMA shifted three days, and the thread moved to no shift by late September 2016; we tested the rule as written now. The specification carries the same correction as a dated note; its rules are unchanged. No result changed.

+More tests and guides