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

 
MakarFX #:
ЛС

проверяйте кошелек)

 
Alexey Viktorov #:

В какой-то теме встречал такое

скопировал, посмотрел, мало чего понял, закомментировал и забыл.

Сейчас вспомнил, в своих тестовых кодах нашёл, а вот на форуме найти не могу. Работу с макросами не понимаю, может кто объяснит как это работает или сможет найти тот вопрос откуда это я скопировал…

В общем-то надо как-то определить макроподстановку………

Это всё работает на этапе компиляции, но не в процессе загрузки программы

 

Всем доброго времени суток !!!!

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

Имеется функция определения последнего ордера: 

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

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

Нужно так чтобы выбор был из всех ордеров минус максимальный из оставшихся самый максимальный или следующий тикет после максимального или ВАШЕ решение. Спасибо. 

 
Vitaly Muzichenko #:

Это всё работает на этапе компиляции, но не в процессе загрузки программы

А разве загрузка программы не зависит от того как она скомпилирована?

 
EVGENII SHELIPOV #:

Всем доброго времени суток !!!!

Эта функция не может работать корректно

int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
 
MakarFX #:

Эта функция не может работать корректно

Да Макар ты как всегда прав это поправимо но  как не странно эта функция работает как часы 

 
MakarFX #:

Именно так.

А возможно это сделать через?

Выход только в написании собственной панели параметров и использовании её из OnInit() вместо использования стандартного механизма входных параметров.
 
Sergey Gridnev #:
Выход только в написании собственной панели параметров и использовании её из OnInit() вместо использования стандартного механизма входных параметров.

Интересная идея! Спасибо.

Нет, не интересная(

При каждой смене таймфрема опять вводить настройки не айс(

 
EVGENII SHELIPOV #:

Да Макар ты как всегда прав это поправимо но  как не странно эта функция работает как часы 

Работала как часы, т.к. ты искал последний ордер max_ticket

найти другой тикет не смог бы.

 
EVGENII SHELIPOV #:

Всем доброго времени суток !!!!

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

Можно запоминать тикет перед открытием нового ордера.

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