Библиотеки: MT4Orders - страница 49

 
fxsaber:

Фильтрую срабатывание алерта на мелкие лаги.

Подобный результат можно видеть при выводе лагов > 30 ms.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.
 

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

Это несложно выяснить.

Alert: 60 - Too many trade requests


Будьте аккуратны, можно упереться в ограничение.


Возможный вариант получения такой информации.

// В случае true в Amount содержится максимальное возможное количество
// необработанных асинхронных запросов на весь Терминал.
bool GetMaxAsync( const TICKET_TYPE TicketPending, int &Amount )
{
  const bool Res = OrderSelect(TicketPending);
  
  if (Res)
    for (Amount = 0; !IsStopped() && OrderDeleteAsync(TicketPending); Amount++)
      ;
      
  return(Res);
}

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL))
    {
      int Amount = 0;
      
      if (GetMaxAsync(OrderTicket(), Amount))
        Alert((string)Amount + " - " + MT4ORDERS::LastTradeResult.comment);
                
      break;
    }
}
 
// Список изменений:
// 20.08.2020
//   Fix: Учет выявленных особенностей частичного исполнения ордеров.

Это не было просто. Только одна из особенностей.

ЗЫ Больше четырех лет с момента публикации библиотеки прошло. И до сих пор вынужденно дорабатывается. Не простой MT5.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2020.08.02
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

Интересный вариант популяризации MT5 на форумах.

Выкладывается mq4 мультивалютный советник, ставится на демо и мониторится. Ведется ветка. Народ обсуждает.

Выкладывается mq5-вариант через подключение конвертационных библиотек. Народ вынужденно (мультивалютник) запускает MT5-Тестер по реальным тикам и залипает. Заодно осознавая, что под MT5 писать также легко, как под четверку.

 
fxsaber:

Интересный вариант популяризации MT5 на форумах.

Выкладывается mq4 мультивалютный советник, ставится на демо и мониторится. Ведется ветка. Народ обсуждает.

Выкладывается mq5-вариант через подключение конвертационных библиотек. Народ вынужденно (мультивалютник) запускает MT5-Тестер по реальным тикам и залипает. Заодно осознавая, что под MT5 писать также легко, как под четверку.

Да, и тестер мт5 в несколько десятков раз превосходит по информативности и качеству тестирования.

Спасибо вам за библиотеку!

 
fxsaber:

Выкладывается mq4 мультивалютный советник, ставится на демо и мониторится. Ведется ветка. Народ обсуждает.

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

fxsaber:

 Народ вынужденно (мультивалютник) запускает MT5-Тестер по реальным тикам и залипает. Заодно осознавая, что под MT5 писать также легко, как под четверку.

гордость МК не позволяет принят адекватное решение, Вы в одного сделали работу которая позволяет писать торговые стратегии на МТ5 без необходимости тратить время на изучение ордерной системы МТ5, но увы " потрясывание скилами полу-программистов " на этом форуме имеет больший приоритет чем разработка и тестирование торговых стратегий, имхо

 
Igor Makanu:

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

гордость МК не позволяет принят адекватное решение, Вы в одного сделали работу которая позволяет писать торговые стратегии на МТ5 без необходимости тратить время на изучение ордерной системы МТ5, но увы " потрясывание скилами полу-программистов " на этом форуме имеет больший приоритет чем разработка и тестирование торговых стратегий, имхо

Какая связь?

 
Vitaly Muzichenko:

Какая связь?

в лаконичности и простоте ордерной системы 4-ки - это позволяет писать стратегии "на лету" не отвлекаясь на решение элементарных действий с ордерами

если хотите можете попрактиковаться на ордерной системе МТ5 выполнить простые действия с ордерами:


Igor Makanu:

как используя запомненный тикет 

узнать:

1. закрыта ли позиция?

2. какой тип сделки был у закрытой позиции?

3. нужна одновременная работа с 9-ю ордерами

в топике "вопросы от начинающих МТ5" я задавал это вопрос, ответы в стиле - "зачем Вам это нужно?", решение в ордерной системе МТ5 смог только один человек написать - автор этого топика ;)

 
Igor Makanu:

в лаконичности и простоте ордерной системы 4-ки - это позволяет писать стратегии "на лету" не отвлекаясь на решение элементарных действий с ордерами

если хотите можете попрактиковаться на ордерной системе МТ5 выполнить простые действия с ордерами:


в топике "вопросы от начинающих МТ5" я задавал это вопрос, ответы в стиле - "зачем Вам это нужно?", решение в ордерной системе МТ5 смог только один человек написать - автор этого топика ;)

Если есть заготовка на чистом mql5, тогда разницы на чём писать - нет, просто подставлять сигналы под разные ТС в пару строк кода.

Другой вопрос, что это не кроссплатформенный код и вся писаница не имеет смысла.

 
Vitaly Muzichenko:

Другой вопрос, что это не кроссплатформенный код и вся писаница не имеет смысла.

я как раз и не вижу смысла в кросплатформенном коде - времени на написание и поддержку занимает прилично, но проще исполнять ТС в виртуальном торговле и переносить копировщиком хоть на 4-ку хоть на 5-ку

ЗЫ: оффтоп, но тут напишу, имхо поиск ТС которая будет работать один в один как в тестере, так и на реале - утопия, которая не позволяет оценить робастость ТС, все дальнейшие апгрейды для извлечения прибыли на реале ТС будут приводить к невозможности оценить саму ТС, а без оценки эффективности ТС "в будущем" (после тестирования на исторических данных) невозможно принять решение о том, что ТС уже не работает и требуется поиск другой ТС

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