[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 660
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Анатолий, большое спасибо, жаль здесь нельзя вставить иконку, как в Скайпе с поклоном. Всё просто и элегантно получилось. Из общения с другими программами тех. анализа, понимаю, что так и должно быть, но практики работы с mql пока не хватает. Спасибо за подсказку с выделением в метод - по разбираюсь.
На послед, не подскажите как избежать, множественного выставления ордеров на одном баре этим советником? Добрые люди уже давали подсказки, но надушу не легли.
Попробовал решить вашу проблему, и вот что получилось. Впрочем обо всем по порядку.
Кто виноват и что делать? Или откуда растут ноги…
У вас в советнике, для открытия позиции (и соответственно закрытия предыдущей) используются разные настройки индикатора CCI. Для покупки, свои настройки, для продажи свои. Насколько я понял в этом и есть фишка. Например при up-тренде, выгодней использовать менее чувствительные настройки для покупки, чтобы дать прибыли «расти» (то есть имеет смысл держать позицию по тренду по дольше). В то время для продаж (при up-тренде) нужны более чувствительные настройки, для быстрых входов/выходов, при попытках например поймать коррекцию (соответственно быть в рынке с позицией против тренда по меньше времени). Все очень логично, и идея тоже не лишена здравого смысла, но возникает при такой системе один нюанс, что делать, если из-за разностей настройки (по сути, для терминала это два индикатора) возникает два противоположенных сигнала одновременно?
Про голубые стрелочки…
Советник на одном баре получает одновременно сигнал для покупки, и для продажи, а так как я писал выше, при открытии одной позиции противоположенная должна быть закрыта. Вот и получается такая картинка, дается команда купить, и закрыть продажу, так как продажи к тому моменту нет, то советник открывает BUY. На следующем тике, генерируется противоположенный сигнал, продать, и соответственно только что открытая покупка закрывается. Еще одно наблюдение, вы заметили что «колбасит» исключительно покупки (кучи голубых стрелочек)? Реализация методов купли/продажи насколько я понял, взята из учебника, а там есть такая особенность, что по завершению операции происходит выход из метода start(), оператором return, то есть за один тик может произойти только одно открытие/закрытие. Так вот, при получении «двойного сигнала», происходит закрытие всех сделок (блок закрытия описан первым), далее блок открытия сделок, а в нем покупка описана первой!!!, а после покупки происходит выход из start(), так что советник просто не успевает добраться до продаж :))) и зацикливается до тех пор пока не получит «нормальный» одиночный приказ.
Про способы решения…
Способов решения не мало.
1. Дедовский.
Для начала можно «убить» идею, и просто задавать одинаковые параметры для покупок и продаж, и проблема исчезнет сама собой.
2. Сложный.
Нужно вписать алгоритм определения основного тренда в советник, и соответственно придавать разный «вес» сделкам. Так при поступлении разнонаправленных сигналов, предпочтение отдавать тому, у которого больший «вес» (то есть тому, который по тренду).
3. Без названия.
При поступлении разнонаправленных сигналов…
Ничего не делать.
Именно такой вариант в прикрепленном ниже файле.
Надеюсь все понятно объяснил.
Удачи :)))
Пост Volfram'a удален за размножение в нескольких ветках.
Volfram, Вы создали специально для этой цели свою ветку. Вам уже ответили; этого недостаточно?
P.S. Скажу Вам по секрету, Volfram: отсутствие явного интереса к Вашей идее неявно свидетельствует о том, что эта идея не заслуживает внимания. Соответственно и не нашлось желающих реализовывать ее "забисплатно".
2. Сложный.
Нужно вписать алгоритм определения основного тренда в советник, и соответственно придавать разный «вес» сделкам. Так при поступлении разнонаправленных сигналов, предпочтение отдавать тому, у которого больший «вес» (то есть тому, который по тренду).
3. Без названия.
При поступлении разнонаправленных сигналов…
Ничего не делать.
Именно такой вариант в прикрепленном ниже файле.
Надеюсь все понятно объяснил.
Удачи :)))
Можно и мне добавить свою веху... :)
Я тож начинал с учебника. Можно сделать проще: Достаточно убрать закрытие бай при сигнале селл и закрытие селл при сигнале бай, т.е. не использовать свинговую торговлю, реализованную в учебнике Сергея Ковалёва... Отслеживание позиций проводить не по тикету, а по магику. Поначалу я так и сделал и спокойненько тестировал свои идеи. Далее уже написал свои функции для работы...
ЗЫ. Код не смотрел, посему могу ошибаться применительно к данному советнику...
никак не соображу как найти экстремумы функции
есть у меня массив данных который хранит значения:
как найти переломы - экстремумы используя массив данных из 250 элементов и сохранить только номера элементов где находятся эти экстремумы
Ребяты, а у меня вот такой вопрос:
В функции определения тренда явно указано, что если АС на первом баре больше, чем АС на втором баре (т.е. увеличивается), но тренд нисходящий (другие индюки кажут вниз), то в таком случае возвращать ноль, т.е. нет тренда вниз... Но советник упорно игнорирует, в чём может быть причина?
Ф-ция опр. тренда:
Проверка на открытие доливок (в самом начале проверка тренда, на которую не реагирует: trH1 и trM15 ) - дальше эксперименты с условиями, не обращайте внимания, но код рабочий...
Мож кто что увидит, что мне не видно? Спасибо.
никак не соображу как найти экстремумы функции
есть у меня массив данных который хранит значения:
как найти переломы - экстремумы используя массив данных из 250 элементов и сохранить только номера элементов где находятся эти экстремумы
Организуем цикл, в котором проходим по значениям массива. Значение в предыдущей ячейке массива сравниваем со значением в текущей ячейке. Если оно больше, то переходим к следующей итерации цикла. Короче, до тех пор, пока значение в каждой последующей ячейке массива растёт, продолжаем перебор. Как только оно стало меньше предыдущего, номер предыдущей ячейки запоминаем в заранее объявленный массив, так как произошёл перелом тенденции - мы отыскали пик. Теперь тенденция едет вниз. Теперь выполняем перебор до тех пор, пока в очередной ячейке ни обнаружится значение больше, чем в предыдущей. Как только это произошло, номер предыдущей ячейки запоминаем в заранее объявленный массив, так как произошёл перелом тенденции - мы отыскали дно впадины. Можно вносить номера в разные массивы,чтоб отфильтровать пики от впадин. Словом, после полного перебора всех значений массива, мы получим отсортированные данные (искомые номера ячеек в одном/двух других массивах)
Организуем цикл, в котором проходим по значениям массива. Значение в предыдущей ячейке массива сравниваем со значением в текущей ячейке. Если оно больше, то переходим к следующей итерации цикла. Короче, до тех пор, пока значение в каждой последующей ячейке массива растёт, продолжаем перебор. Как только оно стало меньше предыдущего, номер предыдущей ячейки запоминаем в заранее объявленный массив, так как произошёл перелом тенденции - мы отыскали пик. Теперь тенденция едет вниз. Теперь выполняем перебор до тех пор, пока в очередной ячейке ни обнаружится значение больше, чем в предыдущей. Как только это произошло, номер предыдущей ячейки запоминаем в заранее объявленный массив, так как произошёл перелом тенденции - мы отыскали дно впадины. Можно вносить номера в разные массивы,чтоб отфильтровать пики от впадин. Словом, после полного перебора всех значений массива, мы получим отсортированные данные (искомые номера ячеек в одном/двух других массивах)
угу значит надо через while попробовать - это до первого пика, а потом ........ - опять не соображу
На скриншоте не видно индикатора BB_MA. И в верхнем коде нет проверок направления тренда. Переменная ВВ будет всегда содержать одно значение. Насколько я понял, индикатор ВВ_МА - это скользящая средняя. Чтоб определить направление скользящей нужно иметь 2 значения на разных свечках, например на первой и второй свече и сравнивать эти значения между собой. Поэтому можно сказать, что верхний код выполняет свою задачу лишь отчасти.
Посему, проверка направления тренда - это:
для UP и
для DOWN, ну и
для Flat.
Т.е. функция возвращает 1 если Bears&Bulls_MA выше ноля, OsMA выше ноля и значение первого бара АС больше значения второго бара АС,
для тренда вниз - наоборот... Ну и для флета все остальные разногласия в графиках (пока..., далее, как с этим разберусь, подключу проверку движения с ускорением/замедлением и разворот).
Открываться позиции должны только при однозначном "тренд вверх" или "тренд вниз"... В принципе, всё работало, пока я не добавил АС для контроля скорости движения валюты, дабы исключить (частично) открытия поз в конце движения, на истощении тренда или коррекции.
Пока не работает... и именно АС
угу значит надо через while попробовать - это до первого пика, а потом ........ - опять не соображу
Нет - цикл нужно делать через for. Ща попробую скриптик такой набросать. Идея-то вобщем-то осуществима.