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

 
Artyom Trishkin #:
А ведь как просто сложить в массив и отсортировать по нужному критерию. Но уже 100500 страниц подвязываем костыли к пяткам.
Покажи, пожалуйста, пример в коде. Я не знаю как сложить в массив, а потом еще и отсортировать.
 
Alexey Viktorov #:
Ну ведь проверить проще и быстрей чем ждать ответ от кого-то…

мои умения в mql еще слишком малы) я конечно могу попробовать, но это займет у меня кучу времени) поэтому лучше заранее узнать, возможно ли что-то сделать, чем потратить кучу времени и понять, что так сделать не получится)
когда набью руку и будет больше свободного времени, то конечно будет легче самому попробовать, но пока что я лучше спрошу у более опытных людей, можно ли это провернуть.

 
Scarick #:

мои умения в mql еще слишком малы) я конечно могу попробовать, но это займет у меня кучу времени) поэтому лучше заранее узнать, возможно ли что-то сделать, чем потратить кучу времени и понять, что так сделать не получится)
когда набью руку и будет больше свободного времени, то конечно будет легче самому попробовать, но пока что я лучше спрошу у более опытных людей, можно ли это провернуть.

В вашем случае, если умения не велики, а логическое мышление работает, что можно понять из этого вопроса

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

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

Scarick, 2021.11.06 17:01

То есть если в индикаторе я подпишусь 5 символов, то только через один  OnBookEvent() я могу работать со всеми 5 символами? Главное только фильтровать по какому символу произошло изменение?

то самое надёжное проверить, а не ждать положительного ответа от кого-то. Я потому и ответил так — как ответил.
 
MakarFX #:
Покажи, пожалуйста, пример в коде. Я не знаю как сложить в массив, а потом еще и отсортировать.

 Посмотри здесьhttps://www.mql5.com/ru/articles/1404 Сортировки там нет, но сложить в массив.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
Покажи, пожалуйста, пример в коде. Я не знаю как сложить в массив, а потом еще и отсортировать.

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
        for(int j = i-1;j>=0;j--) {

if (Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j]);

        }

}

да ну вас нах - ступайте в школу...такие микро-алгоритмы пишуться по памяти и в пьяном угаре, зажмурив один глаз

серьёзно : пройдите алгоритмические курсы какие-нить..

 
Alexey Viktorov #:

В вашем случае, если умения не велики, а логическое мышление работает, что можно понять из этого вопроса

то самое надёжное проверить, а не ждать положительного ответа от кого-то. Я потому и ответил так — как ответил.
Да уже понял, как попробовать с меньшими трудозатратами. Но через тестер это не проверишь. Надо ждать рабочие дни. Но могли бы и ответить прямо) я же не прошу за меня код написать, лишь обратился с вопросом.
 

Maxim Kuznetsov #:

да ну вас нах - ступайте в школу...такие микро-алгоритмы пишуться по памяти и в пьяном угаре, зажмурив один глаз

серьёзно : пройдите алгоритмические курсы какие-нить..

Интересная манера общения...не стоило напрягаться

 
MakarFX #:

Интересная манера общения...не стоило напрягаться

нормальная манера - вам приведён алгоритм сортировки. Всё путём, нормальный buble-sort. Никто не напрягался.

и нормальный в действительности посыл - почитайте про алгоритмы

ну почитайте уже литературку.

 

Доброго времени суток Господа программисты!!!!

Попробую ещё раз обратится со своим вопросом но чуть перефразировав его.

В сеточном советнике нужно найти тикет предпоследнего ордера. Решение типа -1 от тикета максимального ордера не проходит может быть это будет работать в тестере стратегий но на демо и реальных счетах не работает прикладываю картинку будет понятно почему.

   

Я написал код функции определения тикета предпоследнего ордера. Его логика следующая: после перебора всех открытых ордеров в сетке находим самый максимальный следующий за ним и есть нужный тикет ордера. 

Но уровень моего программирования не высок и в код закралась какая то ошибка. Результат этой функции самый минимальный тикет. Вот эти две функции макс тикет и предпоследний тикет. Функция определения макс. тикета работает без нареканий.  

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Прошу Вас подсказать в чем ошибка. Спасибо.

 
Scarick #:
Да уже понял, как попробовать с меньшими трудозатратами. Но через тестер это не проверишь. Надо ждать рабочие дни. Но могли бы и ответить прямо) я же не прошу за меня код написать, лишь обратился с вопросом.

Ну вот… У меня и в мыслях не было вас обидеть. А что изменилось-бы от положительного ответа? Ведь по любому надо писать и, проверять только в рабочее время.