Пожелания к MQL5 - страница 27

 
SK. писал (а):
Эпоха коллективных решений прошла, себя не оправдав. На переднем крае всегда находится очень небольшое количество людей, воодушевлённых собственными идеями. Вот они и определяют наши условия существования.

Тут смайлик снимающий шляпу /:-)

Проследив историю человечества, я вообще не припомню коллективных решений. Тут вы правы. Поэтому я и написал, что если разработчик ДЕЙСТВИТЕЛЬНО заинтересован...... Это и будет своеобразным показателем его заинтересованности, а не очередной сладкой пилюлей для поддержания самооценки пользователей.

 

Вопрос по текущей версии, и при одновременно пожелание к будущей.
В Тестере, при тестировании советника, использующего "индикаторы от индикаторов",
не хватает модельного времени на опрос данных индикаторов.
Например:
Индикаторы №1 и №1.1. получают данные от iMA()
Индикатор №2 построен на данных индикаторов 1 и 1.1.
Индикатор 3 выполняет квадратичные расчеты на данных индкатора 2
Советник опрашивает индкатор 3,
но
При тестировании советник данных не получает, (хотя прекрасно работает в торговом режиме).
Выглядит так, на прогоне советник может дать одну-две сделки правильно, после чего молчит
так как из индикатора приходит машинный ноль = 2147483647.
-переполняется какой то стек?
-при этом GetLastError()==0
-От скорости визуализации и моделирования бара не зависит.
- Если перенести индикаторы в советник, то тестирование становится возможным до некого предела временных затрат на расчеты в советнике.

1. Есть ли сейчас какие либо доступные настройки Тестера стратегий, что бы добавить время на опрос индикаторов?
2. Будет ли обнаруживаться в GetLastError() ошибка "индикатор не успел"/"советник не получил")). ?
Т.е. сейчас эту ошибку можно обнаружить только на индикаторах рисующих DRAW_LINE по возврату 2147483647

 
Korey:

Советник опрашивает индкатор 3,
но
При тестировании советник данных не получает, (хотя прекрасно работает в торговом режиме).
Выглядит так, на прогоне советник может дать одну-две сделки правильно, после чего молчит
так как из индикатора приходит машинный ноль = 2147483647.
-переполняется какой то стек?
-при этом GetLastError()==0

...


У Вас явные проблемы в индикаторе. Когда получите корректную версию индикатора, все вопросы о синхронности вычислений отпадут. Из-за того, что в индикаторе косяк, Вы думаете, что где-то чего-то не успевает рассчитываться, что есть некий "лист ожиданий на обсчет ндикатора". Это не так!
 
Rosh:
Korey:

Советник опрашивает индкатор 3,
но
При тестировании советник данных не получает, (хотя прекрасно работает в торговом режиме).
Выглядит так, на прогоне советник может дать одну-две сделки правильно, после чего молчит
так как из индикатора приходит машинный ноль = 2147483647.
-переполняется какой то стек?
-при этом GetLastError()==0

...


У Вас явные проблемы в индикаторе. Когда получите корректную версию индикатора, все вопросы о синхронности вычислений отпадут. Из-за того, что в индикаторе косяк, Вы думаете, что где-то чего-то не успевает рассчитываться, что есть некий "лист ожиданий на обсчет ндикатора". Это не так!


На Ваше замечание действительно нашел свой привычный вывих.
Расчетное число баров в индикаторe было ограничено max=1000 (привык экономить ресурсы)
При увеличении max до 3000 все заработало.
Т.е. косяк в том что расчетное число баров индикатора было всего 1000
Спасибо, ОГРОМНОЕ СПАСИБО, а то ведь я без качественного тестирования изворачивался больше года!!!

Однако, никак не могу объяснить логично почему так нельзя. -B тестере по другому работают индексные буферы?
Почему, если в советнике мне нужны бары 0,1,2 необходимо считать более чем 1000 баров индикатора??

 
В тестере все работает так, как и в онлайне, это специально было задумано. Тестер в терминале MetaTrader 4: Это необходимо знать
 

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

 
Rosh:
В тестере все работает так, как и в онлайне, это специально было задумано. Тестер в терминале MetaTrader 4: Это необходимо знать

Нарушение в логике индикатора относятся к одному единственному - "ошибочно" заданной глубине расчета <1024.
Поэтому:
1. Заранее не известно и непонятно, что при расчете индикатора на число значительно меньше BARS
линия индикатора может исчезнуть, как в торговле, так и в Тестере,
Поэтому стоит все таки внести дополнения в докуметацию, например,
"при расчете индиктора на числo баров меньше чем ....(1024?) устойчивая работа не гарантируется"
...Выложил я внутри форума индюк с ограничением рачета 1000 баров и вдруг обнаружил,
что при первом вызове, он иногда отказывается рисовать линию. Снимаем ограничение по глубине - все нормально.

2. Если возможен и очевиден возврат из индикатора машинного нуля вместо значения индекс буфера,
то опять же желательно это как то вылавливать. (на изи программируем)))
a)Если же это выход за пределы массива, тогда почему трассировщик не ловит,
b)Или/Либо принудительно инициализировать память выделяемую под индекс-буфер значением -(66666666)))
дабы отличить ноль индюка от отсутствия расчета.

 
За месяц знакомства с MQL4, я понял, что это очень серьёзный язык), а в своей специализации, пожалуй самый лучший. Но для полноценного ЯП ему сильно не хватает пошагового отладчика. Уважаемые разработчики, ОЧЕНь хотелось бы видеть таковой в MQL 5. Правда я не прочитал все 27 страниц данной темы и поэтому извините если эта просьба уже звучала.
 
Вот такая мысль. При снятии или пересчёте индикаторы должны избирательно удалять только "свои" объекты, то есть для того чтобы их найти, они должны иметь в имени признак принадлежности к индикатору. Я обычно использую в имени объекта имя индикатора. Но это не работает, когда на одном графике находится несколько одинаковых индикаторов. Можно предположить, что в терминале каждый экземпляр индикатора имееет уникальный ID. Хорошо бы иметь функцию для доступа к этому ID, тогда проблема решалась бы просто: Object_Name = ID+"внутреннее имя объекта".
 
Господа, мы тут уже стОлько понажелали будущему MQL5, что дай Бог воплотить в жизнь хотя бы это. Может пора сказать себе стоп? Может пора попросить разработчика рассказать, что будет представлять собой данный язык, может он уже может дать что-нибудь потестить? Например, потестить отладчик - думаю, что это хорошее начало для воплощения MQL5 в жизнь. Я так понимаю, что отладчик должен поодерживать и код MQL4... А раз так, то если он готов, то почему бы его ни потестировать?
Разработчики, что думаете по-этому поводу?
Причина обращения: