Отправлено: 11.02.15 10:04. Заголовок: Вопросик по советнику
А. совсем забыл. Все хотел спросить. Дело в том что советник открывает позицию слишком поздно. После пересечения следующая свеча закрывается и еще на следующей после закрытия только открывается ордер. Я понимаю что на текущем баре цена может прыгать и соответственно пересечение. Но хотя бы на открытии следующей возможно открывать ордер?
Дело в том что советник открывает позицию слишком поздно. После пересечения следующая свеча закрывается и еще на следующей после закрытия только открывается ордер. Я понимаю что на текущем баре цена может прыгать и соответственно пересечение. Но хотя бы на открытии следующей возможно открывать ордер?
Проверил. Оригинальный CE_CrossMA выдает сигналы вовремя. Их также вовремя обрабатывает комплексный советник. Ни о какой задержке речь не идет:
Поэтому, опять же, нужен измененный Вами код. Тогда помочь будет возможно.
Да. вижу. Может у меня как проскальзование иногда происходит. (Вроде в коде на открытие ордера видел 3-ка - проскальзование).
Проскальзывание к сигналу не имеет никакого отношения. Разве что в баре будет слишком мало тиков для того, чтобы советник успел открыть позицию. Но на ТФ выше М1 это крайне маловероятно.
mitanq777 пишет:
цитата:
Я вот всю голову "сломал" решил сделать тогда, чтобы открывал сразу после сигнала на текущем баре.
Давайте конкретнее - о чем именно идет речь? Если речь о том, чтобы открываться на том баре, где пересечение только начинается, то это невозможно, т. к. является подглядыванием в будущее. Если же имеется в виду что-то другое, то, пожалуйста, опишите проблему подробнее.
Давайте конкретнее - о чем именно идет речь? Если речь о том, чтобы открываться на том баре, где пересечение только начинается, то это невозможно, т. к. является подглядыванием в будущее. Если же имеется в виду что-то другое, то, пожалуйста, опишите проблему подробнее.
Добрый вечер Игорь!
Ситуация такая. Цена изменяется каждый тик. И в течении одного бара она может подниматься и опускаться. Соответственно, если произошло пересечение в данный момент в текущем баре, возможно ли обработать этот тик? То есть записать сигнал и советник откроет позицию?
Это уже произошло. Это не будущее, прошлое. Да, пересечение может тоже то быть то не быть в течении одного бара, но вот оно произошло первый раз на текущем баре. Все - это сигнал. А то что будет дальше происходить с ценой уже не важно........ Понимаете?
Ситуация такая. Цена изменяется каждый тик. И в течении одного бара она может подниматься и опускаться. Соответственно, если произошло пересечение в данный момент в текущем баре, возможно ли обработать этот тик? То есть записать сигнал и советник откроет позицию?
Это уже произошло. Это не будущее, прошлое. Да, пересечение может тоже то быть то не быть в течении одного бара, но вот оно произошло первый раз на текущем баре. Все - это сигнал. А то что будет дальше происходить с ценой уже не важно........ Понимаете?
Эту ситуацию я понимаю лучше всего. Попробую объяснить, почему лучше не использовать ее. На текущем баре получен сигнал пересечения от какого-либо индикатора (речь не только об МА). ОК, открываем сделку. На следующем тике цена возвращается в положение, где сигнала не было. Но сделку мы уже открыли. Далее происходит следующее - цена разворачивается, формируя противоположный сигнал. Что будем делать? Реагируем на него, закрывая открытую сделку и открывая противоположную? ОК. Но по законам Мерфи, цена вновь разворачивается и снова формирует противоположный сигнал.
Думаю, дальше объяснять не нужно - на одном баре мы можем совершить с десяток сделок, ни одна из которых не даст прибыли. А вот истинное положение вещей будет сформировано только по закрытию бара. Это то положение, которые все мы видим в истории. Но в том то и дело, что раньше, чем закрытие бара, об этой истории судить нельзя.
Только кажется, что открывая сделку на опережение событий, мы что-то выигрываем. На самом деле таких опережающих сигналов до момента формирования бара существует намного больше, чем тех сигналов, которые реально дадут какой-либо выигрыш. Просто на истории мы не видим всего этого многообразия. Лечится просто - понаблюдайте за развитием цены внутри бара в визуализаторе тестера стратегий МТ4.
Эту ситуацию я понимаю лучше всего. Попробую объяснить, почему лучше не использовать ее. На текущем баре получен сигнал пересечения от какого-либо индикатора (речь не только об МА). ОК, открываем сделку. На следующем тике цена возвращается в положение, где сигнала не было. Но сделку мы уже открыли. Далее происходит следующее - цена разворачивается, формируя противоположный сигнал. Что будем делать? Реагируем на него, закрывая открытую сделку и открывая противоположную? ОК. Но по законам Мерфи, цена вновь разворачивается и снова формирует противоположный сигнал.
Думаю, дальше объяснять не нужно - на одном баре мы можем совершить с десяток сделок, ни одна из которых не даст прибыли. А вот истинное положение вещей будет сформировано только по закрытию бара. Это то положение, которые все мы видим в истории. Но в том то и дело, что раньше, чем закрытие бара, об этой истории судить нельзя.
Только кажется, что открывая сделку на опережение событий, мы что-то выигрываем. На самом деле таких опережающих сигналов до момента формирования бара существует намного больше, чем тех сигналов, которые реально дадут какой-либо выигрыш. Просто на истории мы не видим всего этого многообразия. Лечится просто - понаблюдайте за развитием цены внутри бара в визуализаторе тестера стратегий МТ4.
Так и знал, что Вы так ответите. В тестере смотрел уже очень много раз. Стратегия позволяет.
Так вот. Сигнал появляется (пересечение) и открываем ордер. И не важно, что потом цена может развернуться или будет еще раз пересечение на текущем баре. Советник открыл ордер со своим magik и второго ордера он уже не откроет.
Советник открыл ордер со своим magik и второго ордера он уже не откроет.
А как насчет того, что затем в истории пересечения вполне может не быть? То есть на время цена дала сигнал, но потом его отменила. Таких случаев тоже немало. Особенно, когда средние находятся друг возле друга. В итоге от упреждения этого сигнала вреда будет больше, чем выигрыша.
То есть на время цена дала сигнал, но потом его отменила.
У меня другие индикаторы фильтруют скачки. Я долго тестировал в тестере. Подгонял параметры. Доделал советника для бинарных опционов. Даже "мартингейл" прикрутил )))
А вот с открытием ордера на новом баре не могу разобраться. То есть на тике открывать (на пересечении например) Подскажите пожалуйста что надо убрать?
Пробовал закомментировать вот эти строки: // - 3 - ======================= Выдача сигналов ======================================== -------->>>>>> // if (LastBar != Time[0]) // Один раз за один бар -------->>>>>> // { if (FastMA[1] > SlowMA[1]) GlobalVariableSet(Signal, 1); else if (FastMA[1] < SlowMA[1]) GlobalVariableSet(Signal, -1); // Sell else GlobalVariableSet(Signal, 0); // Нет сигнала GlobalVariableSet(STime, Time[0]); // Время последнего обновления -------->>>>>> // LastBar = Time[0]; -------->>>>>> // } // - 3 - ============================ Окончание блока ===================================
Для проведения многих изменений недостаточно что-то добавить или убрать. Так и в этом случае нужно полностью изменить логику советника и индикаторов. Не на один час работы, если делать хорошо. Для "абы как", может быть, можно и за полчаса управиться.
Для проведения многих изменений недостаточно что-то добавить или убрать. Так и в этом случае нужно полностью изменить логику советника и индикаторов. Не на один час работы, если делать хорошо. Для "абы как", может быть, можно и за полчаса управиться.
Ясно. Будет повод изучать mql4. Придется Сделать отдельного советника на эти три индикатора, если уж совсем туго будет. В любом случае спасибо за ответы.
Придется Сделать отдельного советника на эти три индикатора, если уж совсем туго будет.
Если есть конкретная стратегия, то, действительно, лучше сделать специальный советник. Комплексный советник - это больше конструктор для исследований. К тому же у него очень много ограничений.
Есть такая функция OnTick () но она используется только в советнике. А дело в индикаторе!? Подскажите?
Функция OnTick - это обработчик события поступления нового тика в обновленном MQL4, аналог функции start, используемой в "старом" MQL4. Сейчас в советниках вместо start лучше использовать OnTick по той простой причине, что этот подход яснее - код советника невозможно перепутать с кодом индикатора, как раньше. В индикаторах теперь вместо функции start используется обработчик событий OnCalculate.
Это было лишь объяснение. Сам вопрос я пока не понял. Попробуйте сформулировать его по-другому.
Все даты в формате GMT
2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет