Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 613

 
Tigerfreerun:
If (OP_BUY==0)

Зачем вводите в заблуждение? Вы или сами не знаете, тогда не лезьте пожалуйста с незнанием в ветку, где ПОМОГАЮТ, либо вы прикалываетесь так, но забыли, что находитесь в серьёзной ветке помощи новичкам.

SanNneK:
вот условие, если ноль всех ордеров if(OrdersTotal()==0). а какое написать условие если ноль имено баев?

Нужно в цикле пробежаться по всем ордерам и посчитать количество ордеров с OrderType()==ORDER_TYPE_BUY

 
Artyom Trishkin:

Зачем вводите в заблуждение? Вы или сами не знаете, тогда не лезьте пожалуйста с незнанием в ветку, где ПОМОГАЮТ, либо вы прикалываетесь так, но забыли, что находитесь в серьёзной ветке помощи новичкам.

Нужно в цикле пробежаться по всем ордерам и посчитать количество ордеров с OrderType()==ORDER_TYPE_BUY

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

int Count(int type,string sy)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {if(sy==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}
     }
   return(count);
  }
 
Tigerfreerun:

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

А какая помощь-то нужна? Вполне рабочая функция в кимовском стиле.
 
Alexey Viktorov:
А какая помощь-то нужна? Вполне рабочая функция в кимовском стиле.

На прошлой странице функцию написал с ошибкой  incorrect start position 0 for ArraySort function. И просьбой объяснить функцию. Дублирую 

void MaxMinProfit()
{
int i, N, MaxTic, MinTic;
double   MinProf=0, MaxProf=0, OP, g, a[][2];
string MinSym, MaxSym;
ArrayResize(a, 0);
 
for (i=OrdersTotal()-1; i>=0; i--) 
  {    
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
    { 
     if (OrderType()==OP_SELL ||  OrderType()==OP_BUY )
      {
       OP = NormalizeDouble(OrderProfit()+OrderSwap()+OrderCommission(),2);
       
      if (MinProf>OP) 
      {
       
          MinProf=OP;
          MinTic=OrderTicket();
          MinSym=OrderSymbol();
          
         }
         
      if (OP>0) 
      {
       
          N++;
            ArrayResize(a, N);
            a[N-1][0]=OP;
            a[N-1][1]=OrderTicket();
          
         }
         
         }
         }
         
         }
         
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);//MODE_ASCEND);
      
      for (i=0; i<Level; i++) 
       {
     
     g+=a[i][0];
     //int ti=a[i-2][1];
     }
         
         
     
     if(MinProf <0 && (g+MinProf)>=ProcMax)
      {
       for (i=0; i<Level; i++) 
       {
       if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
        {
        //Alert(a[i][1]);
         if (OrderType()== OP_BUY)
         {
          OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }
         }
          
          
          
          if (OrderSelect(MinTic, SELECT_BY_TICKET, MODE_TRADES))
        {
         if (OrderType()== OP_BUY)
         {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }}       
return;
}
 

Как лучше передавать параметры между элементами класса которые в свою очередь то же являются элементами класса?

Дано:

class element{
public:
int a;
        void fnc(){
        a++;            
        }
};

class elementBase{
public:
	int b;
        element one;
        element two;
};

Можно ли как-то из функции a.fnc() поменять значение two.a ?   


В моей задаче переменныые из класса two должен пересчитываться когда меняются элементы в классе one. Подскажите как сделать это красиво?)

Можно ли как-то получить значение b  из класса  elementBase?

 
Tigerfreerun:

На прошлой странице функцию написал с ошибкой  incorrect start position 0 for ArraySort function. И просьбой объяснить функцию. Дублирую 

Направление в котором надо думать: Если профит меньше нуля... какого размера будет массив во время сортировки???

И какого размера будет массив если ордеров вообще нет???
 
Alexey Viktorov:

Направление в котором надо думать: Если профит меньше нуля... какого размера будет массив во время сортировки???

И какого размера будет массив если ордеров вообще нет???
Я не очень понимаю, что именно выполняет эта функция. Но как говорил автор - задача перекрывать ордера убыточные - прибыльными между символами. Буду рад, если поможете исправить и понять функцию 
 
Tigerfreerun:
Я не очень понимаю, что именно выполняет эта функция. Но как говорил автор - задача перекрывать ордера убыточные - прибыльными между символами. Буду рад, если поможете исправить и понять функцию 

Что у вас за ошибки при компилировании? Покажите скрин.

В коде ошибок нет, но есть мелкие недоработки, которые не отражаются на работоспособность 

 
Vitaly Muzichenko:

Что у вас за ошибки при компилировании? Покажите скрин.

В коде ошибок нет, но есть мелкие недоработки, которые не отражаются на работоспособность 

При запуске робота " incorrect start position 0 for ArraySort function."  вы могли бы объяснить эту функцию, может я пойму в чем дело.. 
Файлы:
yOXZsAXZ-X4.jpg  479 kb
Pe3JLH8tgCc.jpg  556 kb
 
Tigerfreerun:
При запуске робота " incorrect start position 0 for ArraySort function."  вы могли бы объяснить эту функцию, может я пойму в чем дело.. 

Ну это вы показали не критические ошибки.

Как работает функция, вы сами ответили:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам

Tigerfreerun, 2018.09.06 21:53

Я не очень понимаю, что именно выполняет эта функция. Но как говорил автор - задача перекрывать ордера убыточные - прибыльными между символами. Буду рад, если поможете исправить и понять функцию 

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