Here is the debug:
'string' - comma or semicolon expected (99, 6)
'MTF_LWMA' - variable not defined (99, 13)
'MTF_EMA' - variable not defined (114, 41)
'MTF_LWMA' - variable not defined (116, 41)
'(' - function definition unexpected (125, 9)
'start' - function is already defined and has body (166, 5)
'counted_bars' - variable is already defined (169, 29)
Here is my try on the code...
//+------------------------------------------------------------------+
//| maAlert.mq4 |
//| Copyright © 2006, Keris2112 |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Keris2112"
#property link "http://www.forex-tsd.com"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
//---- input parameters
/*************************************************************************
PERIOD_M1 1
PERIOD_M5 5
PERIOD_M15 15
PERIOD_M30 30
PERIOD_H1 60
PERIOD_H4 240
PERIOD_D1 1440
PERIOD_W1 10080
PERIOD_MN1 43200
You must use the numeric value of the timeframe that you want to use
when you set the TimeFrame' value with the indicator inputs.
---------------------------------------
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
You must use the numeric value of the Applied Price that you want to use
when you set the 'applied_price' value with the indicator inputs.
---------------------------------------
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
You must use the numeric value of the MA Method that you want to use
when you set the 'ma_method' value with the indicator inputs.
**************************************************************************/
extern int TimeFrame=0;
extern int MAPeriod=13;
extern int ma_shift=0;
extern int ma_method=MODE_SMA;
extern int applied_price=PRICE_CLOSE;
string short_name;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
bool Crossed (double line1 , double line2 )
{
static string last_direction = "";
string current_dirction = "";
if(line1>line2)current_dirction = "up";
if(line1<=line2)current_dirction = "down";
if(current_dirction != last_direction)
{
Alert("EMA Cross for "+Symbol()+" on the "+Period()+" minute chart.");
last_direction = current_dirction;
return (true);
}
else
{
return (false);
}
}
int start()
{
int counted_bars=IndicatorCounted();
string MTF_EMA;
string MTF_LWMA;
//---- check for possible errors
if (counted_bars<0) return(-1);
//---- last counted bar will be recounted
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
while(pos>=0)
{
ExtMapBuffer1[pos]= iMA(NULL,0,MTF_EMA,0,MODE_EMA,PRICE_CLOSE,pos);
ExtMapBuffer2[pos]= iMA(NULL,0,MTF_LWMA,0,MODE_LWMA,PRICE_CLOSE,pos);
pos--;
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init;
{
string short_name;
//---- indicator line
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(0,DRAW_LINE);
//---- name for DataWindow and indicator subwindow label
switch(ma_method)
{
case 1 : short_name="MTF_EMA("; break;
case 2 : short_name="MTF_SMMA("; break;
case 3 : short_name="MTF_LWMA("; break;
default : short_name="MTF_SMA(";
}
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName(short_name+MAPeriod+") "+TimeFrameStr);
}
//----
return(0);
//+------------------------------------------------------------------+
//| MTF Moving Average |
//+------------------------------------------------------------------+
int start;
{
datetime TimeArray[];
int i,shift,limit,y=0;
// Plot defined timeframe on to current timeframe
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit=Bars-counted_bars;
for(i=0,y=0;i<limit;i++)
{
if (Time<TimeArray[y]) y++;
/***********************************************************
Add your main indicator loop below. You can reference an existing
indicator with its iName or iCustom.
Rule 1: Add extern inputs above for all neccesary values
Rule 2: Use 'TimeFrame' for the indicator timeframe
Rule 3: Use 'y' for the indicator's shift value
**********************************************************/
ExtMapBuffer1=iMA(NULL,TimeFrame,MAPeriod,ma_shift,ma_method,applied_price,y) ;
}
Print(Crossed (ExtMapBuffer1[0],ExtMapBuffer2[0]));
return(0);
}
}
//+------------------------------------------------------------------+
To test your code click on the "Compile" button
Eh, great gazuz. That's amazing that you can write mql now.
scorpion:
Eh, great gazuz. That's amazing that you can write mql now.
Eh, great gazuz. That's amazing that you can write mql now.

I only know how to play around with them, I don't know how to start from scratch... I usually use a snipet of the code a few lines above or under and modify it to my needs, I just checked what it SHOULD look like and tada, we got the code
Hi,
Have you got a working and bug-free version of this code, does it work? Do you still trade it?
Regards
Brendan

You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
whats wrong with this moveing average alert?