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

 
MakarFX #:

Подскажите, пожалуйста, как правильно сделать

чтобы не вписывать все элементы которые хочу сложить, а просто указать 5 элементов

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
int Label1Buffer[];
int Label2Buffer[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int i=0,
       f=0,
       limit=9;
   ArrayResize(Label1Buffer,limit);
   ArrayResize(Label2Buffer,limit);
   for(i=limit-1; i>=0; i--)
     {
Label1Buffer[i]= 3;
 if(i<=4) f+=Label1Buffer[i];
Label2Buffer[i]= f;
      Print(Label2Buffer[i]);
     }
Print("   !  ",Label2Buffer[0]);
  }
//+------------------------------------------------------------------+
 
Galim_V #:

Нет, не то. Пока сделал так

   for(i=limit;i>=0;i--)
     {
      Label1Buffer[i] = MathRand();
      tmp = 0.0; 
      for(int a=Input1; a>0; a--)
        {
         tmp +=  Label1Buffer[i+a];
        } 
      Label2Buffer[i] = tmp;
     }
 
iHigh(NULL,PERIOD_H1,i) и double H=iHigh(NULL,PERIOD_H1,i); - это не одно и тоже?

Почему-то после цикла while дают разные результаты. 

Хотел оптимизировать, чтобы постоянно не писать длинную строчку  iHigh(NULL,PERIOD_H1,i), а забить её в переменную. Поменял в цикле на переменную, результат получился другой. 
 
Ivan Butko #:
iHigh(NULL,PERIOD_H1,i) и double H=iHigh(NULL,PERIOD_H1,i); - это не одно и тоже?

Почему-то после цикла while дают разные результаты. 

Хотел оптимизировать, чтобы постоянно не писать длинную строчку  iHigh(NULL,PERIOD_H1,i), а забить её в переменную. Поменял в цикле на переменную, результат получился другой. 

 смотря в каком контексте рассматривать..

Если ваш цикл while играет с i, то iHigh(NULL,PERIOD_H1,i) и H будут отличаться.. Потому что H хранит данные другой i

 
Nikolay Ivanov #:

 смотря в каком контексте рассматривать..

Если ваш цикл while играет с i, то iHigh(NULL,PERIOD_H1,i) и H будут отличаться.. Потому что H хранит данные другой i

Да, вы правы, играется с i. Имею ввиду, спасибо

 
А можно как-то историю порезать? Когда загружаешь, то загружается лет за 20, а нужна года 2-3 назад... 
 
Ivan Butko #:
А можно как-то историю порезать? Когда загружаешь, то загружается лет за 20, а нужна года 2-3 назад... 

С помощью клавиши "Shift" выбираешь не нужные данные и удаляешь

 
MakarFX #:

С помощью клавиши "Shift" выбираешь не нужные данные и удаляешь

Благодарю

 
Добрый день.
void CloseAll()
{
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
            if (OrderType() == OP_BUY)
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Bid, Slippage))
               Print (" Не удалось закрыть ордер на покупку!");
            }
            if (OrderType() == OP_SELL) 
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Ask, Slippage))
               Print (" Не удалось закрыть ордер на продажу!");
            }
         }
      }
   }
}
Использую вот этот код для закрытия всех ордеров. Но заметил если их очень много, то не все закрываются. Что можно добавить, чтобы закрыть все, пусть даже не с первого раза. Если можно, сразу пример.
 

Добрый день, еще раз)

Второй вопрос:
хочу закрывать ордера частично. Но есть проблема, при частичном закрытие ордеров, как я понял меняется тикет ордера, и от этого последние становится первыми, а мне главное сохранить порядок открытия. Чтобы последние оставались последними. Как можно отследить прежний порядок. Цена открытия меняется? Если можно, с примерами) 
Заранее спасибо

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