Новый клиентский терминал MetaTrader 4 build 196

 
Выпущен новый клиентский терминал MetaTrader 4 build 196.

Что исправлено и добавлено:

1. Тестер: добавлена визуализация процесса тестирования.

2. Тестер: при тестировании эксперта применяется шаблон ’имя_эксперта’.tpl. Если такой шаблон не найден, то применяется tester.tpl

3. Тестер: улучшена отрисовка графика баланса.

4. Тестер: добавлен режим переоткрытия позиций.

5. Тестер: теперь работает со всеми историческими данными, не лимитированными количеством баров на графике.

6. Тестер: поправлены расчёты свопов.

7. Тестер: отложенные ордера исполняются без проскальзывания.

8. Тестер: изменено управление визуализацией — добавлен ползунок регулировки скорости.

9. Тестер: при визуализации нажатие на F12 сразу же вызывает новую котировку даже в режиме паузы.

10. Тестер: отображение уровней трейдов (при включённой опции) в процессе визуализации.

11. Тестер: удаление объектов из тестового графика при повторном запуске тестирования, если отсутствует тестовый шаблон.

12. Тестер: поправлена функция WindowsTotal, при тестировании она теперь возвращает правильный результат.

13. Тестер: Исправлена проверка времени истечения отложенного ордера.

14. Тестер: добавлено освобождение памяти при закрытии окна тестера.

15. Тестер: изменен порядок инициализации эксперта при тестировании. Теперь инициализация выполняется либо с 100-го бара, либо с даты старта эксперта, в случае определения границ дат тестирования.

16. Исправлено вертикальное позиционирование при перемещении графика с зафиксированным масштабом.

17. Исправлено позиционирование курсора при маленьких масштабах графика.

18. После вызова команды «Предварительный просмотр» порядок окон при включённой панели переключения графика не изменяется.

19. Добавлен новый метод расчета маржевых требований CFDLEVERAGE.

20. Добавлено упорядочивание окон при первом запуске терминала после инсталляции.

21. Добавлено досрочное прерывание просмотра свойств объектов из диалога «Список объектов».

22. Исправлена ошибка деинициализация экспертов после перекомпиляции.

23. Исправлена подкачка истории при изменении/удалении/добавлении баров в архиве котировок.

24. Исправлено отображение графика баланса в детальном отчёте при выводе истории, ограниченной по верхней дате.

25. Поправлено позиционирование курсора на графике при крупных масштабах.

26. При неудаче первоначального распределения массива выводится сообщение в лог.

27. MQL4: исправлена ошибка передачи в функцию некоторых строковых параметров.

28. MQL4: поправлена выдача нулевого спрэда функцией MarketInfo().

29. MQL4: проверка наличия параметра функции при компиляции.

30. MQL4: ограничение первоначального распределения массива увеличено до 100 млн элементов.

31. MetaEditor: добавлены описания 142, 143 и 144 ошибок исполнения торговых операций.

32. MetaEditor: при сохранении файла из имени файла не вырезаем расширение.

33. MetaEditor: поправлены описания в Словаре.

34. Добавлен контекстный поиск в справке клиентского терминала.

35. Добавлен код ошибки 148 — «слишком много открытых ордеров».

36. Добавлены отсутствующие описания ошибок вместо [unknown error].

37. При выставлении объекта-стрелки при нажатии клавиши Shift или Ctrl режим выставления стрелки не сбрасывается.

38. Улучшена работа с памятью. Эксперты теперь не перевыделяют мелкие куски памяти.

39. Улучшено управление памятью при подкачке данных.

Терминал можно скачать по ссылке "торговый терминал MetaTrader 4"
Обновление клиентского терминала также доступно через службу LiveUpdate.
 
Нашел следующий баг. Он присутвовал и раньше (в 195 билде точно).
Если навести курсор на отложенный ордер, то показывается всплывающая подсказка о Magic Number и комментарии. Однако показывается не верно, а со сдвигом на 1 ордер.
Т.е. выглядит это следующим образом:
1. Рыночный ордер 1 - подсказка верная
2. Рыночный ордер 2 - подсказка верная
3. Строка информации о балансе, ... - подсказка об отложенном ордере 1
4. Отложенный ордер 1 - подсказка об отложенном ордере 2
5. Отложенный ордер 2 - подсказка об отложенном ордере 3
6. Отложенный ордер 3 - подсказки нет совсем.
Т.е. подсказки об отложенных ордерах надо сдвинуть на 1 вниз.
 
кстати о глюках... коряво работает поиск в метаэдиторе, если попытаться найти строку из 1 символа.
естественно, и поиск с заменой заменяет не только то, что нужно :)
 
Norfolc, спасибо. Поправили. В ближайшее время выложим обновлённый билд.
 
Norfolc, спасибо. Поправили. В ближайшее время выложим обновлённый билд.

Спасибо большое. Есть ещё пожелание по поводу этих подсказок.
Можно ли их выводить не только тогда, когда у ордера есть MagicNumber, а и тогда, когда его нет (то же самое касается комментария) не зависимо от того, отображается коментарий или нет.
Это упростило бы работу с ордерами.
Например: есть ордера с выставленным MagicNumber, а есть без него. Я последовательно просматриваю эти ордера на наличие MagicNumber. И когда мне попадается ордер с MagicNumber= 0, то подсказка не возникает и мне приходиться дольше ждать её появления (пока я не пойму, что MagicNumber=0). Если бы в этом случае выводился MagicNumber, то весь этот процесс проходил бы быстрее. Идеальным решением было бы введение дополнительной опциональной колонки с MagicNumber.
 
Norfolc, спасибо. Поправили. В ближайшее время выложим обновлённый билд.

Спасибо большое. Есть ещё пожелание по поводу этих подсказок.
Можно ли их выводить не только тогда, когда у ордера есть MagicNumber, а и тогда, когда его нет (то же самое касается комментария) не зависимо от того, отображается коментарий или нет.
Это упростило бы работу с ордерами.
Например: есть ордера с выставленным MagicNumber, а есть без него. Я последовательно просматриваю эти ордера на наличие MagicNumber. И когда мне попадается ордер с MagicNumber= 0, то подсказка не возникает и мне приходиться дольше ждать её появления (пока я не пойму, что MagicNumber=0). Если бы в этом случае выводился MagicNumber, то весь этот процесс проходил бы быстрее. Идеальным решением было бы введение дополнительной опциональной колонки с MagicNumber.

Soglasen s Norfolc. Bilo bi zdorovo.
 
7. Тестер: отложенные ордера исполняются без проскальзывания.

А такая ситуация:
Есть 2 ордера GPBUSD, спред = 4:
1. Рыночный SELL с Stop Loss стоит на уровне 1,8984 (считается цена ASK для закрытия).
2. Отложенный SELL LIMIT с ценой 1,8980 (считается цена BID для открытия).
Текущая цена BID < 1,8980.
Они должны сработать одновременно при достижении ценой BID уровня 1,8980.
Однако при наступлении этого тика в тестере возникает следующая ситуация:
1. Рыночный ордер остаётся открытым
2. Отложенный ордер сработал.
Т.е. у меня получается 2 рыночных ордера, а должен быть 1.
Причём это возникает не всегда, а время-от-времени...
Это проскальзывание или нет? Если до, то тогда указанный выше баг не исправлен.
Если это ошибка тестера (неприятная), то с этим можно ещё смириться (а лучше исправить:)).
А как обстоят с этой ситуацией дела на реальном счёте? ДЦ заверяет, что проскальзываний у них нет.
 
7. Тестер: отложенные ордера исполняются без проскальзывания.

А такая ситуация:
Есть 2 ордера GPBUSD, спред = 4:
1. Рыночный SELL с Stop Loss стоит на уровне 1,8984 (считается цена ASK для закрытия).
2. Отложенный SELL LIMIT с ценой 1,8980 (считается цена BID для открытия).
Текущая цена BID < 1,8980.
Они должны сработать одновременно при достижении ценой BID уровня 1,8980.
Однако при наступлении этого тика в тестере возникает следующая ситуация:
1. Рыночный ордер остаётся открытым
2. Отложенный ордер сработал.
Т.е. у меня получается 2 рыночных ордера, а должен быть 1.
Причём это возникает не всегда, а время-от-времени...
Это проскальзывание или нет? Если до, то тогда указанный выше баг не исправлен.
Если это ошибка тестера (неприятная), то с этим можно ещё смириться (а лучше исправить:)).
А как обстоят с этой ситуацией дела на реальном счёте? ДЦ заверяет, что проскальзываний у них нет.

Мы у себя проверим, но при Bid < 1,8980 и (важно) Ask<1.8984 оба ордера должны гарантированно сработать. Вы абсолютно уверены, что цены именно такие и оба ордера не открываются вместе? Необходима абсолютно точная уверенность, подкрепленная доказательствами в виде логов и тд.
 
[skipped]
Мы у себя проверим, но при Bid < 1,8980 и (важно) Ask<1.8984 оба ордера должны гарантированно сработать. Вы абсолютно уверены, что цены именно такие и оба ордера не открываются вместе? Необходима абсолютно точная уверенность, подкрепленная доказательствами в виде логов и тд.

Или я не так понял Вас или Вы ошиблись, но в данной ситуации для срабатывания ордеров необходимо выполнение условия Bid>=1.8980 и Ask>=1.8984 (Ask = Bid + 4, спред у ДЦ постоянный).

Вот кусок лога тестера:
18:57:41 2006.08.29 01:44 MyExpert GBPUSD,M1: open #21 sell limit 0.20 GBPUSD at 1.8964 sl: 1.8984 tp: 1.8944 ok
18:57:49 2006.08.29 03:29 Tester: order #21, sell 0.20 GBPUSD is opened at 1.8964
18:57:49 2006.08.29 03:29 MyExpert GBPUSD,M1: open #23 sell limit 0.40 GBPUSD at 1.8980 sl: 1.9000 tp: 1.8960 ok
18:57:50 2006.08.29 06:09 Tester: order #23, sell 0.40 GBPUSD is opened at 1.8980
18:57:50 2006.08.29 06:09 MyExpert GBPUSD,M1: close #21 sell 0.20 GBPUSD at 1.8964 sl: 1.8984 tp: 1.8944 at price 1.8984

Тут видно, что создаётся ордер номер 21 с sl=1.8984 (это цена Ask). Он срабатывает. Затем открывается ордер 23 c ценой = 1.8980 (это цена Bid). Т.е. ордеры 21 и 23 должны сработать одновременно (21 на закрытие, а 23 на открытие).
Однако в 06:09 срабатывет только ордер 23. 21-й ордер остаётся открытым и я его закрываю "вручную" экспертом.
Это закрытие "вручную" было сделано как раз из-за такого поведения тестера (неизвестно как на реале это будет происходить).
В данном случае ещё повезло, я закрыл ордер по нужно цене - на уровне sl. Однако бывают случаи, что ордер закрывается по другой (не в мою пользу) цене. Например:
21:37:41 2006.06.23 14:53 MyExpert GBPUSD,M1: open #16 buy limit 0.80 GBPUSD at 1.8165 sl: 1.8145 tp: 1.8185 ok
21:37:41 2006.06.23 15:16 Tester: order #16, buy 0.80 GBPUSD is opened at 1.8165
21:37:41 2006.06.23 15:16 MyExpert GBPUSD,M1: open #20 buy limit 0.60 GBPUSD at 1.8149 sl: 1.8129 tp: 1.8169 ok
21:37:41 2006.06.23 15:48 Tester: order #20, buy 0.60 GBPUSD is opened at 1.8149
21:37:41 2006.06.23 15:48 MyExpert GBPUSD,M1: close #16 buy 0.80 GBPUSD at 1.8165 sl: 1.8145 tp: 1.8185 at price 1.8141

Сейчас это мне удалось воспроизвести, если установить метод тестирования по ценам открытия. Однако такое бывает и при потиковом тестировании.
 
Я бы порекомендовал добавить в функцию start() вывод текущих цен Print("Bid: ",Bid, " Ask: ",Ask) и прогнать эксперта еще раз чтобы абсолютно точно знать рыночные цены.

Сейчас это мне удалось воспроизвести, если установить метод тестирования по ценам открытия.

Вот тут как раз нужно смотреть - какие реально были цены. По ценам открытия - это очень грубый метод проверки, цены меняются огромными скачками и все срабатывания приходятся гепы.
 
Я бы порекомендовал добавить в функцию start() вывод текущих цен Print("Bid: ",Bid, " Ask: ",Ask) и прогнать эксперта еще раз чтобы абсолютно точно знать рыночные цены.

Вот лог, приведённый выше с указанием котировок:
22:36:30 2006.08.29 01:44 MyExpert GBPUSD,M1: Bid: 1.8948 Ask: 1.8952
22:36:30 2006.08.29 01:44 MyExpert GBPUSD,M1: open #21 sell limit 0.20 GBPUSD at 1.8964 sl: 1.8984 tp: 1.8944 ok
22:36:30 2006.08.29 03:29 MyExpert GBPUSD,M1: Bid: 1.8961 Ask: 1.8965
22:36:30 2006.08.29 03:29 Tester: order #21, sell 0.20 GBPUSD is opened at 1.8964
22:36:30 2006.08.29 03:29 MyExpert GBPUSD,M1: Bid: 1.8964 Ask: 1.8968
22:36:30 2006.08.29 03:29 MyExpert GBPUSD,M1: open #23 sell limit 0.40 GBPUSD at 1.8980 sl: 1.9000 tp: 1.8960 ok
22:36:30 2006.08.29 06:07 MyExpert GBPUSD,M1: Bid: 1.8976 Ask: 1.8980
22:36:30 2006.08.29 06:09 Tester: order #23, sell 0.40 GBPUSD is opened at 1.8980
22:36:30 2006.08.29 06:09 MyExpert GBPUSD,M1: Bid: 1.8980 Ask: 1.8984
22:36:30 2006.08.29 06:09 MyExpert GBPUSD,M1: close #21 sell 0.20 GBPUSD at 1.8964 sl: 1.8984 tp: 1.8944 at price 1.8984

Кстати, такое случается и когда цена закрытия рыночного ордера (tp BUY) совпадает с ценой открытия отложенного ордера (open price SELL_LIMIT).

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

А разве в этом случе отложенный ордер не должен сработать по указанной цене? Ведь sell/buy limit/stop, take profit и stop loss по сути все являются отложенными ордерами, которые обязаны исполниться по указанной в них цене.
Причина обращения: