Pipsgrowth EX08001 MACD
MT5 Expert Advisor (Open Source) · XAUUSD · M5
Pipsgrowth.com EX08001 MACD TrailingStop XAUUSD 5M — MACD cross + Chandelier trail, full 12-layer stack.
Overview
Pipsgrowth EX08001 is a trend-following Expert Advisor for MT5 that fires entries on a MACD main-line/signal-line crossover, then routes every signal through a five-stage gate chain before any ticket is sent. The MACD uses the stock 12/26/9 periods on close; a switchable InpSignalMode input flips the signal from main/signal cross (mode 1, default) to zero-line cross (mode 2) without touching the period constants. When a cross is detected, GetSignal() assigns a directional flag and a confidence number in the range 55 to 100, scaled from the post-cross gap between main and signal lines. That single boolean is then handed to the confirmation stack, which is where EX08001 starts to look different from a vanilla MACD EA.
The first confirmation layer is regime classification. ClassifyRegime() reads three independent measurements off the most recent closed bar and combines them into one of seven states: STRONG_TREND, WEAK_TREND, RANGE, BREAKOUT, COMPRESS, EXPAND, CHOPPY. ADX(14) over 28 with an ATR(14) percentile at or above the 70th rank of the last 200 bars is STRONG_TREND. ADX above 22 alone drops to WEAK_TREND. Bollinger Bands(20, 2.0) width percentile, ranked over 200 bars, catches the breakout (≥85th) and compress (≤20th) cases. Anything that doesn't fit the other buckets falls to RANGE, EXPAND, or CHOPPY. The strategy then accepts only STRONG_TREND, WEAK_TREND, BREAKOUT, and EXPAND — meaning flat, choppy, and compressed regimes produce no signals. That selective accept-list is the core of the EA's design: it would rather miss trades than enter a MACD cross in a market that is statistically likely to mean-revert around the cross.
The second confirmation layer is a higher-timeframe bias filter. When InpHTF_EMA is greater than zero, the EA creates a single EMA on the H1 timeframe (HTF_TIMEFRAME is hardcoded to PERIOD_H1) and compares the previous H1 close against the EMA. Long signals require the H1 close above the EMA; short signals require it below. Setting InpHTF_EMA = 0 disables the HTF layer entirely. The default 50-period EMA gives a moderate trend filter, while a smaller period (say 20) tightens the filter to faster swings, and a larger period (200) widens it to multi-week direction.
What follows the signal and confirm stages is the most distinctive part of EX08001's logic: a chained set of guard layers, and notably two session gates that are evaluated independently. IsSafeToTrade() is called at the very top of every tick. It uses InActiveSession(), which translates the current server time to GMT using an offset that the EA either reads from InpServerGMTOffset or auto-detects at init by scanning back 100 H1 bars for the first weekend gap and computing the offset from there. In GMT terms, London runs 07:00–16:00, New York 12:00–21:00, and Asia 00:00–07:00. With InpAvoidAsia = true (default) and InpSessionMode = 1 (London/NY), the EA refuses to trade during Asia-only hours and accepts any tick that falls inside London, New York, or their overlap. A separate IsNewsTime() function compares the current GMT minute against the London and New York session-open hours and, when InpNewsFilter is on, blocks the EA within ±15 minutes of either open.
After the GMT session gate, IsSafeToTrade() also enforces an equity floor (95% of the initial balance, hard stop on new entries), a daily loss cap of 3% of effective capital, a weekly loss cap of 6%, a maximum of 50 trades per day, and a 30-minute cooldown after three consecutive losses. Only if all of those pass does the EA move to the second stage of its tick processing, where IsNoTradeBlocked() runs. That function calls a different session filter, InSession(), which uses raw server-hour time with a 07:00–20:00 window for mode 1. The result is that EX08001 must pass two independent session checks — one GMT-correct, one server-time — plus a spread check (250 points max by default), a max-concurrent-positions check (one at a time by default), a daily-loss recheck, and a consecutive-loss cooldown. That belt-and-braces structure is not duplication: it is the EA's way of catching broker clock drift and configuration mistakes that would otherwise let it trade through a forbidden session.
Once every gate clears, ExecuteEntry() sizes the trade off the ATR(14) on the working timeframe. The stop distance is ATR * InpATR_SL_Mult (default 2.0), the take-profit distance is the same ATR times InpRR_TP (default 3.0), so the configured R:R is 1:3. Lot size is computed as riskMoney / moneyPerLotAtSL, where riskMoney is gEffectiveCap * InpRiskPercent / 100 (0.5% by default). Both stops are passed through ClampByStopsLevel() to satisfy the broker's SYMBOL_TRADE_STOPS_LEVEL minimum distance. The order is sent via the CTrade wrapper, with three attempts on REQUOTE, PRICE_OFF, and TIMEOUT, refreshing prices and sleeping 150 ms between retries. Margin is pre-checked with OrderCalcMargin; if free margin is insufficient, the order is silently skipped.
Position management runs every tick before any new-entry logic, so trailing and partial exits are never starved by a busy tick. The ATR trailing stop is bid - ATR * InpATR_Trail_Mult for longs (3.0 default) and only ratchets forward — newSL > curSL for longs, newSL < curSL for shorts. After the position moves at least 1R in profit, the EA jumps the stop to entry plus 5 points (a true break-even lock with a tiny buffer, set in ManageOpenPositions via the InpBE_Trigger_R input). At 1.5R, a partial close fires for 50% of the position; the partial is gated by a comment marker ([P1]) so it cannot repeat. Finally, the EA exits on a max-bars condition (240 bars default, about 20 hours on M5) or on the first opposite-direction MACD cross.
A note on the pyramid input. The header claims "optional pyramid (default OFF)," but the source does not actually implement pyramiding: there is no CheckPyramidSafety, no incremental entry logic, and the PYRAMID_MAX / PYRAMID_MIN_R defines are unreferenced after declaration. The position count is governed solely by InpMaxConcurrent = 1, so the EA holds one position at a time per symbol+magic and never re-enters into an open trade. The 12-layer header in the source comment is therefore a description of the design target rather than a literal count of all implemented layers — the regime, signal, entry, confirm, no-trade, capital cap, risk, sizing, manage, exit, scaling, and OnTester stages are all present, but the scaling layer is the empty pyramid stub.
For the optimizer, OnTester() returns (netProfit * grossProfitFactor) / (1 + equityDDpct), with a hard minimum of 30 trades and a guard against a zero drawdown denominator. The custom criterion therefore rewards backtests that combine profitability, win-rate-adjusted gross profit, and a low relative drawdown. The recommended working point is XAUUSD M5 with the default 0.5% risk, 1:3 R:R, 50% partial at 1.5R, and the London/New York session filter enabled — the combination that produces the highest trade frequency inside the EA's accepted regime list. A 1,000 USD account is the minimum practical size for the 0.5% risk setting on gold; a 500 USD account is feasible only with the fixed-lot fallback (InpFixedLot = 0.01) and a tightened risk model.
Strategy Deep Dive
On every tick, IsSafeToTrade() runs first and closes the EA's gates on any single one of these conditions: equity below 95% of the initial balance, realized daily loss at or above 3% of effective capital, realized weekly loss at or above 6%, 50 trades already taken today, a 30-minute cooldown clock from three consecutive losses still active, weekend or non-market hours, a non-London/non-New York tick when InpAvoidAsia is on, or proximity to a London/New York open when the news filter is enabled. If that gate clears, UpdateDailyCounters() rolls the date if needed, and the EA refreshes rates, then enters the bar-once flow. ClassifyRegime() is the first decision: it returns false if the indicators fail to copy, otherwise it sets gCurrentRegime to one of seven states by combining ADX(14), ATR(14) percentile over 200 bars, and Bollinger Bands(20, 2.0) width percentile over 200 bars. If the regime is anything other than STRONG_TREND, WEAK_TREND, BREAKOUT, or EXPAND, the EA returns without firing. GetSignal() then reads three MACD main values and three signal values, detects a main/signal cross on the last closed bar, and emits a directional flag with a confidence number; the cross is the only signal source — there is no second indicator, no pattern, and no breakout detector stacked on top. IsConfirmed() rejects the signal if the HTF H1 close disagrees with direction against the 50-EMA, or if the confidence is below 55. IsNoTradeBlocked() then runs a second session check (server time 7-20 for mode 1), the spread gate, the concurrent-positions gate, the cooldown gate, and a daily-loss recheck. RiskPasses() re-evaluates the daily-loss and capital-floor. ExecuteEntry() then sizes the trade off ATR * 2.0 risk distance, computes 1:3 R:R targets, sends the order through CTrade with three retries on REQUOTE/TIMEOUT/PRICE_OFF, and updates gLastEntryBar on success. ManageOpenPositions() runs every tick before any new-entry logic so trailing and partial exits are never starved: the ATR(14)×3 trailing stop ratchets forward only, the 1R break-even jump to entry+5 points fires once and only once, the 1.5R partial close of 50% is gated on a [P1] comment marker, the 240-bar time stop closes the position without a partial, and a reverse MACD cross exits immediately. The OnTester() function returns (net * grossPF) / (1 + dd), requiring at least 30 trades, so the optimizer ranks backtests on a balance of profit, win-rate-adjusted gross profit, and drawdown. The PYRAMID_MAX=5 and PYRAMID_MIN_R=1.0 defines exist but are unreferenced — pyramid logic is not implemented; the EA's "optional pyramid (default OFF)" in the header reflects that absence, and the only real concurrency control is InpMaxConcurrent = 1.
A long entry fires when the MACD(12,26,9) main line crosses above the signal line (or crosses above zero in InpSignalMode = 2), the ADX(14) regime is one of STRONG_TREND, WEAK_TREND, BREAKOUT, or EXPAND, the H1 close agrees with direction relative to the 50-period EMA, and the tick falls inside the active London/New York session window with no spread, capital-floor, equity-floor, daily-loss, or consecutive-loss cooldown violation. A short entry is the mirror image, gated on the same regime list and HTF bias agreement.
Exits fire in this priority order: a Chandelier-style ATR(14)×3 trailing stop that only ratchets forward; a break-even jump to entry+5 points once profit reaches 1R; a 50% partial close at 1.5R marked by [P1] so it cannot repeat; a time exit after 240 bars; or a reverse MACD-signal exit. The first three are managed in ManageOpenPositions() on every tick, while the bar-based exits run on the bar-once gate.
The initial stop is ATR(14) on the working timeframe times 2.0 (default), placed through ClampByStopsLevel() to respect the broker's SYMBOL_TRADE_STOPS_LEVEL. After the position moves 1R, the stop is jumped to entry+5 points as a true break-even lock, and from there the ATR(14)×3 trailing stop takes over and only ratchets forward.
The full take-profit is 3R from entry (ATR(14)×6.0 at default multipliers), set at the time of order submission. Half the position is taken at 1.5R as a partial close; the remaining half rides either to the 3R target or to a trailing-stop exit, whichever comes first. The 1.5R partial is controlled by InpRR_Partial1 and InpPartial1Pct (default 1.5 and 50), and can be disabled by setting InpRR_Partial1 = 0.
Best deployed on XAUUSD M5 with a 0.5% risk-per-trade model on a $1,000 minimum account and an ECN or raw-spread broker that supports FOK or IOC filling and reports SYMBOL_TRADE_STOPS_LEVEL cleanly. The London/New York session filter is the recommended operating mode, with the Asia-avoidance toggle on by default; the 250-point spread cap should be widened on brokers with typical XAUUSD spreads above 25 points, and tightened on ECN accounts where spreads run below 15. The auto-detected GMT offset assumes a clean weekend gap and may need manual InpServerGMTOffset configuration on brokers that throttle or skip weekend candles. The equity floor at 95% of the initial balance makes the EA unsuitable for accounts that intentionally allow drawdowns above 5%.
Strategy Logic
Pipsgrowth EX08001 MACD — Strategy Logic Analysis (from .mq5 source)
Family: MACD
Magic: 22208001
Version: 2.00
BRIEF:
MACD main/signal crossover signal gated by ADX regime, HTF EMA bias, ATR-percentile volatility gate, session filter, abnormal-spread / daily-loss / capital-cap guards. ATR stops, Chandelier trail, BE at 1R, 50% partial TP, optional pyramid (default OFF). 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
INDICATOR STACK:
- Standard
MT5indicators
KEY FUNCTIONS:
ClassifyRegime()Percentile()GetSignal()IsConfirmed()IsNoTradeBlocked()InSession()RiskPasses()TodayRealizedPnL()UpdateEffectiveCapital()CountMyPositions()CalcLot()NormalizeLot()- ...and 16 more
INTERNAL CONSTANTS (0 total):
INPUT PARAMETERS (36 total across 8 groups):
- [=== Identity ===]
InpMagic=22208001// Magic Number - [=== Identity ===]
InpTradeComment= "Psgrowth.com Expert_08001" // TradeComment - [=== Identity ===]
InpSymbol= "" // Symbol override (""=_Symbol) - [=== Identity ===]
InpTimeframe= 4 //Timeframe(1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Working timeframe - [=== Risk & Sizing ===]
InpRiskPercent=0.5// Risk per trade (% of effective cap) - [=== Risk & Sizing ===]
InpFixedLot=0.01// Fallback fixed lot (if risk=0) - [=== Risk & Sizing ===]
InpATR_SL_Mult=2.0//ATRstop-loss multiplier (R) - [=== Risk & Sizing ===]
InpRR_TP=3.0// Reward:Risk for final TP - [=== Risk & Sizing ===]
InpRR_Partial1=1.5// Reward:Risk for partialTP1(0=off) - [=== Risk & Sizing ===]
InpPartial1Pct=50.0// Partial TP close % of position - [=== Risk & Sizing ===]
InpDailyLossLimitPct=3.0// Daily loss limit (% of effective cap) - [=== Risk & Sizing ===]
InpMaxConcurrent= 1 // Max concurrent positions (this symbol+magic) - [=== Capital
Cap(real money) ===]InpCapitalCapAmount=0.0// Cap amount (real-moneyUSD) - [=== Capital
Cap(real money) ===]InpCapitalCapFloor=50.0// Floor; below this no new entries - [=== Signal / Confirm ===]
InpSignalMode= 1 // 1=Main/Signal cross, 2=Zero-line cross - [=== Signal / Confirm ===]
InpHTF_EMA= 50 //HTFEMAperiod for bias (0=off) - [=== Exit / Manage ===]
InpATR_Trail_Mult= 3 //ATRtrailing multiplier (Chandelier) - [=== Exit / Manage ===]
InpMaxBars= 240 // Max bars in trade (0=off) - [=== Exit / Manage ===]
InpBE_Trigger_R= 1 // Break-even trigger (R multiples, 0=off) - [=== Guardrails ===]
InpMaxSpreadPts= 250 // Max spread (points, 0=off) - [=== Guardrails ===]
InpSessionMode= 1 // 0=any,1=London/NY only,2=Asia only - [=== Hardening: Risk Management ===]
InpMaxConsecLosses= 3 // Max consecutive losses before cooldown (0=disabled) - [=== Hardening: Risk Management ===]
InpCooldownMinutes= 30 // Cooldown minutes after consec losses (0=disabled) - [=== Hardening: Risk Management ===]
InpMaxTradesPerDay= 50 // Maximum trades per day - [=== Hardening: Risk Management ===]
InpMinEquityPercent=95.0// Stop trading if equity falls below this % of initial balance - [=== Hardening: Risk Management ===]
InpWeeklyLossLimitPct=6.0// Weekly loss limit (% of effective cap) - [=== Hardening:
GMTSessions ===]InpServerGMTOffset= 0 // ServerGMToffset in hours (0=auto-detect via weekend gap) - [=== Hardening:
GMTSessions ===]InpLondonStartHour= 7 // London session start (GMT) - [=== Hardening:
GMTSessions ===]InpLondonEndHour= 16 // London session end (GMT) - [=== Hardening:
GMTSessions ===]InpNYStartHour= 12 // New York session start (GMT) - [=== Hardening:
GMTSessions ===]InpNYEndHour= 21 // New York session end (GMT) - [=== Hardening:
GMTSessions ===]InpAvoidAsia=true// Avoid Asian session - [=== Hardening:
GMTSessions ===]InpAsiaStartHour= 0 // Asian session start (GMT) - [=== Hardening:
GMTSessions ===]InpAsiaEndHour= 7 // Asian session end (GMT) - [=== Hardening:
GMTSessions ===]InpNewsFilter=false// Avoid trading near news session opens - [=== Hardening:
GMTSessions ===]InpNewsFilterMinutes= 15 // Minutes to avoid around news
// Pipsgrowth EX08001 MACD — Execution Flow (from source analysis)
// Family: MACD
// MACD main/signal crossover signal gated by ADX regime, HTF EMA bias, ATR-percentile volatility gate, session filter, abnormal-spread / daily-loss / capital-cap guards. ATR stops, Chandelier trail, BE at 1R, 50% partial TP, optional pyramid (default OFF). 12 layers: REGIME, SIGNAL, ENTRY, CONFIRM, NO-TRADE, CAPITAL CAP, RISK, SIZING, MANAGE, EXIT, SCALING, OnTester
ON_INIT:
Create indicator handles: standard set
Initialize state variables
Detect broker GMT offset
ON_TICK:
1. Refresh indicator buffers (closed-bar shift=1)
2. Manage existing positions:
- Break-even check
- ATR trailing stop
- Profit lock ratchet
- Time-based exit
- Opposite-signal exit
3. If new bar:
a. ClassifyRegime() — ADX/ATR/BB regime detection
b. NoTradeGate() checks:
- Market open + session filter
- Spread limit
- Cooldown after loss
- Consecutive loss limit
- Kill switch
- Max drawdown
- Max concurrent positions
- Daily/weekly loss limits
c. GenerateSignal() — strategy-specific entry logic
d. CheckConfirm() — HTF alignment + R:R + ADX minimum
e. Calculate position size from risk %
f. Execute with retry logic
g. Mark bar to prevent duplicates
ON_TESTER:
Custom fitness = weighted(RecoveryFactor, ROI, ProfitFactor, TradeCount, Sharpe, Drawdown)Optimization Profile
How to Install This EA on MT5
- 1Download the .mq5 file using the button above
- 2Open MetaTrader 5 on your computer
- 3Click File → Open Data Folder in the top menu
- 4Navigate to MQL5 → Experts and paste the .mq5 file there
- 5In MT5, right-click Expert Advisors in the Navigator panel → Refresh
- 6Drag the EA onto an H4 or Daily chart for best results
- 7Configure EMA periods, ADX threshold, and lot size in the dialog
- 8Enable Allow Algo Trading and click OK
EA Parameters
| Parameter | Default | Description |
|---|---|---|
| InpMagic | 22208001 | Magic Number |
| InpTradeComment | "Psgrowth.com Expert_08001" | Trade Comment |
| InpSymbol | "" | Symbol override (""=_Symbol) |
| InpTimeframe | 4 | Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Working timeframe |
| InpRiskPercent | 0.5 | Risk per trade (% of effective cap) |
| InpFixedLot | 0.01 | Fallback fixed lot (if risk=0) |
| InpATR_SL_Mult | 2.0 | ATR stop-loss multiplier (R) |
| InpRR_TP | 3.0 | Reward:Risk for final TP |
| InpRR_Partial1 | 1.5 | Reward:Risk for partial TP1 (0=off) |
| InpPartial1Pct | 50.0 | Partial TP close % of position |
| InpDailyLossLimitPct | 3.0 | Daily loss limit (% of effective cap) |
| InpMaxConcurrent | 1 | Max concurrent positions (this symbol+magic) |
| InpCapitalCapAmount | 0.0 | Cap amount (real-money USD) |
| InpCapitalCapFloor | 50.0 | Floor; below this no new entries |
| InpSignalMode | 1 | 1=Main/Signal cross, 2=Zero-line cross |
| InpHTF_EMA | 50 | HTF EMA period for bias (0=off) |
| InpATR_Trail_Mult | 3 | ATR trailing multiplier (Chandelier) |
| InpMaxBars | 240 | Max bars in trade (0=off) |
| InpBE_Trigger_R | 1 | Break-even trigger (R multiples, 0=off) |
| InpMaxSpreadPts | 250 | Max spread (points, 0=off) |
| InpSessionMode | 1 | 0=any,1=London/NY only,2=Asia only |
| InpMaxConsecLosses | 3 | Max consecutive losses before cooldown (0=disabled) |
| InpCooldownMinutes | 30 | Cooldown minutes after consec losses (0=disabled) |
| InpMaxTradesPerDay | 50 | Maximum trades per day |
| InpMinEquityPercent | 95.0 | Stop trading if equity falls below this % of initial balance |
| InpWeeklyLossLimitPct | 6.0 | Weekly loss limit (% of effective cap) |
| InpServerGMTOffset | 0 | Server GMT offset in hours (0=auto-detect via weekend gap) |
| InpLondonStartHour | 7 | London session start (GMT) |
| InpLondonEndHour | 16 | London session end (GMT) |
| InpNYStartHour | 12 | New York session start (GMT) |
| InpNYEndHour | 21 | New York session end (GMT) |
| InpAvoidAsia | true | Avoid Asian session |
| InpAsiaStartHour | 0 | Asian session start (GMT) |
| InpAsiaEndHour | 7 | Asian session end (GMT) |
| InpNewsFilter | false | Avoid trading near news session opens |
| InpNewsFilterMinutes | 15 | Minutes to avoid around news |
#property copyright "Pipsgrowth.com"
#property link "https://pipsgrowth.com"
#property version "2.00"
#property strict
#property description "Pipsgrowth.com EX08001 MACD TrailingStop XAUUSD 5M — MACD cross + Chandelier trail, full 12-layer stack."
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>
CTrade trade;
CPositionInfo position;
CSymbolInfo sym;
CAccountInfo acc;
COrderInfo ord;
CDealInfo deal;
//================== INPUTS (20 total) ==================
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(tf)
{
case 1: return PERIOD_M1;
case 2: return PERIOD_M5;
case 3: return PERIOD_M15;
case 4: return PERIOD_M30;
case 5: return PERIOD_H1;
case 6: return PERIOD_H4;
case 7: return PERIOD_D1;
default: return PERIOD_H1;
}
}
ENUM_APPLIED_PRICE MapAppliedPriceInt(int ap)
{
switch(ap)
{
case 1: return PRICE_CLOSE;
case 2: return PRICE_OPEN;
case 3: return PRICE_HIGH;
case 4: return PRICE_LOW;
case 5: return PRICE_MEDIAN;
case 6: return PRICE_TYPICAL;
case 7: return PRICE_WEIGHTED;
default: return PRICE_CLOSE;
}
}
ENUM_TIMEFRAMES g_InpTimeframe = PERIOD_H1;
input group "=== Identity ==="
input long InpMagic = 22208001; // Magic Number
input string InpTradeComment = "Psgrowth.com Expert_08001"; // Trade Comment
input string InpSymbol = ""; // Symbol override (""=_Symbol)
input int InpTimeframe = 4; // Timeframe (1=M1,2=M5,3=M15,4=M30,5=H1,6=H4,7=D1) // Working timeframe
ENUM_TIMEFRAMES MapTimeframeInt(int tf)
{
switch(tf)Full source code available on download
Educational purposes only. Do NOT use with real money. Test on demo accounts only.
Clear Warning: Educational Purposes Only
Clear Warning: This Expert Advisor is for educational and testing purposes only. Do NOT use it with real money. Test only on demo accounts. Trading with real money involves substantial risk of capital loss. This does not constitute investment advice.
Recommended Brokers for This EA
These EAs run on MT5 — use a regulated broker with fast execution and tight spreads
Markets.com
Exness
IC Markets
Similar Expert Advisors
View All Expert AdvisorsMore Trend Following strategy EAs from our library
Pipsgrowth EX16080 Trend
Pipsgrowth.com EX16080 EURUSDTrendFollower — triple-EMA H4 trend follower, full 12-layer stack.
Pipsgrowth EX16081 Trend
Pipsgrowth.com EX16081 GoldTrendEA — XAUUSD H4 EMA cross with Fib targets, full 12-layer stack.
Pipsgrowth EX16033 Trend
Pipsgrowth.com EX16033 EA_Price_Action — price-action grid scalper, full 12-layer stack.
Community
Educational purposes only. Do NOT use with real money. Test on demo accounts only.