Первый советник на основе 2 МА, помогите исправить ошибку.....

 

Доброго времени суток, помогите испарвить ошибку...

При компиляции видаёт такую ошибку.

'extern' - semicolon expected C:\Program Files\Real Trader 4\experts\EMA FIRST.mq4 (10, 2)

Вот код советника:

int init()
extern int Period_MA=51;
extern int Period_FMA=83;
int start()
{
double MA;
double FMA;
MA=iMA(NULL,0,Period_MA,10,MODE_EMA,PRICE_MEDIAN,0);
FMA=iMA(NULL,0,Period_FMA,13,MODE_EMA,PRICE_MEDIAN,0);
if(FMA-MA==5)
{
OrderSend(Symbol,OP_BUY,0.1,Ask,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError);
}
else(FMA-MA==-5)
{
OrderSend(Symbol,OP_SELL,0.1,Bid,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError);
}
return(0);
}




 

extern int Period_MA=51;
extern int Period_FMA=83;

int init(){}

int start()
{
double MA;
double FMA;
MA=iMA(NULL,0,Period_MA,10,MODE_EMA,PRICE_MEDIAN,0);
FMA=iMA(NULL,0,Period_FMA,13,MODE_EMA,PRICE_MEDIAN,0);
if(FMA-MA==5)
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError());
}
if(FMA-MA==-5)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError());
}
return(0);
}


типо так

 
space_cowboy >>:

extern int Period_MA=51;
extern int Period_FMA=83;

int init(){}

int start()
{
double MA;
double FMA;
MA=iMA(NULL,0,Period_MA,10,MODE_EMA,PRICE_MEDIAN,0);
FMA=iMA(NULL,0,Period_FMA,13,MODE_EMA,PRICE_MEDIAN,0);
if(FMA-MA==5)
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError());
}
if(FMA-MA==-5)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError());
}
return(0);
}


типо так

Попробовал... Видаёт ешё дополнительно 10 ошибок =(((

 
плохо пробовал, весь код замени
 
 

Попробуй так

extern int Period_MA=51;
extern int Period_FMA=83;

int init(){}

int start()
{
double MA;
double FMA;
MA=iMA(NULL,0,Period_MA,10,MODE_EMA,PRICE_MEDIAN,0);
FMA=iMA(NULL,0,Period_FMA,13,MODE_EMA,PRICE_MEDIAN,0);
if((FMA-MA)>=5)
{
ticket=OrderSend(Symbol(),0,1,Ask,2,Bid- 30*Point,Ask+30*Point,NULL,1111,0,CLR_NONE);
Alert(GetLastError());
}
if((FMA-MA)<=-5)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid,2,Bid-30*Point,Bid+30*Point);
Alert(GetLastError());
}
return(0);
}

 

Ошибка могла быть аот здесь :

вместо if(FMA-MA==5)

я сделал if((FMA-MA)>=5) - соотв. для бай и селл аналогично

Если оставить, как было ранее, то позиции никогда не откроются.

Подумай сам, - почему...

 
rid >>:

Попробуй так

Ошибка могла быть аот здесь :

вместо if(FMA-MA==5)

я сделал if((FMA-MA)>=5) - соотв. для бай и селл аналогично

Если оставить, как было ранее, то позиции никогда не откроются.

Подумай сам, - почему...

Понял, покорнейше благодарю, хорошо когда есть такие люди, которые тыкнут пальцем где ошибка, всё оказалось проще чем выглядело. =)

Причина обращения: