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

 
Nerd Trader #:
Не знал что есть ObjectsDeleteAll.

Я везде использую

   ObjectsDeleteAll(0,Prefix);
 
MakarFX #:

Я везде использую

Привык что в Си надо всё самому делать, а тут в mql4 уже готовые решения.
 
Nerd Trader #:
Не знал что есть ObjectsDeleteAll, а теперь хочу докопаться до истины.

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

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

Artyom Trishkin, 2021.09.30 05:31

Удаляйте. Но лучше один раз понять причину - чтобы больше никогда не городить.

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


 
Artyom Trishkin #:

Понял, спасибо
 
Valeriy Yastremskiy #:

Распринтуй перед вторым if и внутри второго if номер, тикет и тип ордера.

Добрался. Попробовал. Считает, но не совсем так. Он считает ордера по тику. А мне нужен предпоследний ордер вверху сетки. Если цена уходит вниз и открывается еще ордер, то предпоследнем становиться ордер с максимальным OrderOpenPrice.

 
ObjectsDeleteAll - это хорошо. Но если вдруг нужно удалить не ВСЁ, то без цикла с условиями ну никак! И тут уж точно золотое правило - начинать нужно с конца!
 
pribludilsa #:
Как работать с файлом в mql5 программе, не записывая файл на диск, а работать только в оперативной памяти, для ускорения. Я хочу из mql5 программы передать данные, программе на своём компьютере.

Вот тута:

https://www.mql5.com/ru/articles/503

Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.
 
makssub #:

Добрался. Попробовал. Считает, но не совсем так. Он считает ордера по тику. А мне нужен предпоследний ордер вверху сетки. Если цена уходит вниз и открывается еще ордер, то предпоследнем становиться ордер с максимальным OrderOpenPrice.

double FindOpenPrice(int a=-1)// 0 - макс, 1 - мин
{
   double maxopenprice=0;
   double minopenprice=DBL_MAX;
   double openprice=0;
   
   for(int cnt=OrdersTotal()- 1 ; cnt>=0; cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         {
            if (OrderType() == OP_SELL || OrderType() == OP_BUY)
            {
               if (a==0 && maxopenprice<OrderOpenPrice())
               {
               maxopenprice = OrderOpenPrice(); openprice=maxopenprice ;
               }
               if (a==1 && minopenprice>OrderOpenPrice())
               {
               minopenprice= OrderOpenPrice(); openprice=minopenprice;
               }
            }
         }
      }
   }
   return(openprice);
}
 
makssub #:

Добрался. Попробовал. Считает, но не совсем так. Он считает ордера по тику. А мне нужен предпоследний ордер вверху сетки. Если цена уходит вниз и открывается еще ордер, то предпоследнем становиться ордер с максимальным OrderOpenPrice.

Ну так ищите не по цене, а по времени открытия…
 
MakarFX #:

Выдает последний, а не предпоследний(




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