Ошибки, баги, вопросы - страница 3631

 
Slava #:

Проверьте шаблон, который используется при визуальном тестировании. Чаще всего это tester.tpl

Похоже, лишние стрелочки - именно оттуда

Ок, помогло, СПАСИБО!!!

А то, я уж измучился, ищу ошибки в своей программе.

 
Vladislav Boyko #:

Та ну, если линия дырявая, то это уже не линия. На такое нельзя сверху МА накидывать. Даже если бы значения МА для каждого бара отдельно вычислялись (как вы хотите), то все равно на расстоянии period баров от дырки значения МА были бы мусорные, грубо говоря (и то, при условии, что это не EMA). Куда такое годится?

Это нормально. Реальные данные не обязаны быть идеальными. Ровно как и вообще быть (выкол/прогал в данных - это естественно)

По вашему получается вообще ппц:

- пользователь по тем данным которые объективно видит,

- на основе эталонной,каноничной формулы SMA=сумма_величин_в_окне/размер_окна

- с калькулятором посчитает SMA

- видит катастрофическую разницу между своим рассчётом и результатом терминала (а терминал может отдать как inf так и просто большое число)

после такого пользователь резко меняет терминал. (есть опции "бьётся в истерике", "ползёт в психушку", "подаёт в суд")

сильно повезёт если это действие он проведёт не после серии реальных сделок роботом по SMA. 

PS/ с EMA кстати ещё хуже - она после EMPTY_VALUE может успеть почти сойтись. То есть её значения будут не громадной величины, а просто "от болды" и проверить на корректность невозможно.

PPS/ многие ли разработчики ожидают что iMA может вернуть мусор ? подозреваю что два с половиной человека на весь форум.. 

 
fxsaber #:

Как в функции определить, что она вызвана из ex5-библиотеки (#property library + #import) или напрямую (исходник включен)?

Или есть способ узнать, что код компилируется в EX5-библиотеку, а не в EX5-программу?

Через макросы. В разделе про библиотеки в конце есть пример прямого включения исходника библиотеки (в частности, для отладки, см. #define LIB_HOUGH_IMPL_DEBUG) в отличие от штатного способа компиляции в отдельный ex5-файл.

 
Stanislav Korotky #:

Через макросы. В разделе про библиотеки в конце есть пример прямого включения исходника библиотеки (в частности, для отладки, см. #define LIB_HOUGH_IMPL_DEBUG) в отличие от штатного способа компиляции в отдельный ex5-файл.

В моем случае это совсем не прокатит, к сожалению.

 
fxsaber #:

В моем случае это совсем не прокатит, к сожалению.

В чем специфика? Что мешает сделать именно так?

ЗЫ. Для заявленной задачи "Мне надо как-то из MT4Orders суметь сообщить, что MT4Orders встроена в советник в виде mqh или ex5. Не смог придумать, как это сделать." подходит.

 
Stanislav Korotky #:

В чем специфика? Что мешает сделать именно так?

ЗЫ. Для заявленной задачи "Мне надо как-то из MT4Orders суметь сообщить, что MT4Orders встроена в советник в виде mqh или ex5. Не смог придумать, как это сделать." подходит.

MT4Orders.ex5 делается так.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2025.03.26 11:16

Нужно только один раз создать файл MQL5\Libraries\MT4Orders.mq5 из двух строк и  скомпилировать его.

#property library

// #define MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в мкс.) на ожидание синхронизации торгового окружения
// #define MT4ORDERS_AUTO_VALIDATION // Торговые приказы отправляются только в случае успешной проверки на корректность
// #define MT4ORDERS_ORDERS_SORT // Формирование сортированной по времени закрытия/удаления истории MT4-ордеров.
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Т.е. это делает пользователь на свое усмотрение. И он может никакие макросы не прописывать во время компиляции библиотеки.


По логике, должен быть механизм, который позволил бы, например, проверить наличие #property library. К сожалению, не нашел.

 
fxsaber #:

MT4Orders.ex5 делается так.

Т.е. это делает пользователь на свое усмотрение. И он может никакие макросы не прописывать во время компиляции библиотеки.

По логике, должен быть механизм, который позволил бы, например, проверить наличие #property library. К сожалению, не нашел.

С точки зрения разработчика исходный код может быть откомпилирован а) в ex5-библиотеку, б) напрямую в ex5-программу. Хотя MQL5 действительно не позволяет программно прочитать #property library, но применение макроопределения для логической развилки двух вариантов компиляций - это стандартный способ для последующего различения a) от б) внутри алгоритма на стадии выполнения.

Да, это требует дополнительно к строке #property library добавить строку с #define. Не вижу сложности для пользователя сделать это по своему усмотрению.

Если заголовочный файл унифицирован, но разработчику все равно нужно обложить компиляцию условными директивами в зависимости от #define, потому что нужно переключаться между #import-ом и #include.

 
Stanislav Korotky #:

Да, это требует дополнительно к строке #property library добавить строку с #define. Не вижу сложности для пользователя сделать это по своему усмотрению.

Если заголовочный файл унифицирован, но разработчику все равно нужно обложить компиляцию условными директивами в зависимости от #define, потому что нужно переключаться между #import-ом и #include.

К сожалению, прописывание этого макроса не гарантировано.

 
fxsaber #:

К сожалению, прописывание этого макроса не гарантировано.

Не понял, где гарантия для директивы #property library, отличающая её от #define. Выше приведена заготовка MT4Orders.mq5 для сборки библиотеки. Человек её может отредактировать как в сторону "улучшения", так и "ухудшения" компиляции. Почему заготовка не может содержать #define? Почему пользователь не способен удалить #property library и сломать компиляцию?

 
2025.04.05 12:42:40.652 Core 1 agent process started on 127.0.0.1:3000
2025.04.05 12:42:40.652 Core 1 connecting to 127.0.0.1:3000
2025.04.05 12:43:11.920 Core 1 tester agent authorization error
2025.04.05 12:43:11.920 Core 1 connection closed


Что делать?