Смотри, как бесплатно скачать роботов
Find us on Twitter!
Join our fan page
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

SelfLearningExperts - эксперт для MetaTrader 5

Просмотров:
12628
Рейтинг:
(53)
Опубликован:
2012.09.18 17:05
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Эксперт переписан с MQL4, автор lsv, ссылка на оригинал - https://www.mql5.com/ru/code/9431.

Принцип работы

Эксперт работает по тикам, таймфрейм, на котором работает эксперт не важен. По мере изменения цены формируются паттерны определяющие текущую рыночную ситуацию. Формируется несколько паттернов с разными параметрами. Количество паттернов задается переменной Nidelt. Для первого паттерна используется параметр dstop, для второго dstop*2 и т.д. до dstop*N, где N - количество паттернов. Если цена изменилась на величину dstop*N, фиксируется новая точка паттерна, самая старая точка удаляется, таким образом, паттерн всегда имеет длину Nidelt точек. Чем больше значение параметра паттерна, тем на большую глубину он охватывает историю. Получается, что рынок одновременно отслеживается на разную глубину истории.

При изменении какого-то паттерна (изменении рыночной ситуации), открывается виртуальная позиция. Здесь стоит задача связать позицию с определенной рыночной ситуацией. Это делается следующим образом: паттерн выраженный последовательностью ценовых значений перекодируется в бинарную последовательность, если значение одной точки больше значения предыдущей точки, это 1, иначе - 0. По такой последовательности вычисляется уникальный номер паттерна (по сути - перевод двоичного числа в десятичное).

Может открываться от одной до трех виртуальных позиций с различными стоплоссом/тейкпрофитом, значение стоплосса и тейкпрофита одинаковое. Величина стоплосса/тейкпрофита определяется параметром dstop, для одной позиции dstop*1, для другой dstop*2 и т.д. Если цена пойдет вверх на величину стоплосса/тейкпрофита, это добавит величины к вероятности движения вверх для этого паттерна, если вниз - то повысит значение вероятности вниз. Открываются свои виртуальные позиции для каждого сочетания трех параметров: параметр паттерна, номер паттерна (его форма) и для каждого из значений стоплосса/тейкпрофита. Так же, для каждого из этих сочетаний, по результатам виртуальной торговли, вычисляется вероятность движения вверх или вниз.

Если по какому-то сочетанию трех параметров (параметр, номер, стоплосса/тейкпрофита) произведено не менее 10-ти виртуальных сделок, то при появлении на рынке такой же ситуации (выявлен паттерн определенного параметра и номера) может открываться позиция с направлением соответствующим вероятности вычисленной на основе этой статистики и соответствующей величиной стоплосса/тейкпрофита.

Для накопления статистики может потребоваться значительное время, как пишет автор эксперта, может потребоваться несколько недель. Процесс сбора статистики можно ускорить за счет использования тестера. Однако, изменения цены в тестере и реальном рынке могут значительно отличаться, автор рекомендует поступить следующим образом: обучить эксперта в тестере, затем запустить на демосчете примерно на неделю. Если на демосчете эксперт покажет положительные результаты (при этом он еще немного подучится), то использовать его на реальном счете.

Подготовка эксперта

Первым этапом подготовки эксперта к работе будет оптимизация его параметров: Nidel, Nstop, dstop, forg, Probab, NN, delta. На этом этапе оптимизация выполняется с выключенными параметрами ReadHistory и SaveHistory. После того, как будет найдено приемлемое сочетание параметров, следует провести одно тестирование с SaveHistory=true. Затем, запустить эксперта на счете с ReadHistory=true - эксперт сразу начнет работу, так как накопил достаточное количество статистики в тестере. При работе на счете рекомендуется включать SaveHistory, что бы по мере переучивания эксперта данные сохранялись автоматически и эксперт всегда был готов к работе в случае его перезапуска.

При SaveHistory в тестере, по окончанию тестирования данные обучения сохраняются в файл, файл имеет имя FD_[Symbol], если эксперт работал на EURUSD, файл будет иметь имя «FD_EURUSD», если на GBPUSD – «FD_GBPUSD» и т.д. Файлы сохраняются в папке Files - общей папке данных всех терминалов. Найти общую папку данных можно через главное меню MetaEditor’а – Открыть общую папку данных. Из этой же папки данные считываются при ReadHistory.

Кроме сохранения результатов обучения, эксперт сохраняет еще два файла, которые нужны ему в процессе торговли. Файлы имеют имена: FDlast_buy[Symbol][TimeFrame], и FDlast_sell[Symbol][TimeFrame]. На эти файлы не следует обращать внимания.

Единственная зависимость от таймфрейма у эксперта – периодичность сохранения данных обучения и минимальное время между виртуальными сделками, оно равно длительности двух баров, так что, вероятно некоторое различие в результатах работы эксперта на разных таймфреймах.

На изображении показаны результаты тестирования эксперта за последний месяц на EURUSD M15 с настройками по умолчанию.

 

Параметры

  • ReadHistory - Чтение сохраненной истории обучения.
  • SaveHistory - Сохранять историю обучения. При работе в тестере история сохраняется по завершению тестирования, при работе на счете - регулярно, по мере переобучения.
  • Lots - Объем позиции.
  • Nidelt - Количество различных паттернов, не более 30.
  • Nstop - Количество параметров виртуальных позиций (различных значений стоплосса и тейкпрофита, стоплосс и тейкпрофит равны), 1, 2 или 3.
  • dstop - Шаг изменения параметров виртуальной позиции (стоплосса и тейкпрофита).
  • forg - Скорость забывания результатов обучения, значение должно быть немного больше 1.
  • Probab - Уровень вероятности определенный по результатам обучения при котором выполняется открытие позиции.
  • NN - Размер паттерна, не более 12.
  • delta - Шаг изменения параметра паттерна.
  • ReplaceStops - Модифицировать стоплосс/тейкпрофит при новых сигналах открытия. Перенос стоплосса/тейкпрофита выполняется только по направлению позиции.
  • Trailing - Уровень трейлинга, при значении 0 трейлинг выключен.
isNormalDist isNormalDist

Проверка на нормальное распределение по критерию Шапиро-Уилка

ElliottWaveMaker 3.0 ElliottWaveMaker 3.0

ElliottWaveMaker 3.0 - инструмент полуавтоматической разметки волн Эллиотта и построения вил Эндрюса - логичное продолжением версии 2.0, известной также под названием AutoElliottWaveMaker. В версии 3.0 исправлены незначительные ошибки, добавлена возможность построения вил Эндрюса и немного дополнительных функций.

iBBands_HTF iBBands_HTF

Полосы Bollinger Bands, которые можно располагать, зафиксировав таймфрейм, на котором они вычисляются, построенные в виде зигзага.

Artificial Intelligence Artificial Intelligence

Эксперт на однослойном линейном персептроне с четырьмя входами, анализирует данные индикатора Accelerator Oscillator