Как занести в ГП индикаторный буфер?
А если в индикаторе несколько индикаторных буферов?
А если индикатор выдает много значений для принятия решения и количество этих значений переменное во времени?
не знаю про то или не про то, я разбираю индикатор по частям и впихиваю в советник... а вот уже в советнике сам определяю кому когда и что делать... имхо...
( мож я и белый вОрон, но ситуация с индикаторами в МТ5 меня почему-то не испугала именно поэтому... )
тоже, кстати, хотел бы выслушать критику по поводу такого подхода... ну и плюсы тоже...
Я в далеком прошлом :) (года два-три тому назад), разработал несколько функций для записи значений индикаторов в файл и чтения их из экспертов. Очень ускоряло работу в тестере при сложных, ресурсоемких индикаторах. Даже помнится работало на демо. Но сейчас я все индикаторы встраиваю в экспертов.
по возможности использую все расчеты в советнике, так не возникает противоречий..
если без индикаторов не обойтись, то тогда проще сделать так, чтобы индикатор сам выдавал готовые сигналы
в виде чего угодно (ГП, граф. объекты или запись в файл).. если выходных данных много, то лучше писать их в файл опять же
ну и сохранять дополнительно переменную с последним временем обновления данных..
завести еще одну ГП в которую индикатор должен прописывать датувремя последнего выполненного расчета. он ее обновляет только после того как все остальные рабочие ГП уже запомнил.
советник хранит у себя значение последнего обработанного времени. Если в ГП появилось новое значение - считывает обновленные данные индюка и отрабатывает их.
возможные грабли: индюк уже начал писать новые а эксперт еще не вычитал старые. решение: имена всех ГП должно содержать метку времени. индюк создает ГП, эксперт по мере вычитки - удаляет.
вторые возможные грабли: индюк полодит ГП. а экспер не работает (что произойдет с памятью терминала - ХЗ). возможное решение: индюк должен создавать ГП только если предыдущие уже удалены экспертом.
вроде как бы все.....
Все индикаторы свожу к итоговым функциям, которые уже потом использую внутри эксперта … и все индикаторы использую только в локальном МТ, чтобы удобнее мне самому наблюдать за темой, а эксперта вешаю на МТ, который крутится на серваке, и в котором кроме этого эксперта нет вообще ничего …
Простите за лапидарность...
)))
Идикатор простой, содержит внутри набор других индикаторов и каждый из них пишет в свою ГП: -1, 0 или 1
(что-то типа: _name_sym 1 )
Далее есть варианты, сразу считывать и обрабатывать в советнике, либо использовать ещё один индикатор
в качестве "сумматора" рекомендаций и выработки уже собственно конечного решения и записью его в ГП,
которое потом считает советник...
_rec -1, 0 или 1 (соотв.: ничего не делаем, сигнал бай, сигнал селл)
Мож в тему, может нет, но первый свой скрипт писал как советника, потому как не понимал как можно работать в тике полноценно, потому скрипт работал по циклу как полноценная прога и индикаторы считал и открывал сделки как советник и все было на своих местах, подобных вопросов не возникало )))
пример:
GlobalVariableSet(_mom, -1); if((iMomentum(NULL,0,14,PRICE_CLOSE,1) < 100) && (iMomentum(NULL,0,14,PRICE_CLOSE,0) > 100)) GlobalVariableSet(_mom, 0); if((iMomentum(NULL,0,14,PRICE_CLOSE,1) > 100) && (iMomentum(NULL,0,14,PRICE_CLOSE,0) < 100)) GlobalVariableSet(_mom, 1);
Вот и ещё одни грабли в перспективе...
Привык называть операции как описано выше.
Тому были причины:
-1 обычно ничего не делаем, не сделано, ошибка
0 и 1 номера операций бай и селл
Так вот в "случае чего" неприсвоеное значение переменной может схватить 0 по умолчанию.
А это чревато...
Конечно можно периначить привычку в: -1 баим, 0 стоим, 1 селлим
А стоит ли?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
И понял что наступаю на грабли...
Разнести обсчёт индикаторов и работу советника по своим так сказать полочкам.
Индикатор пишет в глобальные переменные (ГП) а советник соответственно читает оттедава.
Однако в случае глюка возможны неожиданности типа старых значений ГП, которые как известно не сохраняются
при нештатном завершении работы и не обновятся пока не пройдёт новый тик...
Так-же неясен приоритет работы на тике индикатора и советников.
Поясняю: новый тик, индикатор начинает обсчёт, т.е. некоторое время будет занят и в ГП будут ещё старые значения,
и в тот-же миг нового тика советник тоже будет читать соотв. старые значения, ибо индикатор есчё не записал в ГП новые.
В общем х.з.
иль наплевать на всё это...?