Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2010.03.03 12:15

Optimize cross Moving average - indicator for MetaTrader 4

| English Español Português 日本語 Deutsch

votes: 9
MAProfit.mq4 (27.54 KB)view
MAProfit2.mq4 (2.76 KB)view

Updated Version.

See description below.

Still believing in Cross Moving Average and -- as a programmer -- always seeking the simplest solution. I came acros the sentance "there is no magic setting for cross MA". This indicator tries out a lot of settings each time the time frame or the symbol changes or even one each new candle. It works by dull "trading" the last 100 or so candles and choosing the settings with the best success. It is simply measuring the distance between a short and a long signal, as if anybody have traded this without stop loss. It takes the spread into account.

The lower window shows the distance between the short and the long Moving Average positive values are for long trades, negative values are for short trades in pips. Using the "profit oszilator" you can end a trade in profit by examining if short/long trades have a maximum difference and ending right before the maxium.

The upper line says "Profit today with MA 5/19 is 60 pips". The indicator or the user has choosen 5 for the fast MA and 19 for the slow MA. The next text field displays the results from yesterday followed by the signal Long or Short. Traders may like to drop two moving averages to the chart and set them up to the given value.

I am searching for more different MA recomondations in literatur.


  • PeriodShort=6;
    Period for the fast MA. Ignore if optimize is true
  • PeriodLong=40;
    Period for the slow MA. Ignore if optimize is true
  • Method=0;
    Method for iMA
  • Optimize=true;
    The indicator automatically chooses values for fast and slow MA
  • DrawTringles=true;
    Draw triangles into the chart
  • MinShortMA=2;
    Min and Max values for the optimization, it will try out values between 2 and 20 for the fast MA and 7 to 100 for the slow MA
  • StepLongMA=5;
    For speeding up the search, it is trying out every third value
  • CountOptimize=200;
    It is analyzing 200 candles from the past. The more candles you analyze the slower it will be, a big number may also result in less good results
  • OptimizeOnNewCandle=false;
    Start optimization on each new candle. Note: Optimization can take some time and slow down your terminal
  • Alarm=true;
    Ring the bell if a new signal arises

Next step, I want to create an expert Advisor of it, however I am still wondering how to detect a sidwards trend which should not be traded with cross MA. Until now my EA based on optimized cross MA sometimes makes excellent gains and burns it the next day.

Updated Version

New features:

- The indicator draws now the moving averages inside the chart, the "profit oszilator" is inside a different indicator (MAProfit2), both communicate with global variables

- Supports MA Channels (see ebook at, the slow moving average is split into two lines, one for low and one for high values, this should avoid losses in sidewards market

- Instead of testing all combinations, it can test certain MA ranges found in the literature. To do this set OptimizeAll to false and OptimizeSystems to true.

You can add or modify the systems table. Be sure to terminate it with 0,0,0,0,0,0

extern bool OptimizeAll=false;
extern bool OptimizeSystems=true;



- New alerts can be given as voice, in order to support this, you need to download gspeak, for example from

If you do not want voice, you need to modify the code. Remove the lines from #import "speak.dll" until #import and uncomment the gSpeak function. Thanks the autor for this wonderful DLL.

#import "speak.dll"
void gRate(int rate);
void gVolume(int rate);
void gPitch(int rate);
void gSpeak(string text);

// if you do not have (or want) the speach.dll uncomment this
void gSpeak(string x)

If you don't remove the voice, after some profit you may begin to love "Oncle Sams" voice speaking.

- At the firsts start or on parameter change, it remembers the candle on the first trade, this should avoid re-painting old trades with different ones.

- The treeangles now have three colors: Green for long trades, Red for short trades and Violett for trades with loss (long or short). The colors can be modified in the source code:
int ColorLongTrade = MediumSpringGreen;
int ColorShortTrade = Red;
int ColorBadTrade = Violet;

- The steps in MA Optimization have been set to 5

- The internal name of this indicator has been changed to SMA (Smart Ass ... it displays the how you should have traded aferwards).

MA Optimizer

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

The Acceleration/Deceleration Indicator (AC) measures acceleration and deceleration of the current driving force.

Average Directional Movement Index (ADX) Average Directional Movement Index (ADX)

The Average Directional Movement Index Indicator (ADX) helps to determine if there is a price trend.

Auto Fibonacci Retracement Auto Fibonacci Retracement

Automatically draws Fibonacci retracements on chart.

Example of A Simple Breakout Trading Robot Example of A Simple Breakout Trading Robot

Example of a simple breakout trading robot. There are a lot of breakout methods, but this is the simplest one as I think. Please see the attached images to visualize what is the breakout trading...