Несколько условий на покупку в СОВЕТНИКЕ! ВОПРОС!!! - страница 2

 
slayer:

....

У вас после названия функции какая скобочка стоит? Должно быть int OrdersCount {...}.

З.Ы. И не стоит объявлять функцию в теле другой функции.

 

А в какое место кода вы эту функцию вставляете?

приведите свой код целиком, хотя бы для открытия позиции по первому условию - как в пост 1

 
rid:

А в какое место кода вы эту функцию вставляете?

приведите свой код целиком, хотя бы для открытия позиции по первому условию - как в пост 1

да дело не в том куда я эту функцию вставляю....Пытаюсь простой скрипт создать с кодом данной функции, но почему то выдает аналагичную ошибку.....ну как быть то???

 
Talex:
slayer:

....

У вас после названия функции какая скобочка стоит? Должно быть int OrdersCount {...}.

З.Ы. И не стоит объявлять функцию в теле другой функции.

Да нет...все правильно....скобочки должны быть круглые

 
slayer:
Talex:
slayer:

....

У вас после названия функции какая скобочка стоит? Должно быть int OrdersCount {...}.

З.Ы. И не стоит объявлять функцию в теле другой функции.

Да нет...все правильно....скобочки должны быть круглые

Я не правильно написал, каюсь. На скриншоте с предыдущей страницы мне показалось, что после int OrderCount (int MN) дальше(...) стоят круглые скобки.

 
slayer:
slayer:
DENISka:

Вместо OrdersTotal() вставьте вызов этой функции. В нее передаете MagicNumber она возврашает кол-во

открытых оредров с этим MagicNumber`ом.

Например:

total1=OrdersCount(11111);

total2=OrdersCount(11112);

Сама функция:

int OrdersCount(int MN)
{
  int Orders=0;
  int total=OrdersTotal();
  for (int i=0; i<total; i++)
    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) 
      return (-1);

    
    if (OrderMagicNumber()!=MN)
      continue;
 
    Orders++;  
    }
  
  return(Orders);
}


Не сомневаюсь что функция хороша....Но когда ее вставляю, почему у меня выдает такую ошибку:

'(' - function definition unexpected

При чем показывает на строчку int OrdersCount(int MN)

а хто будет еще одну фигурную скобку для функции старт закрывать? :)

 
slayer:
Talex:
slayer:

....

У вас после названия функции какая скобочка стоит? Должно быть int OrdersCount {...}.

З.Ы. И не стоит объявлять функцию в теле другой функции.

Да нет...все правильно....скобочки должны быть круглые

Вы не обратили внимания на постскриптум - а зря.

З.Ы. И не стоит объявлять функцию в теле другой функции.

Это именно то, о чем Вам говорит компилятор. То есть в теле функции старт() ожидается вызов, а не описание функции ОрдерзКоунт(). - Выносите его (описание) за пределы функции старт. И закрывающую скобку для функции старт предусмотрите.

Успехов.

 
int start()
{
int total;
total=OrdersCount();
return(0);
}

int OrdersCount(){
  int Orders=0;
  int total=OrdersTotal();
  for (int i=0; i<total; i++)
    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) 
      return (-1);

    
    if (OrderMagicNumber()!=12345)
      continue;

    Orders++;  
    }
  
  return(Orders);
}
Во, спасибо парни!!! Теперь я понял!!! )))
 

Теперь проблема. открывает множество ордеров по одному условию...Вот зараза!!! ((((

Пишу как

total=OrdersCount();

if (total<1)

//прам-пам -пам

(((((((((((((

 

Аналогичная проблема и с функцией KimIV ...Функция хорошая.....компиляция прошла нормально!! Но не понимаю, почему куча ордеров то открывается....

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int ExistPositions(string sy="", int op=-1, int mn=12345, datetime ot=0) {
  int i, k=OrdersTotal();
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}

  

int start()
  {

   int cnt=0, ticket, total,total2,total3,total4,total5,a,b, pos,code,i,tp,sl,Orders;
   double histcnt;


   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }   

if (ExistPositions(12345)<1)
     {
      // нет ни одного открытого ордера
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }

      
      // проверяем на возможность встать в длинную позицию (BUY)
      if (Прам-Пам-Пам)
        
           {
        
         
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask - Point * 20,Ask + Point * 20,"My order1",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened 1: ",OrderOpenPrice());                      
           }
         else Print("Error opening BUY order 1: ",GetLastError()); 
         return(0); 
        }
     return(0);
     }
   //конец 
   
   return(0);
  }
Причина обращения: