Выпущена бета-версия MetaTrader 4 Build 582 с обновленным языком MQL4 и Маркетом приложений - страница 38

 
stringo:

Пример SimpleDialog работает точно так же, как и в пятёрке. Использует класс CAppDialog

Фигасе! Еле нашёл, он оказывается в индикаторах спрятался, во вложенной папке. А я всё примеры советников мониторил. Спасибо за наводку. Кстати называтся немного по другому - SimplePanel.mq4

Все контролы работают. Мы даже несколько примеров опубликовали в кодобазе https://www.mql5.com/ru/code/11075 и https://www.mql5.com/ru/code/11072. И ещё один ответ на импортном форуме про комбо-бокс

Вот ещё пример, который работает и как эксперт, и как индикатор (при соответствующем оформлении)

А вот и совершенно аналогичный приаттаченный индикатор (найдите 2 отличия в кодах)

Ага, этот пример тоже запустился. Буду осваиваться.

В качестве пожелания: было б хорошо чтоб была переносимость подобного кода с четвёрки на пятёрку и обратно. Точнее чтоб можно было писать универсальный кроссплатформенный код. Впрочем пожелание скорее всего излишнее, вы наверняка имеете то же мнение. Надеюсь вскоре так и будет.

Спасибо за ваши усилия и внимание к просьбе.
 

Терминал продолжает падать. Не знаю почему. Возможно из-за одного из моих индикаторов (хотя 509 пашет без проблем со всеми теми же индикаторами). Но вот такая вот картинка появилась впервые. Кто нибудь может объяснить что это за чудо?

Далее, после падения терминала параметры индикатора исчезают.

В это самое время код индикатора выглядит так.

Это что ж получается, каждый раз когда нестабильность МТ приводит к зависанию и падению, мне кроме того что о позициях беспокоиться еще и индикаторы заново применять на графики?

 

Куда тему-то скандальную грохнули? Темы нет, а пост есть. Пишу сюда.

Добавлю свои "5 копеек" в общую копилку. На форуме не часто, потому как больше занят своими разработками, а не флудом.

Я тоже однажды поднимал вопрос в ветке бета-тестирования о том что терминал должен спрашивать разрешения на обновление. https://www.mql5.com/ru/forum/147679/page72#871393

Однако, был не правильно понят и моё возмущение было осмеяно. Хотя вопрос этот до сих пор актуален!

Так же присоединяюсь к просьбе сделать полноценный API. Это дало бы потрясающие возможности интеграции и разработки. ATR про это уже красочно написал )

Лично для меня (как и для тысяч других трейдеров-разработчиков) на сегодняшний день важно чтобы в МТ4 появилась многопоточная оптимизация, чтобы можно было бы загрузить все ядра процессора, а не только одно!

Это же вообще каменный век какой-то! Сейчас 4, 6, 8 ядерные процессоры, а толку от них в МТ4 никакого!

Да МТ5 хорош! Агенты тестирования на каждом ядре, сетевые агенты, облако. Супер! Но он мне нахрен не нужен, т.к. неттинг не совместим с моей торговой системой! И сколько таких как я?!

Сейчас, для того чтобы загрузить все ядра своего компьютера и других тестировочных серверов, я разработал систему работающую с MS SQL-сервером. Но насколько было бы проще если бы МТ4 мог использовать многоядерные процессоры.

Я считаю, что метаквоты не делают этот функционал специально, чтобы склонить разработчиков к использованию МТ5. Ну хорошо, но сделайте вы тогда тот же МТ5, но без неттинга, а с такой же торговой моделью как МТ4! Все только спасибо скажут!

Метаквоты говорят, что в МТ4 невозможно сделать многопоточное тестирование, т.к. есть ограничения архитектуры. Понимаю, вполне возможно. Но вы разработчики или кто?

МТ5 же смогли сотворить. Сделайте тестер в виде отдельного класса "CTesterMT4" и запускайте столько его экземпляров сколько ядер CPU ))))

 
pro_:

Терминал продолжает падать. Не знаю почему. Возможно из-за одного из моих индикаторов (хотя 509 пашет без проблем со всеми теми же индикаторами). Но вот такая вот картинка появилась впервые. Кто нибудь может объяснить что это за чудо?

Далее, после падения терминала параметры индикатора исчезают.

В это самое время код индикатора выглядит так.

Это что ж получается, каждый раз когда нестабильность МТ приводит к зависанию и падению, мне кроме того что о позициях беспокоиться еще и индикаторы заново применять на графики?

Приложите проблемный индикатор, пожалуйста.
 
Вышел 578 билд с поправками.
 
stringo:

Вы это компилировали с наличием #property strict или без него?

И почему вы не сказали, что это за сообщения - обычные ворнинги, указывающие на возможную проблему, или ошибки, из-за которых невозможно получить исполняемый ex4-файл?

Конечно, без strict. Это ошибки, а не предупреждения. Написал выше, что должно соответствовать более строгому компилятору. Иначе, не понятно зачем всё это?

stringo:

ретурн без скобок (то есть отсутствует какое-либо возвращаемое выражение).

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

Также, void используется для передачи в функцию любого типа (указателя неопределённого типа, что тоже самое). Потому странно, на мой взгляд, возвращать любой тип из функции, когда все типы можно в неё передать, но не все вернуть.

void особый тип. Надо оговаривать.

 
Renat:
Приложите проблемный индикатор, пожалуйста.


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

билд 577

1 не убрали тормоза открытия первого ордера походу

2. вопрос в лог журнала записи идут на сколько с запаздыванием? и время в логе события в терминале или время записи в лог?

 
olyakish:

билд 577

1 не убрали тормоза открытия первого ордера походу

2. вопрос в лог журнала записи идут на сколько с запаздыванием? и время в логе события в терминале или время записи в лог?

1. Новый режим без переоткрытия соединения работает только с новыми серверами. Попробуйте на MetaQuotes-Demo. Для старых серверов поддерживается старый режим для совместимости.

2. Время в логах точное на момент событий. Отображение логов в окне работает в режиме ленивого обновления.

 

Пропал запрос на модификацию

В логе эксперта есть запись на попытку модификации, в логе терминала нет

вот часть эксперта

Print (sec,"Отправляем запрос");
last_mod_sec=sec;
lastGetTickCount=GetTickCount();
OrderModify(OrderTicket(),Bid+500*Point*mult+(50+MathRand()/100.0)*Point,0.0,0.0,0,CLR_NONE);
result=GetTickCount();
int getlasterr=GetLastError();
Print ("(",result-lastGetTickCount,")Ошибка=",ErrorDescription(getlasterr), " OrderTicket=",OrderTicket()," ",sec,"После отправки запроса время выполнени=",result-lastGetTickCount);
                                             comm="Time="+(result-lastGetTickCount)+"\n"+"Err="+getlasterr+"\n"+ErrorDescription(getlasterr);

                                             

Вот лог эксперта

23:43:15 refresh_2_01 GBPUSD,H1: 15Отправляем запрос
23:43:15 refresh_2_01 GBPUSD,H1: modify #221407418 sell limit 0.01 GBPUSD at 1.71072 sl: 0.00000 tp: 0.00000 ok
23:43:15 refresh_2_01 GBPUSD,H1: (608)Ошибка=no error OrderTicket=221407418 15После отправки запроса время выполнени=608
23:43:30 refresh_2_01 GBPUSD,H1: 30Отправляем запрос
23:43:30 refresh_2_01 GBPUSD,H1: (0)Ошибка=no error OrderTicket=221407418 30После отправки запроса время выполнени=0
23:43:50 refresh_2_01 GBPUSD,H1: 50Отправляем запрос
23:43:51 refresh_2_01 GBPUSD,H1: modify #221407418 sell limit 0.01 GBPUSD at 1.70936 sl: 0.00000 tp: 0.00000 ok
23:43:51 refresh_2_01 GBPUSD,H1: (1217)Ошибка=no error OrderTicket=221407418 50После отправки запроса время выполнени=1217

а вот лог терминала

23:43:15.275 '6790864': modify pending order #221407418 sell limit 0.01 GBPUSD at 1.71065 sl: 0.00000 tp: 0.00000 -> price: 1.71072 sl: 0.00000 tp: 0.00000
23:43:15.353 '6790864': request was accepted by server
23:43:15.447 '6790864': request in process
23:43:15.853 '6790864': pending order #221407418 sell limit 0.01 GBPUSD was modified -> price: 1.71072 sl: 0.00000 tp: 0.00000
23:43:50.843 '6790864': modify pending order #221407418 sell limit 0.01 GBPUSD at 1.71072 sl: 0.00000 tp: 0.00000 -> price: 1.70936 sl: 0.00000 tp: 0.00000
23:43:50.921 '6790864': request was accepted by server
23:43:51.015 '6790864': request in process
23:43:51.499 '6790864': pending order #221407418 sell limit 0.01 GBPUSD was modified -> price: 1.70936 sl: 0.00000 tp: 0.00000

По логу эксперта видно что была попытка модифицировать отложку в 23,43,30 а по логу терминала этой записи нет да и время затраченное на модификацию меньше дискретности счетчика GetTickCount

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