[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 177

 
badbadboy:

Мне это нужно,чтобы советник сам начал расчёты производить.
У Вас что, советник только позы открывает? Каждая копия (версия) должна иметь свой магик и каждая будет следить только за своими позициями.
 

Помогите разобраться:

Задача - подсчет убыточных ордеров покупки/продажи по отдельности. Код:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Само собой код - кусок из советника. Советник пашет и стабильно приносит убытки. Есть куча убыточных ордеров (в другом месте вывожу на печать) все они заносятся в журнал. Но в данном куске кода советник не заходит в условие

if (OrderProfit() < 0)


что я делаю не так?

 
borilunad:
У Вас что, советник только позы открывает? Каждая копия (версия) должна иметь свой магик и каждая будет следить только за своими позициями.

Понял.Большое спасибо!
 
belozad:

Помогите разобраться:

Задача - подсчет убыточных ордеров покупки/продажи по отдельности. Код:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Само собой код - кусок из советника. Советник пашет и стабильно приносит убытки. Есть куча убыточных ордеров (в другом месте вывожу на печать) все они заносятся в журнал. Но в данном куске кода советник не заходит в условие

if (OrderProfit() < 0)


что я делаю не так?

Пробуй

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

у меня едет крыша, что с моим mql4??

Почему на каждом такте программа выполняет следующие условие? ведь написано, что бы печать "i"  проходила только при новом закрытом ордере!

 

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

у меня едет крыша, что с моим mql4??

Почему на каждом такте программа выполняет следующие условие? ведь написано, что бы печать "i"  проходила только при новом закрытом ордере!

 

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Если i не статическая переменная он так и будет печатать на каждом тике.
 
badbadboy:

Если i не статическая переменная он так и будет печатать на каждом тике.

Оо, а я-то думаю, чего у меня несколько кусков в программе через попку работают! =)

Т.е. все рабочие переменные, значения которых я использую в разных тактах необходимо объявлять статичными?

 
belozad:

Оо, а я-то думаю, чего у меня несколько кусков в программе через попку работают! =)

Т.е. все рабочие переменные, значения которых я использую в разных тактах необходимо объявлять статичными?


Так сложно сказать.Посмотри свойства переменных,а уж потом думай что и как обозначать.
 

Функция OrderModify() не позволяет изменять комментарии. Как нибудь другим способом это реально сделать?

 
pasha5282:

Функция OrderModify() не позволяет изменять комментарии. Как нибудь другим способом это реально сделать?


Только из терминала.
Причина обращения: