Новая версия платформы MetaTrader 5 build 2615: Фундаментальный анализ и комплексный критерий в тестере стратегий - страница 5

 
Vladimir Karputov:

В property нужно указывать точно такое-же имя, как в iCustom

Пример: MA on CCI EA


Ok, that's it - thanks, I used the example from the MQL5 reference:

Ну вот и все - спасибо, я ориентировался на пример из ссылки на MQL5:

While in iCustom again this for is used: / В то время как в iCustom опять это используется:

and: и:


Additionally is there a little typo in the error message tester_inidicator:
Кроме того, в сообщении об ошибке  tester_inidicator есть небольшая опечатка:

property tester_inidicator "myIndicator" has been implicitly added during compilation because the indicator is used in iCustom function ...

 
Fast235:

у всех МТ Всегда подключается к нижнему серверу, худшему по пингу?

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

Нет, у меня норм.

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

 
Renat Fatkhullin:
Опубликуйте полную строку железа из терминала.

На скриншоте MetaTrader.png есть все сообщения терминала при загрузке, включая данные о компьютере.

Если это не то, то объясните что такое "полная строка железа из терминала".

У меня стоит IE8, но терминал требует IE9. 

До сих пор это никак не мешало, но может быть для 2605 это существенно и в этом причина ?

 
Yurixx:

На скриншоте MetaTrader.png есть все сообщения терминала при загрузке, включая данные о компьютере.

Если это не то, то объясните что такое "полная строка железа из терминала".

У меня стоит IE8, но терминал требует IE9. 

До сих пор это никак не мешало, но может быть для 2605 это существенно и в этом причина ?

Что мешает выложить скриншоты и логи нормальным образом? Вероятность того, что кто-то скачает ZIP-файл, распакует его  и посмотрит содержимое,  стремится к нулю.

Я посмотрел две картинки - игра "найдите 10 отличий". Никто этим заниматься не будет


 
Fast235:

у всех МТ Всегда подключается к нижнему серверу, худшему по пингу?

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

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

Зачастую брокерам надо в популярных локациях ставить по 2-3 точки, чтобы повысить качество обслуживания.
 
Rashid Umarov:

Что мешает выложить скриншоты и логи нормальным образом? Вероятность того, что кто-то скачает ZIP-файл, распакует его  и посмотрит содержимое  стремится к нулю.

Я посмотрел две картинки - игра "найдите 10 отличий". Никто эти заниматься не будет


Там даже Windows 7 без SP1 (билд 7600 вместо 7601). Это означает что вообще ни одного апдейта не стоит.

Вопрос: на что надеется человек? Вот реально.
 
Если время модификации позиции совпадает со временем закрытия (например, по тейку), то в лог Терминала выдается следующее сообщение.
2020.09.15 10:32:44.800 Trades  '': failed modify #0 buy 0  sl: 0.000, tp: 0.000 -> sl: 0.000, tp: 77.344 [Position doesn't exist]

При этом сам торговый запрос выглядит так.

2020.09.15 10:32:44.800 Request.action = TRADE_ACTION_SLTP (6)
2020.09.15 10:32:44.800 Request.magic = 0
2020.09.15 10:32:44.800 Request.order = 0
2020.09.15 10:32:44.800 Request.symbol = AUDJPY
2020.09.15 10:32:44.800 Request.volume = 0.0
2020.09.15 10:32:44.800 Request.price = 0.0
2020.09.15 10:32:44.800 Request.stoplimit = 0.0
2020.09.15 10:32:44.800 Request.sl = 0.0
2020.09.15 10:32:44.800 Request.tp = 77.34399999999999
2020.09.15 10:32:44.800 Request.deviation = 0
2020.09.15 10:32:44.800 Request.type = ORDER_TYPE_BUY (0)
2020.09.15 10:32:44.800 Request.type_filling = ORDER_FILLING_FOK (0)
2020.09.15 10:32:44.800 Request.type_time = ORDER_TIME_GTC (0)
2020.09.15 10:32:44.800 Request.expiration = 1970.01.01 00:00:00
2020.09.15 10:32:44.800 Request.comment = 
2020.09.15 10:32:44.800 Request.position = 1272046
2020.09.15 10:32:44.800 Request.position_by = 0
2020.09.15 10:32:44.800 Result.retcode = 10036


Желтым выделил несоответствие. В торговом запросе указан номер позиции, а в логе Терминала - нет, т.к. позиция после отправки приказа на модификацию закрылась. Отсюда складывается впечатление при прочтении лога, что будто был сформирован неправильный торговый приказ с нулевой позицией. Но это не так.


Просьба поправить: в лог Терминала выводить указанный номер позиции (даже если она закрылась) - из торгового приказа.

Строка для поиска: Uluchshenie 026.
 
Rashid Umarov:

Что мешает выложить скриншоты и логи нормальным образом? 


Вы зря раздражаетесь. Я просто не знаю, что для вас значит "нормальным образом". Пользуюсь возможностями МТ, а он не предоставляет средств обрезать ненужное.

 
Yurixx:

Вы зря раздражаетесь. Я просто не знаю, что для вас значит "нормальным образом". Пользуюсь возможностями МТ, а он не предоставляет средств обрезать ненужное.

Текст из лога и картинку можно вставить прямо в сообщение, а не прятать в архив. Это и есть "нормальным образом".

Попробуйте посмотреть на свои действия со стороны.

 
Renat Fatkhullin:

Покажите код, разберитесь с логгированием. Скорее всего неопределенное поведение или слабый код.


Я нашел по-видимому первое место, где начинаются ошибки.

В процедуре ZTPyramidCalc() на первом же операторе присвоения.

 kk0 = (int)MathRound(DMult*(Bd-ZT[it[0]][0]));

При 

Bd = 1.3209,
ZT[it[0]][0] = 1.3210,
DMult = 10000

результат получается 0, хотя должно быть -1. Это тиковый график, поэтому, как правило, здесь разница в цене между соседними барами равна 0.0001.

Эта ошибка повторяется многократно, пока, по непонятной причине, вычисляется правильно. Потом опять неправильно. И т.д.

Для графиков М1, а тем более Н1, эта ситуация с разницей в 1 пункт встречается редко.  А для тиковых графиков  - постоянно. Поэтому и кажется, что индикатор отрисовывает правильно на Н1.

По-моему ситуация похожа на ту, когда вещественное значение присваивается целой переменной. Дробная честь отсекается. А поскольку есть проблема точности представления, то это часто приводит к тому, что присвоение 1.0 целой переменной дает 0. Но в данном-то случае специально, чтобы избежать такого, используется функция MathRound().