What's wrong with this moving average alert?
  #1 (permalink)  
Old 03-25-2006, 12:58 AM
Freshman
 
Join Date: Mar 2006
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
forextrend is on a distinguished road
Thumbs up What's wrong with this moving average alert?

whats wrong with this moveing average alert?

PHP 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>0counted_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 
short_name="MTF_EMA("; break;
      case 
short_name="MTF_SMMA("; break;
      case 
short_name="MTF_LWMA("; break;
      default : 
short_name="MTF_SMA(";
     }
   switch(
TimeFrame)
   {
      case 
string TimeFrameStr="Period_M1"; break;
      case 
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,counted_bars=IndicatorCounted();
   
   
   
      
// 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[i]<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[i]=iMA(NULL,TimeFrame,MAPeriod,ma_shift,ma_method,applied_price,y) ; 
   
   }
   
     
  Print(
Crossed (ExtMapBuffer1[0],ExtMapBuffer2[0]));


  
   return(
0);
  }
//+------------------------------------------------------------------+ 

Last edited by scorpion : 03-25-2006 at 10:26 PM.
Reply With Quote
  #2 (permalink)  
Old 03-26-2006, 07:29 AM
gazuz's Avatar
Senior Trader and Moderat
 
Join Date: Aug 2004
Posts: 768
Thanks: 1
Thanked 8 Times in 5 Posts
gazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to all
Default

Here is the debug:

Code:
'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...

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[i]<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[i]=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
__________________
____________________________\¦/
___________________________(ò ó)
______________________o0o___(_)___o0o__
___¦_____¦_____¦_____¦_____¦_____¦_____¦
¦_____¦_____¦_____¦_____¦_____¦_____¦__
___¦_____¦_____¦_____¦_____¦_____¦_____¦
¦_____¦_____¦_____¦_____¦_____¦_____¦__
Reply With Quote
  #3 (permalink)  
Old 03-26-2006, 10:41 PM
scorpion's Avatar
Administrator
 
Join Date: Aug 2004
Posts: 1,923
Thanks: 97
Thanked 361 Times in 147 Posts
scorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to beholdscorpion is a splendid one to behold
Send a message via MSN to scorpion Send a message via Yahoo to scorpion
Default

Eh, great gazuz. That's amazing that you can write mql now.
__________________
Make easy pips with the Advanced Economic Calendar for Forex Trading.

Last edited by scorpion : 03-27-2006 at 06:37 AM.
Reply With Quote
  #4 (permalink)  
Old 03-28-2006, 03:53 AM
gazuz's Avatar
Senior Trader and Moderat
 
Join Date: Aug 2004
Posts: 768
Thanks: 1
Thanked 8 Times in 5 Posts
gazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to allgazuz is a name known to all
Default

Quote:
Originally Posted by scorpion
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
__________________
____________________________\¦/
___________________________(ò ó)
______________________o0o___(_)___o0o__
___¦_____¦_____¦_____¦_____¦_____¦_____¦
¦_____¦_____¦_____¦_____¦_____¦_____¦__
___¦_____¦_____¦_____¦_____¦_____¦_____¦
¦_____¦_____¦_____¦_____¦_____¦_____¦__
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
moving average and macd MuppetMan Indicators 14 05-17-2008 07:07 AM
Moving average and price crossover (a must for research!) Altern8 Indicators 6 11-20-2007 08:32 AM
moving average 35 of cci 20 indicator xavier050463 Indicators 0 09-21-2006 09:33 PM
Custom Moving Average Cross forextrend Indicators 1 03-26-2006 07:04 AM
Exponential Moving Average gazuz Trading Systems 9 01-05-2006 01:17 AM


All times are GMT. The time now is 01:49 AM.
Powered by vBulletin Version 3.6.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.1.0

Registered members have access to special online forex currency trading tools, software, mt4 expert advisors and indicators. Register now