Ultimate Weekday Reversal - User Guide

Ultimate Weekday Reversal - User Guide

10 November 2026, 17:00
Logan Mcclain
0
16

Expert Advisor for MetaTrader 5 · version 9.00 · User manual
Actual Algos · seller AnActualBanana on MQL5

Contents
The idea behind the strategy
1. What the EA does
2. Installation
3. Entry and exit times, daylight saving (new in version 5)
4. News filter (rebuilt in version 7)
5. Position sizing
6. Quick start
7. Built-in safeguards
8. Lot sizes and cent accounts (new in version 8)
9. Input reference
10. Backtesting and optimisation
11. Support
12. Risk notice
Example settings (not optimised, for testing only)

The idea behind the strategy

Ultimate Weekday Reversal is built on one of the oldest calendar patterns in stock-market research. In 1980 Kenneth French reported in the Journal of Financial Economics that S&P 500 returns from Friday's close to Monday's close were negative on average from 1953 to 1977, which he called the "weekend effect". Abraham and Ikenberry (1994) added detail: Monday weakness was concentrated after a down Friday, and they traced part of it to individual investors, who sold more on Mondays, especially after bad news. Traders turned this into a simple rule known as "Turnaround Tuesday": when an index starts the week weak, buy the Monday dip, expect the selling to run out, and sell into the bounce a day later.

The pattern has not stood still. Studies of data after 1987 found that the classic weak Monday faded, and on some large US indices even reversed. That is why this EA does not hard-code one rule. It treats the weekday pattern as a framework: you choose the entry weekday and time, the exit weekday and time, and whether a daily moving average defines "weak" (dip mode buys below it) or whether you trade with the trend instead. That lets you test the classic Monday-to-Tuesday setup on your own broker's index CFDs, and check whether a similar reversal shows up on other days or markets. Like every calendar pattern it can weaken or stop working, so treat it as an idea to test on your own data, not a promise.

Further reading: K. French, "Stock returns and the weekend effect", Journal of Financial Economics 8 (1980) 55-69; R. Abraham and D. Ikenberry, "The individual investor and the weekend effect", Journal of Financial and Quantitative Analysis 29 (1994) 263-277; P. Fortune, "Weekends can be rough: revisiting the weekend effect in stock prices", Federal Reserve Bank of Boston working paper 98-6 (1998); S. Mehdian and M. Perry, "The reversal of the Monday effect: new evidence from US equity markets", Journal of Business Finance and Accounting 28 (2001) 1043-1065.

1. What the EA does

Ultimate Weekday Reversal trades at set times on set weekdays. Its starting point is the weekly pattern some traders call "Turnaround Tuesday": an index dips into the start of the week and recovers soon after. Patterns like this can fade or stop working, so treat it as an idea to test, not a promise. The classic form buys on Monday when price is below a daily moving average and closes that long trade (sells it) on Tuesday.

Entry weekday at the entry time (server clock)
   MA filter: dip (long below the MA / short above) or trend (long above / short below)
   optional: wait up to N minutes for a new day high (long) / low (short) vs yesterday
        │
        ▼
Hold → exit at the exit time on the exit weekday, or after N days held
       (stop / target / break-even / trailing can end it earlier;
        optional: flat on Friday, max hold days)

The defaults reproduce the classic strategy: entry Monday, exit Tuesday, dip mode on the daily MA. The short side is the mirror image: in dip mode, when price is above the MA at the entry time, the EA sells instead (fading the rally) and closes that short, buying it back, at the exit time. Shorts are allowed by default; switch off Allow short trades to trade only the long side.

2. Installation

  1. Buy or download the product on the MQL5 Market, or from the Market tab inside MetaTrader 5 (you must be logged in to your MQL5 account there). It installs itself into Navigator → Expert Advisors → Market.
  2. Open a chart of the symbol and timeframe you want, drag the EA onto it, set the inputs and tick Allow Algo Trading.
  3. Switch on the Algo Trading button in the terminal toolbar. The Experts tab shows the EA's start-up messages, including its version.
  4. The free demo runs in the Strategy Tester only. Test there, then on a demo account, before any real account.

The Market version has no licence key. Each purchase includes a fixed number of activations (installations on different computers); reinstalling on the same computer does not use a new one.

3. Entry and exit times, daylight saving (new in version 5)

Times are on the broker's server clock. Daylight saving shift moves the entry and exit times by N minutes while the chosen region's daylight saving is on. From V5 a time the shift pushes past midnight (for example a 23:30 exit + 60 minutes) fires at 00:30 on the next day; earlier versions never reached it, so the trade only closed on its stop, target or the max-hold limit.

4. News filter (rebuilt in version 7)

The news filter keeps the EA from trading around scheduled economic releases (interest-rate decisions, inflation and jobs reports and similar). It is off by default (News filter: on): with it off nothing is read and the EA trades as if the filter did not exist. The same filter, with the same inputs and the same wording, is built into every Actual Algos EA.

Switching the filter on is not enough on its own: all three impact levels start on Ignore, so you also choose an action for the levels you care about.

What each action does

Action What happens while a news window is active
Ignore (default) Nothing. Events of this impact level are not used.
Manage only No new trades. Trades that are already open are managed as usual.
Skip No new trades, and when the window starts the EA closes its open trades and deletes its pending orders.

A window runs from the chosen number of minutes before an event until the chosen number of minutes after it. Skip only closes this EA's own trades on the chart symbol (matched by its magic number), never other EAs' or manual trades. Closing a trade costs the spread and books whatever result it has at that moment.

In this EA:

Manage only

  • No new entry inside the window. The entry stays armed for the length of the entry window (Entry stays armed for N minutes), so it can still enter once the news window is over, if the entry window is still open.
  • Open trades are managed as usual (time exit, stop, break-even, trailing).

Skip

  • Everything Manage only does, and at the start of the window the EA closes its own open trade on the symbol. The EA only uses market orders, so there are no pending orders to delete. One line is written to the Experts tab per window.
  • This EA can hold a trade for a day or more, so a Skip window can close a trade long before its normal exit time.

The three impact levels

Level Settings Default when you switch it on
High impact (importance 3) Action, minutes before, minutes after 30 before, 30 after
Medium impact (importance 2) Action, minutes before, minutes after 15 before, 15 after
Low impact (importance 1) Action, minutes before, minutes after 5 before, 5 after

The level of an event is the importance given to it in the news file or by the MetaTrader calendar. Each level has its own action, so you can, for example, skip high-impact events and ignore the rest. All three actions are Ignore until you change them. If windows of several levels overlap, the strongest action wins (Skip over Manage only over Ignore).

Which events affect which symbol

An event only affects the symbols it should. The EA works out the currencies that move the chart symbol from its name:

Symbol Events that count
Forex pairs (for example EURUSD, GBPJPY) Both currencies of the pair, every impact level.
US indices (S&P 500, Nasdaq 100, Dow Jones, Russell: names starting SP500, US500, SPX, NDX, NAS, US100, USTEC, WS30, US30, DJ, US2000) USD, every impact level.
Gold, silver, oil and the main crypto CFDs (XAU, XAG, GOLD, SILVER, OIL, WTI, BRENT, BTC, ETH) USD, every impact level.
DAX and other euro-area indices (GDAXI, DAX, GER, DE40, STOXX, EU50, FRA40, CAC) EUR at every impact level, plus USD high impact only.
UK 100 (UK100, FTSE) GBP at every impact level, plus USD high impact only.
Japan 225 (JP225, JPN225, NIKKEI) JPY at every impact level, plus USD high impact only.
Anything else The base and profit currency MetaTrader reports for the symbol.

Names are matched by their start, and anything after an underscore (for example _Darwinex) is ignored. If your broker names a symbol differently, or you want other currencies, fill in News currencies with a comma-separated list such as USD,EUR: the EA then uses exactly those currencies, at every impact level, instead of the automatic list. News categories narrows the events further (empty means all categories; categories exist only in the news file).

Getting news into the EA

News source What the EA uses
Auto (default) The news file AA_News.csv if it can be opened; otherwise the live MetaTrader economic calendar. Note that a file, once found, is used instead of the calendar, also on a live chart.
CSV file only Only the news file. If it cannot be opened the EA does not start.
Live MT5 calendar only Only the economic calendar built into MetaTrader. Works on live and demo charts only.
  • Live and demo charts: with Auto and no news file, nothing needs to be installed; the EA uses the MetaTrader economic calendar and the Experts tab says [News] using the live MT5 economic calendar. Whether the calendar has data depends on your broker.
  • Strategy Tester: MetaTrader gives the tester no economic calendar, so without a news file no news window is applied in the test and the Experts tab says so ([News] no news CSV and the MT5 calendar is empty in the Strategy Tester ...). To test the news filter, put AA_News.csv in the shared Common\Files folder before you start the test.

The news file AA_News.csv

Events are read from a plain CSV file (AA_News.csv unless you change News CSV: file name) in the terminal's shared Common\Files folder (in MetaTrader: File → Open Common Data Folder, then the Files folder). All Actual Algos EAs on that terminal read the same file. The first line is a header; every other line is one event:

time,currency,importance,category,event
1796398200,USD,3,employment,Example event (2026.12.04 15:30 on the server clock)

time is the number of seconds since 1 January 1970 counted on the broker's server clock, the clock of the chart and of the Strategy Tester, not UTC. currency is the currency code the event belongs to (USD, EUR, GBP …). importance is 1 (low), 2 (medium) or 3 (high). category is only used when you list categories in News categories (for example employment,inflation,rate_decision; empty means every event). event is a name that appears in the Experts tab. The lines must be in time order, oldest first: the EA does not sort them, and a file that is out of order can make events be missed.

  • The file is not part of the product. A Market product is a single program file, so no data file comes with it, and a file is not promised with the purchase. Build one in this format from a calendar source you trust, or ask support whether a ready-made file is available. A file made by Actual Algos uses the Darwinex server clock (GMT+2, GMT+3 during US summer time); it only fits brokers on that same clock.
  • The Strategy Tester and live charts use the same file, so a news test and live trading see the same events. MetaTrader gives the tester no economic calendar of its own.
  • The file is read once, when the EA starts. After you replace it, remove the EA from the chart and attach it again (or restart MetaTrader). Events that are not in the file are not blocked, and a file that ends in the past gives no protection after its last line.
  • Only events that matter to the chart symbol and belong to an impact level whose action is not Ignore are kept. The Experts tab shows how many when the EA starts: [News] AA_News.csv: N events kept for SYMBOL. If N is 0, check the symbol's currencies, the actions, the categories and the file's time range.
  • With News source set to CSV file only, the EA does not start when the file cannot be opened and the Experts tab says so, so a test is never run with a filter you believed was on.

Manual times

This EA also has News: manual times: dates and times you type in, separated by semicolons, for example 2026.11.04 15:30;2026.12.16 21:00 (server clock). Each time counts as a high-impact event: it uses the high-impact action and the high-impact minutes before and after. Manual times work in live trading and in the Strategy Tester, need no news file, and do nothing while the filter is off or while the high-impact action is Ignore.

A recommended starting point

This is a place to start experimenting, not an optimised or recommended setting, and it carries no promise about results:

  1. Switch News filter: on to true.
  2. Set News, high impact: action to Manage only, and leave its 30 minutes before and after. Leave medium and low impact on Ignore.
  3. Leave News source on Auto and the currencies empty.
  4. On a demo chart, check the Experts tab for the [News] line at start. To see what the filter changes, run the same test twice (filter off, filter on) over the same dates.
  5. Try Skip only if you want open trades closed before events, and keep in mind that closing has a cost.
A filter is not a guarantee. Staying out of the minutes around scheduled events does not protect a trade from unscheduled news, wide spreads or gaps, and it does not make a strategy profitable. Check what the filter does to your own results in a test before you rely on it.

Versions 5 and 6 had their own filters (the MT5 calendar, manual times and, from version 6, the news file, with one importance threshold and one pair of minutes). Version 7 replaces them with this shared filter. Settings saved with version 5 or 6 that used the old news inputs do not carry over: switch the new filter on and choose an action per impact level. With the filter off, version 7 trades like version 5 and 6.

5. Position sizing

Sizing can be fixed lots, managed lots (fixed lots scaled by the balance), risk as a % of the balance (the default), a fixed amount of money, or risk as a % of a fixed reference account size. The three risk modes divide the amount at risk by the stop distance, so they need a stop: with the stop loss switched off, the EA uses the Fixed lots input instead (0.10 by default), whatever the risk setting says.

There is no input to cap the lot size. The size is limited only by the broker's minimum, maximum and lot step and by the free margin (see Built-in safeguards).

6. Quick start

  1. Attach to an index CFD (S&P 500, Nasdaq, DAX).
  2. Set the entry and exit times for your broker's server clock (the cash session is typical).
  3. Keep the MA filter in dip mode; choose the stop (a % of price is typical) and usually no target.
  4. Backtest over many years: a weekly strategy makes few trades per year.

7. Built-in safeguards

  • If the free margin cannot carry a trade's size, the lots are reduced to what it can carry (the trade is skipped when not even the minimum lot fits), so the broker never rejects an order for lack of money.

8. Lot sizes and cent accounts (new in version 8)

The EA sizes every trade to what your broker allows, so the same settings work on accounts with different lot rules.

  • Minimum lot and lot step. The EA follows the symbol's own minimum lot, maximum lot and lot step: 0.01 on most forex symbols, 0.001 on nano-lot accounts, 1 on some CFDs. It never sends a size the broker would reject, and a trade whose size would be below the broker's minimum is skipped (or, where the EA has the input, raised to the minimum).
  • Cent accounts. If the account currency is a cent currency (USC, USX, EUC, GBC), money amounts are in cents. By default (Cent accounts: money inputs are in USD = off) the EA reads every money input in the account currency, that is in cents: the fixed risk per trade (Fixed risk per trade (account currency)) and Managed sizing: balance per lot. A value of 100 then means 100 cents, or 1 USD. Balance-based percentages are not affected.
  • Money inputs in USD. Switch Cent accounts: money inputs are in USD on if you would rather type the amounts in US dollars. On a cent account the EA then multiplies them by 100 to get cents. On an ordinary account the switch changes nothing.
  • Other cent codes. Cent accounts: account currency codes treated as cent lists the currency codes the EA treats as cent accounts (default USC,USX,EUC,GBC, separated by commas). If your broker uses a different code, add it to the list.
Check the size before you trade. Cent and nano accounts differ between brokers. Look at the lots in the Experts tab or in a demo trade first, and test in the Strategy Tester on a symbol with the same lot rules as your account.

Changes in this version (8). Lot rounding now follows the broker's lot step exactly. Earlier versions rounded down through a small tolerance, so a fixed lot that is not a clean multiple in floating-point arithmetic (for example 0.29) could trade one step smaller than you set (0.28). It is now traded as set. For the same reason a trade sized from risk can come out one step larger than before in rare cases. Settings that use clean lot sizes behave as before. The two new inputs default to off and to the list above, so existing settings keep working.

9. Input reference

Every input with its default, in the order of the Inputs tab.

1. General

Input Default
Magic number 27052001
Order comment Ultimate Weekday Reversal
Allow long trades true
Allow short trades true
One position at a time (false = allow several) true
At most one new trade per day true
Max spread to enter (points, 0 = no limit) 50
Max slippage (points) 20
After a failed entry, wait this many seconds before trying again (0 = every tick, as V8) 60

2. Entry timing

Input Default
Entry weekday (Any = every trading day) Monday
Entry time: hour (server) 9
Entry time: minute 5
Entry stays armed for N minutes 120
Enter only on a new day high (long) / low (short) vs yesterday false

3. Exit timing

Input Default
Time exit: schedule On the exit weekday at the exit time
Time exit: weekday Tuesday
Time exit: hour (server) 19
Time exit: minute 0
Time exit: days held (hold-days schedule) 1
Time exit may fire on the entry date false
Always flat by the exit time on Friday false
Max hold (calendar days, 0 = off) 0

4. Filter: moving average

Input Default
MA filter: on true
MA filter: buy the dip or trade with the trend Buy the dip: long below the MA, short above
MA: timeframe PERIOD_D1
MA: period 40
MA: method MODE_SMA
MA: price PRICE_CLOSE
MA: bar to read (1 = last closed, 0 = forming) 1

5. ATR

Input Default
ATR period (ATR-based distances) 14
ATR timeframe PERIOD_D1

6. Position sizing

Input Default
Position sizing Risk % of balance (needs a stop)
Fixed lots (fixed and managed sizing) 0.10
Managed sizing: lots = fixed lots x balance / this 1000.0
Risk % of balance per trade 1.0
Fixed risk per trade (account currency) 100.0
Reference account size (non-compounding sizing) 10000.0
Risk % of the reference account size 1.0
Skip a trade whose risk is below the minimum lot true
Cent accounts: money inputs are in USD (x100 on a cent account) false
Cent accounts: account currency codes treated as cent USC,USX,EUC,GBC

7. Stop loss

Input Default
Stop loss: basis % of the entry price
Stop loss: value 2.0

8. Take profit

Input Default
Take profit: basis No take profit
Take profit: value 3.0

9. Break-even

Input Default
Break-even: on false
Break-even: trigger basis % of the entry price
Break-even: profit needed to trigger 1.0
Break-even: lock beyond entry (points) 0.0

10. Trailing stop

Input Default
Trailing stop: on false
Trailing: start basis % of the entry price
Trailing: start when in profit by 1.0
Trailing: distance basis % of the entry price
Trailing: distance behind price 1.0
Trailing: step basis Points
Trailing: minimum improvement before the stop moves 50.0

11. Daily stop

Input Default
Daily stop: on false
Daily stop: equity drawdown % (0 = off) 3.0
Daily stop: losing trades (0 = off) 3
Daily stop: also close open positions false

12. Days (when the entry weekday is Any)

Input Default
Trade Monday true
Trade Tuesday true
Trade Wednesday true
Trade Thursday true
Trade Friday true

13. News filter

Input Default
News filter: on false
News, high impact: action Ignore (trade as normal)
News, high impact: minutes before 30
News, high impact: minutes after 30
News, medium impact: action Ignore (trade as normal)
News, medium impact: minutes before 15
News, medium impact: minutes after 15
News, low impact: action Ignore (trade as normal)
News, low impact: minutes before 5
News, low impact: minutes after 5
News source Auto: CSV if present, else live MT5 calendar
News CSV: file name in the terminals' Common\Files folder AA_News.csv
News currencies (empty = automatic for the symbol)  
News categories, comma separated (empty = all)  
News: manual times, work in the tester, count as HIGH-impact events (YYYY.MM.DD HH:MM or daily HH:MM, ; separated)  

14. Daylight saving

Input Default
Daylight saving shift No DST adjustment
Daylight saving shift (minutes) 60

15. Chart

Input Default
Status panel on the chart true
Entry / stop / target lines true
Entry line colour clrYellow
Stop loss colour clrCrimson
Take profit colour clrLimeGreen

16. Misc

Input Default
Detailed log false
Optimisation: custom criterion (OnTester) Off (return 0; no extra computation)

10. Backtesting and optimisation

  • Model: 1 minute OHLC is fast and fine for bar-close logic; use Every tick based on real ticks for tick triggers, pending orders and tight stops.
  • All times are broker server time; test on the broker and server clock you will trade.
  • The custom optimisation criteria (Misc group) work with the tester's Custom max criterion.
  • Keep part of the history out of the optimisation to check the result.

11. Support

Use the product comments or a private message on MQL5 to the seller (AnActualBanana). Please include the product version, broker, symbol, timeframe, your settings (a screenshot of the Inputs tab helps) and the Experts-tab lines around the problem. No custom coding and no individual trading advice.

12. Risk notice

Trading leveraged products such as CFDs, forex and crypto carries a high risk of loss and is not suitable for everyone. You can lose all of the money you trade with.

Nothing in this manual or in the EA's default settings is a promise, forecast or guarantee of profit. Backtested and past results do not guarantee future results, and results will differ between brokers, symbols, periods and account types. Stops, filters and safeguards can fail to limit a loss, for example in fast markets, on gaps or when the broker's spread or execution changes.

The EA and its settings are tools, not financial advice. Test on a demo account first and only trade money you can afford to lose.

Example settings (not optimised, for testing only)

These are examples for testing, not recommendations. They are not optimised and are not advice. Test them on a demo account and in the Strategy Tester (“Every tick based on real ticks”) before anything else. Convert the times if your broker's server clock is different: the server times below assume New York time + 7 hours all year (GMT+2 in winter, GMT+3 in summer).

All three examples buy only (shorts off), use the “buy the dip” mode of the moving-average filter on daily bars, enter on Monday and exit on Tuesday (the defaults), and use fixed lots with no stop loss and no take profit. A position held without a stop can lose much more than normal in a gap, so choose a lot size you can afford to lose with.

Example A: S&P 500 index CFD, M5 chart (“Turnaround Tuesday”)

  • Buy on Monday at 22:50 server time (15:50 New York time) if the price is below Monday's daily open (a 1-period average on the daily open, dip mode). Sell on Tuesday at 22:50 server time.
Input Example value EA default
Entry time (InpEntryHour / InpEntryMinute) and window (InpEntryWindowMinutes) 22:50, 9 minutes 09:05, 120 minutes
Exit time on Tuesday (InpExitHour / InpExitMinute) 22:50 19:00
MA period (InpMAPeriod) 1 40
MA price (InpMAPrice) Open Close
MA bar to read (InpMABarShift) 0 (the forming daily bar) 1 (last closed bar)
Allow shorts (InpAllowShorts) off (buy only) on
Sizing (InpSizingMode / InpFixedLots) Fixed lots (set the size yourself) Risk % of balance
Stop loss (InpStopMode) Off (no stop loss, no take profit) % of price (2 %)

Example B: Nasdaq 100 index CFD, M1 chart

  • Buy on Monday at 01:05 server time (Sunday 18:05 New York time) if the price is below the 9-day average (dip mode). Sell on Tuesday at 23:50 server time (16:50 New York time).
Input Example value EA default
Entry time (InpEntryHour / InpEntryMinute) 01:05 (window 120 minutes, default) 09:05
Exit time on Tuesday (InpExitHour / InpExitMinute) 23:50 19:00
MA period (InpMAPeriod) 9 40
One position at a time (InpOnePositionAtATime) off on
Max spread / slippage (InpMaxSpreadPoints / InpSlippagePoints) 99999 / 99999 (no limits) 50 / 20
Always flat on Friday (InpFlatOnFriday) on off
Allow shorts (InpAllowShorts) off (buy only) on
Sizing (InpSizingMode / InpFixedLots) Fixed lots (set the size yourself) Risk % of balance
Stop loss (InpStopMode) Off (no stop loss, no take profit) % of price (2 %)

Example C: DAX (GER40 / GDAXI), M1 chart

  • Buy on Monday at 08:05 server time (01:05 New York time) with the same dip filter (the default 40-day average). Sell on Tuesday at 21:55 server time (14:55 New York time).
Input Example value EA default
Entry time (InpEntryHour / InpEntryMinute) 08:05 (window 120 minutes, default) 09:05
Exit time on Tuesday (InpExitHour / InpExitMinute) 21:55 19:00
MA period (InpMAPeriod) 40 (the default, 40-day average) 40
One position at a time (InpOnePositionAtATime) off on
Max spread / slippage (InpMaxSpreadPoints / InpSlippagePoints) 99999 / 99999 (no limits) 50 / 20
Always flat on Friday (InpFlatOnFriday) on off
Allow shorts (InpAllowShorts) off (buy only) on
Sizing (InpSizingMode / InpFixedLots) Fixed lots (set the size yourself) Risk % of balance
Stop loss (InpStopMode) Off (no stop loss, no take profit) % of price (2 %)

The weekday switches Trade Wednesday to Trade Friday are off in the Nasdaq and DAX example sets; they only matter when the entry weekday is set to “Any”. Everything not listed keeps its default. The “try again after a failed entry” wait (InpEntryRetrySeconds) is 60 seconds in all three.

Ultimate Weekday Reversal 9.00 · © 2026 Logan McClain / Actual Algos