Приветствую! Прошу написать сеточного советника на основе индикатора MA_Chanels_FIBO.
Суть: При касании ценой верхнего уровня FIBO продаем, нижнего покупаем (например при касании красной линии 61,8%). Уровень касания должен задаваться в параметре Fibo, т.к. он может быть нестандартным, как 78%, так и 100%.
Условия входа:
Как только цена коснулась нужного уровня Fibo на индикаторе MA_Chanels_FIBO, сразу покупаем (продаем) с рынка с определенным TP и SL в пунктах. Также от этого рыночного ордера сразу выставляется сетка отложенных лимитных ордеров с шагом Step пунктов между ними в количестве равном N штук. SL всей сетки выставляется на уровне стопа первого ордера который уже в рынке, т.е. если касается стопа первого ордера, стопарится вся сетка сразу. TP каждого сеточного ордера равен TP пунктов первого ордера.
Объем каждого ордера одинаковый, задается в параметрах.
Пример:
Коснулись 61,8% fibo. Купили по цене 1.1000, стоп 100 пунктов, тейк 50 пунктов (т.е. стоп получается 1.0000, а тейк 1.1050). Сразу же выставили байлимитные ордера с шагом 20 пунктов в количестве 3 штуки (т.е. по цене 1.0080, 1.0060, 1.0040, с общим стопом на 1.0000 и с тейком каждого в 100 пунктов (соответственно тейк ордера 1.0080 на 1.1030, 1.0060 на 1.1010 и т.п.)).
Также просьба учесть правило: Пока ордера сети в рынке (хоть один), последующие сигналы игнорируются.
Магик обязателен.
Ключевые настройки индикатора тоже желательно вынести в параметры советника: BarsCount и MAPeriod.
MA_Chanels_FIBO.mq4 (5 Kb)
Эпилог: Потом я оформлю тему с данной стратегией и покажу его в работе. Там очень важны настройки как Fibo, так и соотношение стопов и профита и таймфрейм, а также когда брать сигнал, а когда пропускать. Пока этот фильтр только в голове (но я буду думать как его роботизировать). Настройки по умолчанию, сделанные наобум скорее всего будут сливные, также неустойчивый результат если брать все поступающие сигналы. Но здесь нужен костяк, эксплуатирующий саму идею.
Индикатор основан на текущих вычислениях, берутся его текущие показатели на данный момент времени, дальше все перерисовывается, но это уже не важно, важен сам факт первого входа по сигналу.
Важное дополнение: Гонял его вручную тестером на стремном для пары USDCAD периоде чтобы проверить живучесть, а именно октябрь 2014 — февраль 2015: 17 сделок, из них 14 тейков, 3 стопа. Общий итог +1360 пунктов.
Это еще один шаг вперед, приближающий нас к граалю! Ура, товарищи!
Спасибо!
Комментарии (55)
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
19 pacak Автор Сообщений: 552 - варвар Andre
35 AM2 Сообщений: 16412 - Андрей
35 AM2 Сообщений: 16412 - Андрей
Редактирован: 17 января 2016, 01:30
35 AM2 Сообщений: 16412 - Андрей
Только вот я все думал как избежать убытки в тренде. Есть идея, что если скажем есть открытые позиции на продажу, и закрывать эти позиции только на следующем сигнале на продажи, с условием что есть открытые ордера на покупку. Можно как то это реализовать в этом советнике?
14 beton2011 Сообщений: 895
Сделать можно только в другом топике. Здесь делаю по стратегии автора.
35 AM2 Сообщений: 16412 - Андрей
Отличная работа! Пока беглым взглядом открывает как надо.
Улучшения по пунктам:
1. Неправильно ставятся стопы у лимитных ордеров. Стоп у всей сетки должен быть один, на цене стопа первого рыночного ордера. В этом варианте у каждого ордера свой стоп в 500 пунктов от цены их открытия.
Лучше даже оставить два варианта на выбор. Один как сейчас, а другой с единым стопом. Что то типа переменной:
Единый стоп у всех ордеров: true/false
false — нынешний вариант, у каждого отложенника свой стоп
true — стопы всех отложек на цене стопа первого рыночного ордера
2. Настройка уровня отбоя (крайне важная штука). По умолчанию в индикаторе стоит 61,8%, который рисуется красной линией. Я сейчас переделал индикатор в силу своих способностей, там эти уровни задаются переменными: www.opentraders.ru/downloads/1012/
В моем индикаторе есть переменная fibo_red=61.8
Можно ее вынести в советника? Она отвечает как раз за эту отбойную линию.
3. Если по тейку закрывается первый ордер (с которого началась сетка), то все отложенники удаляются. Это очень важное правило!
кажется грааль все таки существует!
Спасибо! Редактирован: 16 января 2016, 15:11
19 pacak Автор Сообщений: 552 - варвар Andre
Потестирую с разными настройками. Главное что есть от чего оттолкнуться, СПАСИБО!!!
19 pacak Автор Сообщений: 552 - варвар Andre
В понедельник продолжу.
35 AM2 Сообщений: 16412 - Андрей
Выявил ошибку:
Открывает по 2 одинаковых ордера.
Ордер номер 2.
Значение Count (число отложек) = 3
шаг = 20 пунктов (у меня четырехзнак)
слип = 3 Редактирован: 17 января 2016, 20:18
19 pacak Автор Сообщений: 552 - варвар Andre
В коде:
Надо заменить в обеих строках
for(i=0; i<=Count;i++)
на
for(i=1; i<=Count;i++)
Cейчас потестирую поподробнее в разных ситуациях.
Добавлено чуть позже: Да, теперь как надо. Я молодец Редактирован: 17 января 2016, 20:54
19 pacak Автор Сообщений: 552 - варвар Andre
Все есть
Редактирован: 18 января 2016, 05:39
35 AM2 Сообщений: 16412 - Андрей
Не всегда удаляются отложки по этому условию:
Уже открылась новая сетка в другую сторону, а отложки на продажу еще висят.
Можно изменить это условие?
При первом же тейке любого ордера сетки все отложки удаляются. Неважно какой по счету ордер тейкнулся. Есть один тейк — все отложки удаляются.
—
extern int Buff = 1; // 1-61.8, 2-50, 3-38.2, 4-23.5
Это немного не то что я хотел
В старом индикаторе есть именно эти уровни 1-61.8, 2-50, 3-38.2, 4-23.5. Но они не играют никакой роли. Это просто цифры, которые мы не можем поменять. По большому счету кроме красной линии остальные нам и не нужны.
В моем новом индикаторе мы можем поставить значение fibo_red=61.8 (и красная линия будет как в старом индюке), так и 97, так и 122, т.е. абсолютно независимые фибо-значения, в отличии от старого варианта.
Вот старый индюк fibo_red=61.8:
Вот мой индюк. Я могу менять красную линию — fibo_red=92
Красная линия существенно сдвинулась, и мы будем ловить отскок от нее! Вот поэтому хотелось бы вынести это значение fibo_red в советник. Т.е самому задавать значение от которого будем отскакивать, а не держаться в рамках заданных старым индикатором. Не 1=61.8, 2=50 и т.д., а именно само значение 61.8, 92, 123 и т.п.
В разных валютах эти значения отскока разные, от 61.8 отскакивают единицы и очень очень редко с очень нестабильным результатом, для USDCAD к примеру лучше 95. Для евро другие. Вот поэтому этот уровень очень важен как переменный параметр.
Со старым индикатором такой фокус не пройдет, увы.
—
Кажется работает.
Но при выборе «0 — стопы на одной цене» ставит стопы отложек чуть больше стопа первого рыночного ордера на величину спреда.
— Спасибо за работу, прощу прощения за такие придирки, хочу довести реально отличный советник и одну из немногих действительно рабочих идей до конца. Я вижу что это реально алмаз, и с Вашей помощью мы его доведем до бриллианта.
19 pacak Автор Сообщений: 552 - варвар Andre
Редактирован: 18 января 2016, 05:44
35 AM2 Сообщений: 16412 - Андрей
Сейчас буду думать как это сделать.
Скидывайте новый индикатор.
35 AM2 Сообщений: 16412 - Андрей
индикатор MA_Chanels_FIBO_Pepelac
19 pacak Автор Сообщений: 552 - варвар Andre
Теперь нужен новый алгоритм. Как будем узнавать что закрылся ордер из серии?
35 AM2 Сообщений: 16412 - Андрей
Я разработал данный алгоритм, а теперь хочу посмотреть сколько времени и сил уйдет у вас на это, чтобы вы подумали в следующий раз перед тем как изменять ТЗ.
35 AM2 Сообщений: 16412 - Андрей
Прошу извинить, я виноват.
К сожалению моих сил, а главное моих знаний и ума не хватит написать на MQL такой алгоритм. Я индикатор то когда изменял, почти весь день изучал на примерах и потом тестировал чтобы правильно работал, а такой советник мне точно не по зубам. Спасибо Вам, я поступил опрометчиво.
Больше ТЗ изменяться не будет, этот алгоритм самая золотая середина, то что нужно, он просто шикарно выполняет свою функцию
А дополнение к уже имеющимся функциям советника можно озвучить? Алгоритм ТЗ при этом не меняется, просто выставляется определенным образом безубыток. Если будет трудоемко, тогда фиг с ним, просто устойчивость стратегии по нему будет существенно выше за счет очень маленького кол-ва стопов. В любом случае, можно послать меня нафиг в любой момент
19 pacak Автор Сообщений: 552 - варвар Andre
Сейчас ставит все стопы на один уровень. И огромная просьба не изменять ТЗ в процессе выполнения.
35 AM2 Сообщений: 16412 - Андрей
Пишите подробнее какие доработки.
35 AM2 Сообщений: 16412 - Андрей
Безубыток (true/false)
true:
Если цена прошла в прибыльную сторону Х пунктов от цены первого рыночного ордера, удаляем все отложки, а на открытых ордерах выставляем стопы в бу на едином уровне Y пунктов от цены первого рыночного ордера.
false:
Пропускаем это условие, безубыток не включается.
— Параметры:
Безубыток: true/false
Включение безубытка на уровне (считая от цены первого ордера): X пунктов
Пунктов безубытка (считая от цены первого ордера): Y
Картинка:
Разбирая результаты тестирования, примерно 80% стопов на USDCAD можно было бы избежать, включая такой безубыток на уровне примерно 65-70 пунктов для этой пары.
19 pacak Автор Сообщений: 552 - варвар Andre
В этом советнике уже столько всего. В следующем месяце в новом топике опишите ТЗ, если советник будет простым, сделаю.
35 AM2 Сообщений: 16412 - Андрей
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
35 AM2 Сообщений: 16412 - Андрей
Поищу ошибки нынешнего варианта. Еще раз СПАСИБО!
Вы дали автоматическую жизнь моей стратегии!
P.S. Для Oxy:
да, эта добавление действительно очень стоящая штука, т.к. очень часто цена проходит от первого ордера на определенную величину. Подождем, что-нибудь придумаем. Рынок от нас не убежит Редактирован: 21 января 2016, 01:09
19 pacak Автор Сообщений: 552 - варвар Andre
Иногда возникают ситуации, когда ордер закрывается по тейку в зоне сигнала на следующее открытие, и сразу открывается другая сетка. Ордера предыдущей сетки при этом НЕ закрываются, т.к. условие закрытия уже не срабатывает!
Долго думал и решал, что не так. По прошествии суток адских мозговых усилий с внедрением каких только извращений, в т.ч. и применения задержек исполнения и тэдэитэпэ… Пока до меня не дошло просто сесть и пошагово в мозгу прокрутить написанный код. И о чудо! На меня снизошло озарение! Как всегда, все гениальное — ПРОСТО!
Закрытие ордера происходит по этому условию:
Итак, решение проблемы:
ПЕРЕМЕЩАЕМ это условие в начало функции void OnTick()
Вот как должен получиться правильный рабочий вариант
Таким образом сначала после тейка удаляются ордера, а потом уже происходит проверка сигнала и выставление сетки. Редактирован: 21 января 2016, 00:27
19 pacak Автор Сообщений: 552 - варвар Andre
Отработка шикарного сигнала USDCAD 20.01.2016
Уффф. Сигнальчик горячий, с пылу с жару, прям свежий свежий… А запах… Понюхайте: Мммм… Так вкусно пахнет профитом… Три сотни пунктов за час и вы несетесь радостно на Пепелаце как господин Пэжэ!
19 pacak Автор Сообщений: 552 - варвар Andre
35 AM2 Сообщений: 16412 - Андрей
Я брал эту версию и тестировал, потом внося изменения. У меня работала и в начальном варианте, я не знаю почему не работает у вас
Прикрутил значение BUpoint — кол-во пунктов безубытка.
Потом выложу свой промежуточный вариант, надо кое-что поправить и улучшить
19 pacak Автор Сообщений: 552 - варвар Andre
Открылась сетка по сигналу. Закрыли терминал МТ4.
При перезапуске терминала советник модифицирует стоп у имеющегося в рынке ордера и удаляет все отложки сети:
2016.01.21 22:17:25.271 Custom indicator MA_Chanels_FIBO_Pepelac USDCAD,M5: loaded successfully
2016.01.21 22:17:25.291 Expert pepelats_am2_5_or USDCAD,M5: loaded successfully
2016.01.21 22:17:26.989 '10116295': login on Alpari-Nano through nano.ru.0a (ping: 48.98 ms)
2016.01.21 22:17:27.886 '10116295': login datacenter on Alpari-Nano through nano.ru.0a (ping: 48.98 ms)
2016.01.21 22:17:28.000 '10116295': previous successful authorization performed from IP
2016.01.21 22:17:32.001 '10116295': modify order #1745474749 buy 0.01 USDCAD at 1.4318 sl: 1.4198 tp: 1.4418 -> sl: 0.0020 tp: 1.4418
2016.01.21 22:17:32.183 '10116295': order #1745474749 buy 0.01 USDCAD at 1.4318 was modified -> sl: 0.0020 tp: 1.4418
И после этого порезались все отложки:
2016.01.21 22:17:32.183 '10116295': delete pending order #1745474752 buy limit 0.01 USDCAD at 1.4258 sl: 1.4198 tp: 1.4358
2016.01.21 22:17:32.383 '10116295': pending order #1745474752 was deleted
2016.01.21 22:17:32.383 '10116295': delete pending order #1745474751 buy limit 0.01 USDCAD at 1.4278 sl: 1.4198 tp: 1.4378
2016.01.21 22:17:32.593 '10116295': pending order #1745474751 was deleted
2016.01.21 22:17:32.613 '10116295': delete pending order #1745474750 buy limit 0.01 USDCAD at 1.4298 sl: 1.4198 tp: 1.4398
2016.01.21 22:17:32.795 '10116295': pending order #1745474750 was deleted
19 pacak Автор Сообщений: 552 - варвар Andre
Решено наполовину!Решено полностью! Редактирован: 22 января 2016, 20:36
19 pacak Автор Сообщений: 552 - варвар Andre
В индикаторе MA_Channels_FIBO_Pepelac значение fibo_red по умолчанию для канадской пары должно быть равно 95.
Добавлен параметр BUPoint (кол-во пунктов безубытка)
На вопросы по стратегии в этой теме отвечать не буду. Она будет разобрана позже отдельной темой, после написания конечной версии советника.
Спасибо АМ2 за роботизацию Пепелаца!
КУ ТОВАРИЩИ!
19 pacak Автор Сообщений: 552 - варвар Andre
1. Трал: перенос в БУ на N-п. от линии ордера при проходе цены определённого кол-ва в п. от ордера, и от следующего по ходу уровня каналов (Фибо).
Далее тралится с указанным отступом от линии цены, либо также — от следующих уровней канала.
2. Закрытие по условиям:
2.1. Закрытие прибыльного ордера при открытии встречного ордера, убыточные — не закрываются.
2.2. Закрытие при достижении указанного уровня канала по ходу ордера.
3. Объединение в одну линию и модификация СЛ(стоп-лосс) и ТП(тейк-профит) от ордеров в сетке, при открытии новых ордеров в ту же сторону с первоначальным — если идёт тренд.
Трал в этом случае тралит общие линии СЛ и ТП.
4. Локирующий ордер на отрицательный ордер или усреднённую линию стопов нескольких ордеров в сетке вместо СЛ(стоп-лосса).
Т.е. выставляются вместо СЛ Стоповые ордера(buy stop или sell stop).
Лимитное кол-во шагов в сетке задаётся с учётом ММ(лотность, просадка и р-р депозита).
— Локи далее разруливаются либо руками, либо по отдельному алгоритму доп. советником, либо доп. модулем тут.
Смысл в том, чтобы не снижать размер депозита, оставлять шанс на компенсацию и разруливать локи отдельно, параллельно со следующими ордерами от советника,
иногда — закрывая и открывая ордера с учётом ордеров в локе как частично, так и по их средним линиям — линиям всех/части ордеров Селл и ордеров Бай.
5. Шаг отложек сделать динамическим,
напр. от соотношения (динамики) изменения цены по закрытию свечей последующих к предыдущим, от закрытия свечей,
от каналов ATR, ADR, от изменения линий каналов Фибо.
6. Добавить динамический трал на открытие ордеров по движению цены дальше уровня крайнего канала (ловля пиков).
Т.е. когда цена пересекает крайнюю линию канала (красная), открывать ордер,
а) если цена прошла дальше на N-п.,
б) если цена на последующей свече разворачивается — идёт откат от предыдущего максимума.
в) либо по открытию ордера на закрытии каждой свечи, «за красной линией», если её Максимум(бай)/минимум(селл) был выше(бай)/ниже(селл) предыдущего. Редактирован: 6 февраля 2016, 12:35
11 preasto Сообщений: 445
19 pacak Автор Сообщений: 552 - варвар Andre
Присмотритесь пож. к идее сделать функцию:
4. Локирующий ордер на отрицательный ордер или усреднённую линию стопов нескольких ордеров в сетке вместо СЛ(стоп-лосса).
Т.е. выставляются вместо СЛ Стоповые ордера(buy stop или sell stop).
— локи поставленные на границах каналов, да, и, в середине канала, перекрывают друг-друга и дают возможность на разворотах закрывать их в БУ и даже плюс*.
Снижая существенно потери от СЛ.
Очень далеко ушедшее по безоткатному тренду, также может висеть неск. дней до коррекции, либо закрыто руками — как СЛ (так СЛ был бы уже давно...).
Свопы с лихвой перекрываются профитом на тех же ордерах локов закрываемый уже в нужном направлении и на новых ордерах.
Зато депозит сохраняется максимально и даётся возможность разрулить ситуацию в прибыль.
— *закрытие локов ведётся уже руками, по старшим ТФ, либо по ситуации в логике самого советника,
когда, допустим, появляется установленный профит по всем ордерам и все закрываются,
либо отд. советниками-разруливателями.
Вопрос программирования разруливания локов надо пока оставить на след. этап.
И, поставив лок вместо СЛ, сов. продолжает работу далее, открывая новые ордера по ТС. Редактирован: 6 февраля 2016, 12:34
11 preasto Сообщений: 445
«OrderSend error 130»
9 yurez83 Сообщений: 34 - Юрий
Здесь нужно учитывать размер стопа, сделать его побольше.
35 AM2 Сообщений: 16412 - Андрей
ставит вместо 5 отложек почему то 2, а остальные ошибка 130.
скрин:
9 yurez83 Сообщений: 34 - Юрий
9 yurez83 Сообщений: 34 - Юрий
6 mops0000 Сообщений: 31
К примеру закрылся ордер, тот, с которого стартовала сетка, первый рыночный (по стопу или тейку, неважно), и после этого события отдыхаем N-цать минут, и как они истекут, уже ждем наступления сигнала и снова в бой
19 pacak Автор Сообщений: 552 - варвар Andre
11 preasto Сообщений: 445
8 WolfTraderS Сообщений: 142
Торговля против тренда, это плохо
Все
14 beton2011 Сообщений: 895
16 cerber04 Сообщений: 409
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий