Помогите разобраться с ошибкой.

 
Написал советника, вроде все правильно, а работать не хочет : '\end_of_program' - ending bracket '}' expected
Может кто из опытных подскажет что сдесь не так:


//+------------------------------------------------------------------+
//| 1.mq4 |
//| Zmey |
//| xzmey@yandex.ru |
//+------------------------------------------------------------------+
extern double StopLoss = 50;
extern double TakeProfit = 30;
extern double TrailingStop = 15;
extern double Lots = 0.1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
{
int cnt=0, ticket, total;
// теперь надо определится в какок состоянии торговый терминал?
// проверим, есть ли ранее открытые позиции или ордеры?
total=OrdersTotal();
if(total<1)

// нет ниодного открытого ордера
// на всякий случай проверим, есть ли у нас свободные деньги на счету?
if(AccountFreeMargin()<(3000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0); // денег нет-выходим
}
//проверяем возможность открытия позиции по BAY
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Ask-StopLoss*Point,
"serfing sample",16384,0,Red); //исполняем
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
//проверяем возможность открытия позиции по SELL
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,Bid+StopLoss*Point,
"serfingsample",16384,0,Red); //исполняем
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
//переходим к важной части эксперта - контролю открытых позиций
//`важно правильно войти в рынок, но выйти - еще важнее...`
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) //инструмент совпадает?
{
if(OrderType()==OP_BUY) //открыты позиция BUY
{
//проверим, может пора закрывать позицию?
if(Bid<OrderOpenPrice()) //позиция в убытке то:
{
if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) //разворот движения
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid>OrderOpenPrice()) //позиция в прибыли то:
{
if(Bid<=OrderOpenPrice+8*Point) //прошли 8 пунктов
{
if(Bid<=OrderOpenPrice)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid=OrderOpenPrice+10*Point) //прошли 10 пунктов
{
if(Bid<=OrderOpenPrice+5*Point)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid=OrderOpenPrice+15*Point) //прошли 15 пунктов
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-5*Point*StopLoss,OrderTakeProfit(),0,Red);
return(0);
}
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
}
if(OrderType()==OP_SELL) //открыты позиция SELL
{
//проверим, может пора закрывать позицию?
if(Ask>OrderOpenPrice()) //позиция в убытке то:
{
if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) //разворот движения
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask<OrderOpenPrice()) //позиция в прибыли то:
{
if(Ask>=OrderOpenPrice+8*Point) //прошли 8 пунктов
{
if(Ask>=OrderOpenPrice)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask=OrderOpenPrice+10*Point) //прошли 10 пунктов
{
if(Ask>=OrderOpenPrice+5*Point)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask=OrderOpenPrice+15*Point) //прошли 15 пунктов
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+5*Point*StopLoss,OrderTakeProfit(),0,Red);
return(0);
}
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
}
}
return(0);
}
// конец.

 
и как среди такого богатства неформатированного исходного кода разбираться?
 
тебе нужно найти не сбалансированную (пару открывающей/закрывающей фигурной скобке), а ты выложил не "читабельный" код, для этого есть специальная кнопка [code] , нажимаешь на нее , а затем между появившимися тэгами вставляешь свой код
 
первый раз в первый класс :)
//+------------------------------------------------------------------+
//|                                                      Serfing.mq4 |
//|                                                             Zmey |
//|                                                  xzmey@yandex.ru |
//+------------------------------------------------------------------+
extern double StopLoss = 50;
extern double TakeProfit = 30;
extern double TrailingStop = 15;
extern double Lots = 0.1;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
   {
     {
      int cnt=0, ticket, total;
     // теперь надо определится в какок состоянии торговый терминал?
     // проверим, есть ли ранее открытые позиции или ордеры?
  total=OrdersTotal();
   if(total<1)
    
    // нет ниодного открытого ордера
    // на всякий случай проверим, есть ли у нас свободные деньги на счету?
    if(AccountFreeMargin()<(3000*Lots))
     {
      Print("We have no money. Free Margin = ", AccountFreeMargin());
      return(0); // денег нет-выходим
     }
    //проверяем возможность открытия позиции по BAY
    if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
      {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Ask-StopLoss*Point,
             "serfing sample",16384,0,Red); //исполняем
      if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
    //проверяем возможность открытия позиции по SELL
    if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
      {
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,Bid+StopLoss*Point,
              "serfingsample",16384,0,Red); //исполняем
       if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
   //переходим к важной части эксперта - контролю открытых позиций
   //`важно правильно войти в рынок, но выйти - еще важнее...`
   for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL &&  // это открытая позиция? OP_BUY или OP_SELL
       OrderSymbol()==Symbol()) //инструмент совпадает?
       {
       if(OrderType()==OP_BUY) //открыты позиция BUY
         {
          //проверим, может пора закрывать позицию?
          if(Bid<OrderOpenPrice()) //позиция в убытке то:
            {
            if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
             {
              OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
              return(0); //выходим
             }
            if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) //разворот движения
             {
              OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
              return(0); //выходим
             }
            }
          if(Bid>OrderOpenPrice()) //позиция в прибыли то:
            {
            if(Bid<=OrderOpenPrice+8*Point) //прошли 8 пунктов
             {
             if(Bid<=OrderOpenPrice)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
               return(0); //выходим
              }
             }
            if(Bid=OrderOpenPrice+10*Point) //прошли 10 пунктов
             {
             if(Bid<=OrderOpenPrice+5*Point)
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
               return(0); //выходим
              }
             }
            if(Bid=OrderOpenPrice+15*Point) //прошли 15 пунктов
             {
              OrderModify(OrderTicket(),OrderOpenPrice(),Bid-5*Point*StopLoss,OrderTakeProfit(),0,Red);
              return(0);
             }
            if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
             {
             OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
              return(0); //выходим
             }
            }
           }
           if(OrderType()==OP_SELL) //открыты позиция SELL
            {
          //проверим, может пора закрывать позицию?
          if(Ask>OrderOpenPrice()) //позиция в убытке то:
            {
            if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
              return(0); //выходим
             }
            if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) //разворот движения
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
              return(0); //выходим
             }
            }
          if(Ask<OrderOpenPrice()) //позиция в прибыли то:
            {
            if(Ask>=OrderOpenPrice+8*Point) //прошли 8 пунктов
             {
             if(Ask>=OrderOpenPrice)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
               return(0); //выходим
              }
             }
            if(Ask=OrderOpenPrice+10*Point) //прошли 10 пунктов
             {
             if(Ask>=OrderOpenPrice+5*Point)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
               return(0); //выходим
              }
             }
            if(Ask=OrderOpenPrice+15*Point) //прошли 15 пунктов
             {
              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+5*Point*StopLoss,OrderTakeProfit(),0,Red);
              return(0);
             }
            if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
             {
             OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
              return(0); //выходим
              }
           }
        }
     }
   return(0);
  }
// конец.
 
....я, например, когда пишу, ставлю перед слудующей скобкой на одну табуляцию больше.. потом намного проще разгребать подобные проблемы ;)

int start()
{
	if ( ..... )
	{
		while (....)
		{
			...
		}
	}

}
 
небрежно написанный код...
после int start две подряд открывающие фигурные скобки.
после if(total<1) наоборот не хватает открывающей фигурной скобки
и в конце перед ретурном не хватает закрывающей фигурной скобки.
а дальше..... 44 ошибки
 
Ну не то чтобы небрежно... я первый раз пишу и не программист я.
Если не затруднит ответить, какие именно ошибки?
 
Ну не то чтобы небрежно... я первый раз пишу и не программист я.
Если не затруднит ответить, какие именно ошибки?

Все 44 ошибки? Шутник :)
 
Все 44 ошибки? Шутник :)

:)))
в каталоге эксперт , есть каталог лог, там текстовый файл в который выводятся сообщения об ошибках, можно также посмотреть вкладку журнал .
 
:))
все все увидел
тока сразу хочется нарисовать :((
Блин никогда стока ошибок невидел!
 
интересно, в ордере на открытие устанавливается только стоплосс или тейпрофит
Причина обращения: