Обсуждение статьи "Советы профессионального программиста (Часть II): Организация хранения и обмена параметров между экспертом, скриптами и внешними программами" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
Как известно, обработчик OnInit эксперта срабатывает не только при его запуске, но и при изменении таймфрейма. Фактически, каждый раз при переключении таймфрейма переменные обнуляются и инициализируются заново, кроме параметров эксперта.
...
Неверно. Так происходит в индикаторе. При смене параметров и изменении символа/таймфрейма графика переинициализация эксперта не производится.
Теперь, что касается передачи информации между экспертами/индикаторами/сервисами и т.п.
Вот и остается, из нативного, только EventChartCustom(...), со всеми его минусами.
Так что, ставим галочку разрешить импорт dll и начинаем делать правильно, или, лучше, уж никак.
1) Статья слабо проработана.
1) меня модератор похвалил
2) чтобы не запускать анализ бара повторно
3) время жизни файла больше времени глобальной переменной
4) я показал один из способов упаковки
5) я их не использую
...
а) Неверно. Так происходит в индикаторе. При смене параметров и изменении символа/таймфрейма графика переинициализация эксперта не производится.
Теперь, что касается передачи информации между экспертами/индикаторами/сервисами и т.п.
б) Так что, ставим галочку разрешить импорт dll и начинаем делать правильно, или, лучше, уж никак.
а) согласен, что переинициализация переменных эксперта не производится
1-2) речь идет об обмене между своими экспертом и скриптами. Если, что можете шифровать инфу ;-)
3) дописывать ДЦ что-то в конец может в МТ4. В МТ5 такого нет, по крайней мене у меня ;-)
4) Ну я обычно использую флаг FILE_SHARE_READ
б) если делаете для себя, то как говорится "флаг вам в руки...."
если для маркета, то там DLL не проходят
а) согласен, что переинициализация переменных эксперта не производится
1-2) речь идет об обмене между своими экспертом и скриптами. Если, что можете шифровать инфу ;-)
3) дописывать что-то в конец в МТ4. В МТ5 такого нет, по крайней мене у меня
4) Ну я обычно использую флаг FILE_SHARE_READ
б) если делаете для себя, то как говорится "флаг вам в руки...."
если для маркета, то там DLL не проходят
1-2) Так шифруй, не шифруй, а изменить/удалить все равно можно)))
3) Если явно не сказано, что нельзя, то ... Лично мне, стремно на такое закладываться.
4) Я не об этом, я о ситуации "гонок" данных при совместном использовании ресурса из различных потоков. Запусти два приложенных скрипта на разных графиках. Первым запускай write. Это и ответ на мой давний вопрос к метаквотам. И, опять же, в разрезе результата теста, до которого наконец-то дошли руки (спасибо ТС) и вопрос к ним: где нативные примитивы синхронизации?
Это и ответ, почему в маркете заниматься таким без предупреждения огромными буквами покупателей, как-то моветон для профессионала.
....
Все примеры из моих статей, у меня прекрасно работают (в моем эксперте и скриптах)
Все примеры из моих статей, у меня прекрасно работают (в моем эксперте и скриптах)
Мой пост не о том, что не работает, а о том, что не обеспечивается безопасность и целостность данных. При использовании всех перечисленных методов передачи данных, не обеспечивается 100 надежность механизма. Причем, связано это не с возможными багами сторонних систем (Терминал, ОС, аппаратные баги), а с самим методом: коллизия имен или действия пользователя в случае глобальных переменных терминала, то же самое + функции удаления для графических объектов, отсутствие синхронизации для операций чтения и записи в файл из разных потоков.
Да, вероятность этого можно свести к очень низким значениям, но не к 0. Вот об этом и надо не забывать)
Мой пост не о том, что не работает, а о том, что не обеспечивается безопасность и целостность данных. При использовании всех перечисленных методов передачи данных, не обеспечивается 100 надежность механизма. Причем, связано это не с возможными багами сторонних систем (Терминал, ОС, аппаратные баги), а с самим методом: коллизия имен или действия пользователя в случае глобальных переменных терминала, то же самое + функции удаления для графических объектов, отсутствие синхронизации для операций чтения и записи в файл из разных потоков.
Да, вероятность этого можно свести к очень низким значениям, но не к 0. Вот об этом и надо не забывать)
Хранение параметров в файлах обеспечивают 100% надежность. Все ваши "коллизии" решаются с помощью префиксов имен объектов, в т.ч. глобальных переменных.
Например, параметры уровня хранятся в Files\Cayman\Params\128968168864101576\exp_05_Lev607A160E_H4.txt. Где 128968168864101576 - ChartID. Никто кроме анализатора именно этого уровня об этом файле не знает. Возьмите любой кусок кода из статьи и попробуйте "сломать" ;-) Если сломаете, то я покажу, где вы ошиблись ;-)
Что-нибудь подобное такому скрипту в любом советнике/индикаторе/скрипте/сервисе, запущенному любопытным юзером, и у Вас веселые недели поиска невоспроизводимого бага, которого нет)))