Почему советник не работает, подскажите?

 

Я в программирование не силен, код мне подсказали но правильно ли я его разместил. Идея этого советника такая: открывается позиция на покупку при пересечения уровня 50 с низу вверх при условии что линия RSI тоже пересекла уровень 40 с низу верх, и на на продажу 60 потоп 50, позиция на продажу.


extern double Lots               = 0.1;
extern double MaximumRisk        = 0.3;
extern double TakeProfit         = 75;
extern double StopLoss           = 150;
extern double TrailingStop       = 20;
extern double TrailingStep       = 15;
extern double     RSIBuy         = 55;
extern double     RSISell        = 45; 
extern int    PeriodRSI          = 21;
extern int    TimeFrameRSI       = 15;
bool RuleBuy=false;
bool RuleSell=false;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  { 
  start();//открываем сделки при мересечении

   return(0);
  }
  
int OperateBuy,OperateSell,ticket;  


void start()
{
double Rulesell,RuleBuy; 
double TickRSI=iRSI(NULL,TimeFrameRSI,PeriodRSI,PRICE_CLOSE,0);
if (TickRSI<40) RuleBuy=true;
if ((TickRSI>50)&&(RuleBuy==true)) OperateBuy;

{
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3, Bid - StopLoss*Point, 
                               Ask + TakeProfit*Point,"ОК",0,Blue);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие BUY order  : ",OrderOpenPrice());
           }    
             
      return(0); 
     }
 if (TickRSI>60) RuleSell=true;  
 if ((TickRSI<50)&&(RuleSell==true)) OperateSell;
 {
 ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask + StopLoss*Point, 
                               Bid - TakeProfit*Point,"ОК",0,Red);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие Sell order  : ",OrderOpenPrice());
           }    
              
      return(0); 
     }
   return(0);
  }
 
Почти правильно. Замени эту часть:
int OperateBuy,OperateSell,ticket;  


void start()
{
double Rulesell,RuleBuy; 
double TickRSI=iRSI(NULL,TimeFrameRSI,PeriodRSI,PRICE_CLOSE,0);
if (TickRSI<40) RuleBuy=true;
if ((TickRSI>50)&&(RuleBuy==true)) OperateBuy;

{
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3, Bid - StopLoss*Point, 
                               Ask + TakeProfit*Point,"ОК",0,Blue);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие BUY order  : ",OrderOpenPrice());
           }    
             
      return(0); 
     }
if (TickRSI>60) RuleSell=true;  
if ((TickRSI<50)&&(RuleSell==true)) OperateSell;
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask + StopLoss*Point, 
                               Bid - TakeProfit*Point,"ОК",0,Red);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие Sell order  : ",OrderOpenPrice());
           }    
              
      return(0); 
     }
   return(0);
  }
на эту
void start()
{
int ticket; 
double TickRSI=iRSI(NULL,TimeFrameRSI,PeriodRSI,PRICE_CLOSE,0);
if (TickRSI<40) RuleBuy=true;
if ((TickRSI>50)&&(RuleBuy==true)) 

{
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3, Bid - StopLoss*Point, 
                               Ask + TakeProfit*Point,"ОК",0,Blue);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие BUY order  : ",OrderOpenPrice());
            RuleBuy=false;
           }    
             
      return; 
     }
if (TickRSI>60) RuleSell=true;  
if ((TickRSI<50)&&(RuleSell==true)) 
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask + StopLoss*Point, 
                               Bid - TakeProfit*Point,"ОК",0,Red);
            if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("произошло открытие Sell order  : ",OrderOpenPrice());
            RuleSell=false;
           }    
     }
   return;
  }
 

заменил, но при компиляции выводит вот такие ошибки:

'(' - function definition unexpected D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (51, 11)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (59, 5)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (61, 16)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (63, 28)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (72, 1)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (74, 16)
'ticket' - variable not defined D:\WForex Trade Station\experts\MACD&RSI&2.mq4 (76, 28)
7 ошибок, 0 предупреждений

 
'(' - function definition unexpected - где-то скобку прозевал или лишнюю поставил
 
Только сейчас заметил (даже предположить не мог :-)), у Вас две функции старт. Уберите верхнюю со всеми скобками.
 
Большое всем спасибо, все работает.
 
Dimka-novitsek:
Показывает на строку,в функции все скобки открыты правильно,как не смотрю,по моему пониманию,или где что не так?Помогите пожалуста!
Ваш пост удален как повторный. https://www.mql5.com/ru/forum/100819/page2
Причина обращения: