[open source] [Советник] MindTheGap v1.17

От Silentspec, 26 августа, 2015 в Лаборатория ProfitFX

Автор#1

35d237b017a413c08d88397ca1f6cb23 jpg



MindTheGap



Год выпуска: 2015
Валютные пары: Все мажоры
Таймфрейм: М5
Версия: 1.17
Описание:
Спойлер

Простенький советник на тему гэпов. Алгоритм наипростейший.
1. В понедельник в 00:05, на открытии рынка советник смотрит на свечи и ищет гэп с определенными параметрами:
а) Расстояние от Low пятничной свечи до Open понедельника должно быть не меньше MinGap и не больше MaxGap пунктов для покупок и от High до Open - для продаж.
Если не находит нужного гэпа и бог с ним, ждем следующего понедельника.
2. Если используется трендовый фильтр UseTrendFilter=true, Close последней закрытой свечи (00:05) будет сравниваться с МА с периодом MAPeriod. Если цена Close выше МА, рассматриваются только продажи и наоборот для покупок. Если фильтр не прошли - до следующего понедельника.
3. С этого момента все отсеивающие фильтры пройдены, сделка скорее всего будет. Вопрос - когда?
4. Проверяем расстояние от текщей цены до Low или High последней свечи пятницы. Оно должно быть также не меньше MinGap. Если меньше, переходим в режим ожидания.
5. Если гэп найден, фильтр пройден, советник смотрит, куда закрылась первая понедельниковая свеча. Далее я буду рассматривать пример для покупок.
6. Свеча закрылась вниз.
6.1. Ищем возможность поставить отложку на цену открытия понедельника. Если маловато расстояние, переходим к пункту 6.2.
6.2. Проверим, можем ли войти по рынку. Для этого у нас есть три осциллятора, включаются UseWPREnter=true, UseCCIEnter=true, UseDeMEnter=true. Если все три выключены - советник просто не будет проверять их показания, и в случае невозможности поставить отложку будет входить по рынку. Если же хотя бы один из осцилляторных фильтров включен, осуществляется проверка по уровням WPREnterLevel, CCIEnterLevel, DeMEnterLevel.
Если фильтры не пройдены - переходим в режим ожидания.
6.2.1. Сразу после осцилляторных фильтров мы проверяем спред. Если текущий спред меньше MaxSpread, происходит вход по рынку, если больше - переход в режим ожидания. Кстати, сравнивается текущее среднее значение спреда на периоде 100 свечек.
6.3. Если запороли все проверки (хотя бы одну), переходим в режим ожидания.
7. Свеча закрылась вверх.
7.1. Тут у нас отложки не предусмотрены, только проверки осцилляторами и на максимальный спред.
7.2. Если что-то не прошли, переходим в режим ожидания.
8. Работа в режиме ожидания. В данном режиме советник на каждом тике проверяет следующие условия:
8.1. Осцилляторный фильтр, разобранный выше.
8.2. Проверка на спред.
8.3. Режим ожидания сигнала работает ровно CandlesToWait свечей. При превышении количества свечей ожидания забиваем на сигнал.
9. При входе по рынку отложки удаляются. При активации отложки режим ожидания отменяется.
10. При открытых по рынку позициях на каждом тике происходит проверка условий для выхода по тем же осцилляторам. При этом если UseSeparateExit=true, достаточно, чтобы хотя бы один из индикаторов достиг уровня DeMExitLevel, CCIExitLevel или WPRExitLevel соответственно. Если false - все они одновременно должны дойти до нужных уровней. При этом, если включен ExitInLoss, советник будет выходить из сделки при появлении условий на выход даже в убытке!. Если ExitInLoss выключен, для выхода в сделке должна быть накоплена определенная минимальная прибыль, которая должна быть не меньше, чем MinExitTP от тейк профита ордера.
11. Тейк профит ордера вычисляется просто:
11.1. У нас есть TP в пунктах, оно по умолчанию и используется.
11.2. Но если вдруг ТП меньше, чем MinTP от гэпа (например, 0.5 от гэпа), то для ТП используем MinTP от гэпа.
11.3. Если так получилось, что ТП больше, чем MaxTP от гэпа (например, 2.5 от гэпа), то для ТП используем MaxTP от гэпа.
12. Стоп тупо задан в пунктах переменной SL.
13. ММ переключается переменной LotVariant, выбор невелик - либо фиклированный лот FixLot, либо фиксированный же риск Risk в процентах от депозита.
14. В ордерах используется контроль проскальзывания slippage, для всех ордеров выставляются Magic. Если Magic=0, советник сгенерирует уникальный мэджик для конкретной пары конкретного графика конктретного терминала конкретного счета конкретного брокера - ну, короче, вы поняли. Ордера будут открываться NumOfTry раз в случае каких-то неполадок - пропал интернет, брокер заглючил и т.д. и т.п.
15. Все позиции тралятся простым тралом (включается TralOnPips), на расстоянии TrailingStop от текущей цены.
При этом если включена TrailingFromBE, тралить будет только из безубытка, если выключена - от стоплосса.

Все настройки вводятся в старых пунктах, далее советник со "значностью" разберется сам.

Сет в принципе более менее годится для всех пар, но оптимизировался под GBPUSD. Поэтому думаю стоит пооптить каждую пару в отдельности. Оптимизировал я с 2007 по 2014, с 2000 по 2007 - бэквард тест, с 2014 по 2016 - форвард тест. Как видите, результаты неплохие. Сэт для оптимизации прилагаю.

Версия 1.07
1. Добавлена поддержка ECN счетов. ECNAccount - включить/выключить.
2. Выключаемые комментарии UseComments.
3. Добавлена возможность снимать скриншот UseSnapShot
4. Добавлена возможность отсылки сообщений на почту UseSendMail
5. Добавлена возможность отсылки Push-уведомлений UseSendPush
6. Теперь ММ адаптируется соответственно валюте депозита (лот рассчитывается правильно для йен, евро, рублей, фунтов, австралийских долларов).
7. Добавлен вход при просадке уменьшенным лотом Allow_Second_Open_Trade
8. Добавлена информационная панель на график UsePanel:
bfa3e0c8a66baa61463448c954de712f jpg
9. Вместо сравнения с максимальным спредом можно использовать сравнение со средним спредом UseMedianSpread
10. Выведено время ожидания между попытками открыть/закрыть/модифицировать позицию: SleepTime - минимум, SleepMaximum - максимум, в секундах.
11. Добавлены попытки для закрытия ордера (проглядел).
12. Добавлено логирование: LogSpread - спреда, LogSlippage - проскальзывания. Файлы хранятся в папке каталог данных/MQL4/files для работы в реальном времени и каталог данных/tester/files - для тестов. Открываются в экселе. LogToSeperateFile - писать логи в файл, false - только в журнал

Версия 1.08
1. Комментарии поправлены
2. Логирование исправлено
3. Проблемы с тикетами исправлены
4. Добавлены повторы в трейлинг стоп
5. Исправлены некоторые мелкие ошибки
6. Добавлен безубыток UseBE, на уровне BELevel пунктов выставляется стоп в +BEPlusPips пунктов.
7. Для ярых экспериментаторов добавлена опция не фильтровать гэпы по времени, а брать все UseAllGaps.

Версия 1.09
1. Исправлен реконнект при обрыве связи с сервером.
2. Улучшена функция обработки ошибок (взял из бота, выложенного Oll в этой теме и подкорректировал под себя).
3. Добавил стоплевел. Если стоплевел брокер присылает нулевой, используется ручной стоплевел StopLevelManual. Если же и он нулевой, тогда используется 0.

По функционалу от лайт 1.08 не отличается, просто более подготовлена для реала.
Лайт 1.08 будет применяться для тестов и оптимизации - в ней вырезано все, что не нужно для тестов.
Версия 1.09 - для установки на реал.

Версия 1.10.
1. Убрал индикатор DeMarker совсем.
2. Вход осуществляется по WPR и CCI вместе. Без вариантов.
3. Выход - по WPR или CCI. Без вариантов.
4. При выходе в убытке добавил фильтр по М1 свечам. Последняя М1 свеча должна быть в сторону, противоположную ордеру.
5. Добавил в настройки цвета панели.




Тесты версии 1.17, 2000-2016 год:

Спойлер


9e724e07d3acaed488cf5784fab03c14 jpg

ММ
1fdcf6fef6a5b02de080a6215d0cdb13 jpg




Мониторинг в Роботесте (v1.17):

large jpg


Я вообще ни разу не обижусь, если мне кто нибудь скажет спасибо, которое булькает: R192371619200 или Z164579536516 (Silentspec)

MindTheGap_v1.12.mq4466 скач.
MindTheGap_v1.17_Full_Pack_2016.zip777 скач.

Изменено 12 июля, 2017 пользователем Pavel888

Автор#4
200px Clash LondonCalling jpg

а так то да, метрополитен навевает:))
Underground тобишь

Изменено 26 августа, 2015 пользователем Silentspec

Автор#5

Указал.
Сейчас работаю над сетами к боту, как будут готовы - можно начать тестирование. Очень рассчитываю успеть к открытию понедельника - может как раз и первые сделки случатся.
В этом боте тоже проблема с ецн счетами. Сегодня исправлю.

#6


Указал.
Сейчас работаю над сетами к боту, как будут готовы - можно начать тестирование.


Сеты интересующихся принимаются для сравнения? :">
Автор#7

Конечно! Собсна для того и тема - идеями, сетами и тестами улучшить бота и зарабатывать им на реальных уже счетах.

#8

на выходных продолжится Ежегодный симпозиум в Джексон Хоул.

в субботу выступают БА и ФРС.

есть шанс попрыгать на открытии. :)

Автор#9

Версия 1.07
1. Добавлена поддержка ECN счетов. ECNAccount - включить/выключить.
2. Выключаемые комментарии UseComments.
3. Добавлена возможность снимать скриншот UseSnapShot
4. Добавлена возможность отсылки сообщений на почту UseSendMail
5. Добавлена возможность отсылки Push-уведомлений UseSendPush
6. Теперь ММ адаптируется соответственно валюте депозита (лот рассчитывается правильно для йен, евро, рублей, фунтов, австралийских долларов).
7. Добавлен вход при просадке уменьшенным лотом Allow_Second_Open_Trade
8. Добавлена информационная панель на график UsePanel:
bfa3e0c8a66baa61463448c954de712f jpg
9. Вместо сравнения с максимальным спредом можно использовать сравнение со средним спредом UseMedianSpread
10. Выведено время ожидания между попытками открыть/закрыть/модифицировать позицию: SleepTime - минимум, SleepMaximum - максимум, в секундах.
11. Добавлены попытки для закрытия ордера (проглядел).
12. Добавлено логирование: LogSpread - спреда, LogSlippage - проскальзывания. Файлы хранятся в папке каталог данных/MQL4/files для работы в реальном времени и каталог данных/tester/files - для тестов. Открываются в экселе. LogToSeperateFile - писать логи в файл, false - только в журнал

На этом все пока. Старые сеты годятся.

MindTheGap_v1.07.ex468 скач.

#10

Советник интересный, похоже есть потенциал. С первого взгляда стиль работы напоминает предыдущий (Laguerre),
такой-же плавный график и такие-же внезапные большие просадки.


Версия 1.07
2. Выключаемые комментарии UseComments.



А что эта настройка выключает?
Даже при UseComments = false в логе куча сообщений от советника.

23:54:15 2014.03.03 00:08 MindTheGap v1.07 EURUSD,M5: Прошли фильтр по индикаторам.
23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: Сработал стандартный трейлинг стоп

Как бы их выключить, чтобы не было тормозов при оптимизации?

Есть непонятки с тикетами при закрытии ордеров.

23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: unknown ticket 121 for OrderClose function
23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: OrderClose error 4108

Ждем исправленную версию и можно запускать оптимизацию.
#11


Советник интересный, похоже есть потенциал. С первого взгляда стиль работы напоминает предыдущий (Laguerre),
такой-же плавный график и такие-же внезапные большие просадки.


Версия 1.07
2. Выключаемые комментарии UseComments.



А что эта настройка выключает?
Даже при UseComments = false в логе куча сообщений от советника.

23:54:15 2014.03.03 00:08 MindTheGap v1.07 EURUSD,M5: Прошли фильтр по индикаторам.
23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: Сработал стандартный трейлинг стоп

Как бы их выключить, чтобы не было тормозов при оптимизации?

Есть непонятки с тикетами при закрытии ордеров.

23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: unknown ticket 121 for OrderClose function
23:54:15 2014.03.03 01:00 MindTheGap v1.07 EURUSD,M5: OrderClose error 4108

Ждем исправленную версию и можно запускать оптимизацию.

В общем надо подумать, как избежать, именно,внезапных и больших просадок ?
#12


Silentspec, есть просьба добавить автономную опцию стандартного б/у (BELevel, BEAddPips) - с тралом они не подерутся.
Трал не заменяет БУ ни полностью, ни корректно: TralOnPips по смыслу и фактически совсем не BELevel - а TrailingStop не должен и не может ни подменять, ни просто быть хоть как-то завязанным на разность BELevel - BEAddPips.
Ни один из этих 4-х параметров не должен и не может имитировать какой-то другой или их комбинацию.

Аналогичная просьба об опции Б/У и по MindTheGap, и по Лагеру - если последний будет восстанавливаться.
Ну по MindTheGap, может, и не получится, там и так прилично накручено - но хоть обдумайте, там же основные разборки вроде с ТР.


Дублирую, чтобы просьба не потерялась между топиками.



В общем надо подумать, как избежать, именно,внезапных и больших просадок ?


По большому счету, мы все всегда только об этом и думаем... :)

Изменено 29 августа, 2015 пользователем Старик

#13

Гэпы по понедельникам конечно случаются чаще всего.А если гэп в течение недели то бот его пропустит?


Добавлено: 29-08-2015 05:06:56

Может быть отслеживать ГЭПы надо круглосуточно,а не только лишь по понедельникам? Зачем лишать себя прибыльных ситуаций?

Изменено 29 августа, 2015 пользователем duma

#14


Гэпы по понедельникам конечно случаются чаще всего.А если гэп в течение недели то бот его пропустит?


Добавлено: 29-08-2015 05:06:56

Может быть отслеживать ГЭПы надо круглосуточно,а не только лишь по понедельникам? Зачем лишать себя прибыльных ситуаций?
Надеюсь Сайлент извинит, что в его тему влез - просто валялся бот по торговле любых гэпов, даже внутри М1 свечи. Тестировать только на тиках (99%)! Данный бот поддерживать не буду, поэтому в исходнике.

0ll_e_Proba_impuls.mq4143 скач.

#15

Какие есть нюансы в торговле на гэпах?

#16


Какие есть нюансы в торговле на гэпах?

если ко мне вопрос, то я его на реал не ставил - нюансов не знаю, кроме спреда...
Выложенный бот для тестера - потестировать и успокоиться...
#17


Какие есть нюансы в торговле на гэпах?


их миллион, имхо.

По большому счету, все гэпы новостные: что открытия понедельника - что внутри недели.
И практически все гэпы закрываются, вопросы лишь с какой амплитудой и как быстро.

Совсем (годами) не закрытых гэпов на графике очень мало - но и такие есть.
А в том же фунте достаточно часто случаются новостные гэпы с последующим движением 100-300 пипсов в направлении импульса, не закрываемые неделями.

Понедельничные гэпы закрываются практически всегда и очень часто еще до нуля GMT понедельника - так что шанс поймать стоп ограничен.
На новостных гэпах внутри недели, перед закрытием гэпа, торги могут произойти с существенно большей амплитудой и шанс поймать стоп, пытаясь отторговать закрытие гэпа, намного выше.

Имхо и не 100% истина, понятное дело.
Автор#18

Версия 1.08
1. Комментарии поправлены
2. Логирование исправлено
3. Проблемы с тикетами исправлены
4. Добавлены повторы в трейлинг стоп
5. Исправлены некоторые мелкие ошибки
6. Добавлен безубыток UseBE, на уровне BELevel пунктов выставляется стоп в +BEPlusPips пунктов.
7. Для ярых экспериментаторов добавлена опция не фильтровать гэпы по времени, а брать все UseAllGaps. Не забудьте скачать железобетонные котировки, в которых нет разрывов то техническим причинам, иначе на тестах будет грааль. Как понять, чем вызван гэп не в понедельник, действительно ли он был? Понятия не имею, но возможно поможет сравнение котировок у десятка разных источников (если везде есть, значит и правда был). Скажу что знаю точно - у дукасов в котирах "не гэпы" составляют процентов 50. Так что дерзайте, исследуйте, склеивайте котиры. Я как то занимался этим, клеил евробакс. Ушло примерно 152 часа, по 4 часа в день - примерно 38 дней. В любом случае, буду рад, если в итоге поделитесь котирами.

MindTheGap_v1.08.mq491 скач.

#19

Это, парни, рай для пользователей: навороченный бот с открытым кодом - только, ребята, зарабатывайте и делитесь наработками.

Silentspec - Реально молодец! Браво! =d> =d> =d>

Автор#20

Я пока только начинаю изучать скальперов и не так уж и много видел хороших. Поэтому если есть еще какие то интересные фишки, я бы добавил. Но не знаю, какие:)
Бот долго оптимизируется из-за этих всех наворотов, поэтому я сделаю лайт версию без комментариев, без всяких фишек - чисто для оптимизации.
Чего еще не хватает - функции расшифровки ошибок. Обработка есть, вывода названий ошибки нету. Нужно ли?

#21


Версия 1.08



Еще одна "детская болезнь":

2013.02.04 02:00 MindTheGap v1.08 EURUSD,M5: OrderModify error 130

При модификации (и закрытии) надо проверять уровни стопа и заморозки.
Либо это глюк в вычислении размера стопа.

Добавлено: 29-08-2015 13:28:04


Чего еще не хватает - функции расшифровки ошибок. Обработка есть, вывода названий ошибки нету. Нужно ли?



Хуже от этого точно не будет.
Тем более, что в коде делается все одной строчкой.
ErrorDescription(GetLastError());
Зато при появлении любой ошибки отпадает надобность лезть в help по MQL.

Изменено 29 августа, 2015 пользователем ie67

Автор#22

Вроде исправил, ошибка из-за БУ была.
И лайт версия - для ускорения оптимизации.

MindTheGap_Light_v1.08.mq456 скач.
MindTheGap_v1.08.mq459 скач.

Изменено 29 августа, 2015 пользователем Silentspec

#23



Версия 1.08



Еще одна "детская болезнь":

2013.02.04 02:00 MindTheGap v1.08 EURUSD,M5: OrderModify error 130

При модификации (и закрытии) надо проверять уровни стопа и заморозки.
Либо это глюк в вычислении размера стопа.

Пробовать в боте корректно отрабатывать это обязательно надо - но, увы, далеко не все ДЦ стабильно выдают эту инфу, у многих боты видят нули.
Такие "скрытые" ограничения: ДЦ их применяет - но на запрос бота ответ нули.
Народ много писал об этом и жаловался.

Добавлено: 29-08-2015 13:40:22


Вроде исправил, ошибка из-за БУ была.
И лайт версия - для ускорения оптимизации.


Большая разница в длине кода 1.08 полной между выложенной утром и сейчас - утром 76.16КБ, сейчас 68.16кб.

Не мог ошибиться и сейчас повторно выложить не 1.08 полный фулл, а некую промежуточную версию 1.08?
Или это глюк форума?

Изменено 29 августа, 2015 пользователем Старик

#24



Какие есть нюансы в торговле на гэпах?


их миллион, имхо.

По большому счету, все гэпы новостные: что открытия понедельника - что внутри недели.
И практически все гэпы закрываются, вопросы лишь с какой амплитудой и как быстро.

Совсем (годами) не закрытых гэпов на графике очень мало - но и такие есть.
А в том же фунте достаточно часто случаются новостные гэпы с последующим движением 100-300 пипсов в направлении импульса, не закрываемые неделями.

Понедельничные гэпы закрываются практически всегда и очень часто еще до нуля GMT понедельника - так что шанс поймать стоп ограничен.
На новостных гэпах внутри недели, перед закрытием гэпа, торги могут произойти с существенно большей амплитудой и шанс поймать стоп, пытаясь отторговать закрытие гэпа, намного выше.

Имхо и не 100% истина, понятное дело.

Наверняка никакой статистики по этой теме нет.
#25


Пробовать в боте корректно отрабатывать это обязательно надо - но, увы, далеко не все ДЦ стабильно выдают эту инфу, у многих боты видят нули.
Такие "скрытые" ограничения: ДЦ их применяет - но на запрос бота ответ нули.
Народ много писал об этом и жаловался.



Мы об этом уже говорили в теме Laguerre. Реальная работа - отдельный вопрос, там способы борьбы с ДЦ другие.
А в тестере с корректно прописанными данными сов должен работать без ошибок.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025