HELP! не могу найти ошибку в коде

 

первый день за рулем))


#property link "http://www.metaquotes.net"

bool init = false;
int MagicNumber=017;
extern double lot = 1; //количество открываемых лотов в одной сделке (фикс)
extern int dist = 1; //расстояние между контрольными точками
extern double per1 = 21;
extern double per2 = 55;
extern double slip = 3;
double MaF_1, MaS_1, MaF_2, MaS_2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (init) return(0);
init = true;
//---- какая-то стандартная херня, сам ничо не понял
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
init = false;
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
// Торговые критерии
int start()
{
int ticket=0, type1, i;
MaF_1=iMA(Symbol(), Period(), per1,0, 1, 0,0);
MaS_1=iMA(Symbol(), Period(), per2,0, 1, 0,0);
MaF_2=iMA(Symbol(), Period(), per1,0, 1, 0, dist);
MaS_2=iMA(Symbol(), Period(), per2,0, 1, 0, dist);
type1=-1;
if (MaF_1<MaS_1 && MaF_2>MaS_2) type1=OP_BUY;
if (MaF_1>MaS_1 && MaF_2<MaS_2) type1=OP_SELL;
i=0;
for ( int trade = OrdersTotal()-1; trade>=0; trade-- )
{
if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
int m = OrderType();
if (( m==OP_BUY || m==OP_SELL ) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() )
{
i=i+1;
}
}
}
// допускаем только один открытый ордер одновременно
if (i==1) return(0);
//----открытие ордеров
if (type1=OP_SELL)
ticket=OrderSend(Symbol(),OP_SELL,lot, Bid,0,0,NULL, MagicNumber;
if (type1=OP_SELL)
ticket=OrderSend(Symbol(),OP_BUY, lot, Ask, 0,0,NULL, MagicNumber;
//----ошибки
if (ticket<0)
{
Sleep(50000);
RefreshRates();
}
return(0);
}

1 ошибка

end of programm - unbalanced left parenthesis, отсылает в а

заранее спасибо!


 
#property copyright "Serg"
#property link "http://www.metaquotes.net"

bool init = false;
int MagicNumber=017;
extern double lot = 1; //количество открываемых лотов в одной сделке (фикс)
extern int dist = 1; //расстояние между контрольными точками
extern double per1 = 21;
extern double per2 = 55;
extern double slip = 3;
double MaF_1, MaS_1, MaF_2, MaS_2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
   if (init) return(0);
   init = true;
//---- какая-то стандартная херня, сам ничо не понял
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
   init = false;
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
// Торговые критерии
int start()
{
   int ticket=0, type1, i;
   MaF_1=iMA(Symbol(), Period(), per1,0, 1, 0,0);
   MaS_1=iMA(Symbol(), Period(), per2,0, 1, 0,0);
   MaF_2=iMA(Symbol(), Period(), per1,0, 1, 0, dist);
   MaS_2=iMA(Symbol(), Period(), per2,0, 1, 0, dist);
   type1=-1;
   if (MaF_1<MaS_1 && MaF_2>MaS_2) type1=OP_BUY;
   if (MaF_1>MaS_1 && MaF_2<MaS_2) type1=OP_SELL;
   i=0;
   for ( int trade = OrdersTotal()-1; trade>=0; trade-- )
   {
      if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
      {
         int m = OrderType();
         if (( m==OP_BUY || m==OP_SELL ) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() )
         {
            i=i+1;
         }
      }
   }
      // допускаем только один открытый ордер одновременно
   if (i==1) return(0);
//----открытие ордеров
   if (type1==OP_SELL)
      ticket=OrderSend(Symbol(),OP_SELL,lot, Bid,0,0,NULL, MagicNumber);
   if (type1==OP_SELL)
      ticket=OrderSend(Symbol(),OP_BUY, lot, Ask, 0,0,NULL, MagicNumber);
//----ошибки
   if (ticket<0)
   {
      Sleep(50000);
      RefreshRates();
   }
   return(0);
}
 
спасибо!!! ох уж эти скобки=))
 
Kisel: спасибо!!! ох уж эти скобки=))

С самого начала учитесь избегать лишних вычислений. Сравните:

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
// Торговые критерии
int start()
{
   int ticket=0, type1 = -1, i = 0;

   for ( int trade = OrdersTotal()-1; trade>=0; trade-- )
   {
      if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
      {
         int m = OrderType();
         if (( m==OP_BUY || m==OP_SELL ) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() )
         {i++;}
      }
   }
      // допускаем только один открытый ордер одновременно
   if (i==1) return(0);

   MaF_1=iMA(Symbol(), Period(), per1,0, 1, 0,0);
   MaS_1=iMA(Symbol(), Period(), per2,0, 1, 0,0);
   MaF_2=iMA(Symbol(), Period(), per1,0, 1, 0, dist);
   MaS_2=iMA(Symbol(), Period(), per2,0, 1, 0, dist);
   if (MaF_1<MaS_1) {if (MaF_2>MaS_2) type1=OP_BUY;}
   else if (MaF_1>MaS_1) {if (MaF_2<MaS_2) type1=OP_SELL;}
//----открытие ордеров
   if (type1==OP_SELL)
      ticket=OrderSend(Symbol(),OP_SELL,lot, NormalizeDouble (Bid, Digits),0,0,NULL, MagicNumber);
   if (type1==OP_BUY)
      ticket=OrderSend(Symbol(),OP_BUY, lot, NormalizeDouble (Ask, Digits), 0,0,NULL, MagicNumber);
//----бесполезные действия
   if (ticket<0)
   {
      Sleep(50000);
      RefreshRates();
   }
   return(0);
}

Кстати, у Вас была ошибка в коде (исправил) на условие открытия BUY ордера.

P.S. А как они (ордера) у Вас закрываются: нет ни СТОПов ни закрытия по обратному сигналу???

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