Нужна помошь: советник с кастомным индикатором не торгует по сигналам индикатора! - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
:) Мужики, iClose[0] на тесторе - это всегда клозе текущей свечи, даже, если его еще не было. А в реале-то вы не знаете, как нас ждет клозе. Это называется смотрим в будущее. Не построишь туто советника. Пробывал не раз, в реале слив будет.
Именно с целью прекратить всякие домыслы на тему тестирования и была написана статья Тестер в терминале MetaTrader 4: Это необходимо знать
Ясно, что в советник из буферов индикатора вместо нуля прет 2147483647 ...
Если не хотите трогать индикатор, то есть вставить в инит
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
то получайте сигнал другим путем:
если iCustom>100000, считаем, что сигнала (стрелки) нет
если iCustom<100000, считаем, что сигнал есть (стрелка появилась)
Туповато, но я иногда применяю, чтоб не лазить в индикатор. Работает 100%.
2147483647 ... и есть значение EMPTY_VALUE.
попробуй вывести его через коммент или принт.
А повтор инициализации буфера не критичен, он ни на что не влияет.
:) Мужики, iClose[0] на тесторе - это всегда клозе текущей свечи, даже, если его еще не было. А в реале-то вы не знаете, как нас ждет клозе. Это называется смотрим в будущее. Не построишь туто советника. Пробывал не раз, в реале слив будет.
Именно с целью прекратить всякие домыслы на тему тестирования и была написана статья Тестер в терминале MetaTrader 4: Это необходимо знать
Проверять не буду. Вашего замечания вполне достаточно, извиняюсь за дезинформацию.
За статью спасибо, пропустил её. Прочту.
nPips индикатора, менять только из советника нельзя.
Мне не нравится код советника. Критиковать не берусь, но желательно
распечатать iCustom, если данные нормальные,
то упростить советник до тупого открытия позиции, а уж потом
прикрутить переворот. По ходу стук наружу выйдет.
Как возможная причина - в индикаторе не заданы нулевые значения
буферов.
Точно, посмотрел повнимательнее, значение индикатора никогда
не равно 0. А так что где-то 2147483647 ...
З.Ы. Спасибо за замечание по поводу необязательности параметров
iCustom, как-то всегда проставляю, даже и не знал... Проверил - работает)
Тестировал индикатор на визуальном тестере, он не перерисовывает.
Похоже это действительно один и тот же индикатор.
нПипс добавил. Но всё же советник не работает... Также просто
открывает СЕЛЛ и необращает внимание на индикатор...
Сделал так и результат совсем не такой какой нужен. Советник стал совершать только БАЙ и при этом странно: открывает позу вверх, потом закрывает её и начинается серия: бай,(новый бар) закрыть бай,бай...
Скрин визуализатора вот:
Если значение индикатора 2147483647...(EMPTY_VALUE0x7FFFFFFF), считаем, что в буфере ноль (сигнала нет)
Если значение индикатора имеет другой порядок (близко к Close[0] и явно меньше миллиардов) - сигнал есть
Что-нибудь вроде:
if (iCustom(NULL,0,"Stop_reversal",0,r)>100000 ) int Signal=0;
if (iCustom(NULL,0,"Stop_reversal",0,r)<100000 ) Signal=1;
А вообще, код надо выбросить, взять за основу нормальный реверсный советник и прикрутить к нему индикатор.
Как вариант - использовать "Универсальный эксперт для работы с любым Custom индикатором рисующем стрелки на покупку/продажу"
Integer'а из Code Base.
Не тестировал, но заметил, что в функции инициализации 0-й буфер
SetIndexBuffer(0, ExtHistoBuffer) устанавливается дважды
Ясно, что в советник из буферов индикатора вместо нуля прет 2147483647 ...
Если не хотите трогать индикатор, то есть вставить в инит
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
то получайте сигнал другим путем:
если iCustom>100000, считаем, что сигнала (стрелки) нет
если iCustom<100000, считаем, что сигнал есть (стрелка появилась)
Туповато, но я иногда применяю, чтоб не лазить в индикатор. Работает 100%.
Что, куда вставить в индикатор?
Если вставить в инит:
это поможет и ничего больше не нужно делать ( в индикаторах ничего не понимаю, я в советниках тока разбираюсь) :)
Как я понял это устанавливает принудительно эээ "пустые" буфера, когда нет стрелки, на нуль. Верно?
Как я понял это устанавливает принудительно эээ "пустые" буфера, когда нет стрелки, на нуль. Верно?
Мне просто кажеться вот так проще. Хотя я могу и ошибаться. Тут мастера есть намного круче меня (если неправ, я думаю поправят).