Рождение эксперта. Стохастическая Система.

ea_Stochastic_system — эксперт для MetaTrader 4

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.

Советник анализирует показания индикатора Stochastic, сигналом для покупок является пересечение основной и сигнальной линий индикатора в зоне перепроданности, сигналом для продаж является пересечение основной и сигнальной линий индикатора в зоне перекупленности.

  • Lots — Размер лота
  • StopLoss — Размер убытка в пунктах
  • TakeProfit — Размер прибыли в пунктах
  • TSProfitOnly — Тралить только профит
  • TStop_Buy — Размер трала в пунктах для покупок
  • TStop_Sell — Размер трала в пунктах для продаж
  • TrailingStep — Шаг трала в пунктах
  • MagicNumber — магический номер ордеров советника. Идентификатор ордеров.
  • NumberAccount — Номер торгового счёта
  • UseSound — Использовать звуковой сигнал
  • NameFileSound — Наименование звукового файла
  • ShowComment — Показывать комментарий
  • MarketWatch — Запросы под исполнение установки ордеров с уровнями прибыли и убытка методом модификации
  • Slippage — Проскальзывание цены
  • NumberOfTry — Количество торговых попыток

это проще и лучше , работает на м1 , евро-бакс , только по линиям (main и signal) без уровней (80 и 30) , main > signal=buy и наоборот .

это проще и лучше , работает на м15 , евро-бакс , только по линиям (main и signal) без уровней (80 и 30) , main > signal=buy и наоборот .

только ошибки нужно исправить.

только ошибки нужно исправить.

да покажите пож-та где ошибки

Корреляция между USDCHF и EURUSD

Индикатор показывает корреляцию USDCHF/EURUSD.

Vegas

ea_ADX_2MA_system

Стратегия построена на использовании индикаторов ADX и MA.

Step Back

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

Рождение эксперта. Стохастическая Система.

Общие правила:
1. Торговые сигналы рассматриваются с 7.00 до 15.00 EST. (с 13.00 по 21.00 CET(используется в MetaTrader4))
2. Безусловный выход из позиции в 16.00 EST (22.00 CET) (позиция не переносится на следующий день).
3. Закрытие первой части позиции производится с целью по прибыли в 10 пунктов.

Правила для длинной позиции:
1. Покупаем, когда линия %К, находившаяся ниже уровня 30, пересекает уровень 50.
2. Закрываем позицию на 2-ом снижении линии %К. Местоположение снижения не имеет значения.
3. Закрываем позицию, если линия %К пересекает уровень 40 (защита от движения в противоположную сторону).

Правила для короткой позиции:
1. Продаем, когда линия %К, находившаяся выше уровня 70, пересекает уровень 50.
2. Закрываем позицию на 2-ом повышении линии %К. Местоположение снижения не имеет значения.
3. Закрываем позицию, если линия %К пересекает уровень 60 (защита от движения в противоположную сторону).

Замечание: в эксперте, который мы будем писать, одновременно будут открываться два одинаковых ордера BUY или SELL. Это сделано для того, чтобы упростить алгоритм работы эксперта. Все дело в том, что при достижении профита в 10 пунктов предполагается, по правилам системы, закрыть часть позиции, а это проще сделать, если у нас открыто 2 одинаковых ордера. В этом случае достаточно закрыть один из ордеров, хотя, даже и этого нам не нужно делать, т.к. он закроется автоматически при достижении профита в 10 пунктов, потому что при открытии этого ордера мы выставим значение TakeProfit равным 10 пунктов.

Итак, приступаем к написанию эксперта на MQL4 для MetaTrader4. Я предполагаю, что Вы имеете начальные представления об MQL4. Если нет, то прочитайте справку по MQL4. И вообще, в любом случае начинать изучать язык лучше с прочтения справки по данному языку. Это же касается и языка программирования MQL4.

Открываем MetaEditor и создаем нового эксперта. Для этого идем в меню «Файл» -> «Создать…»-> выбираем «Советник». Далее вводим необходимую информацию, при этом поле «параметры» оставляем пустым. Параметры мы добавим по ходу написания эксперта. Жмем кнопку «Готово», и вот, что мы в итоге получим:

Я убрал некоторые закомментированные строки, которые автоматически вставляются редактором, исключительно для экономии места.

Система построена на основе Стохастика, поэтому нам потребуется получать значения этого индикатора с помощью встроенной функции iStochastic(). Добавляем три строчки, в которых происходят расчеты значений индикатора:

Так же объявляем внешние переменные, которые задают параметры Стохастика. Это позволит нам менять их во время тестирования:

Стохастик

Для вычислений нам потребуется именно три значения Стохастика т.к. нам нужно будет определять изменение направления в его движении. Причем заметьте, что мы вычисляем значения Стохастика только на 3-х уже сформировавшихся свечах предшествующих текущему, нулевому бару. Это важно, так как текущий бар при реальной торговле будет постоянно меняться, пока не примет окончательную форму с приходом нового бара.
На рисунке наглядно показано, какие значения принимают переменные stoch_1, stoch_2, и stoch_3. Текущее значение Стохастика, которое соответствует текущему, или нулевому бару, постоянно меняется с приходом новых тиков, т.к. сам нулевой бар изменяется. Все остальные свечи уже сформированы, и их можно использовать для расчетов, или же при принятии решений.

Так же нам потребуется знать текущий час, чтобы контролировать время входов и выходов:

Все приготовления сделаны, и наш эксперт принимает вид:

Теперь займемся правилами торговли. Реализуем следующее правило, вход в длинную позицию:

1. Покупаем, когда линия %К, находившаяся ниже уровня 30, пересекает уровень 50.

Эту проверку нужно производить только в том случае, если еще не открыто ни одной позиции, т.е. OrdersTotal()

В таком состоянии эксперта можно откомпилировать и запустить на выполнение, чтобы получить возможность проанализировать его работу. По крайней мере, тех функций и правил, которые в него уже заложены. Делается это очень просто. Берем график EUR/USD M5, накладываем на него индикатор Stochastic с теми же параметрами, что и индикатор, используемый в эксперте. Этот индикатор будет использоваться для определения значений Стохастика в определенные моменты времени. Затем запускаем эксперта на небольшом участке истории, например 3 дня и смотрим, какие сделки совершал эксперт и когда. При этом проверяем, используя график Стохастика, были ли на самом деле сигналы на открытие ордеров. Так же проверяем выполнение условий для закрытия ордеров. Все должно соответствовать тем правилам, которые были заложены в эксперта. Таким образом, вручную, проверяется работоспособность любого эксперта.

Если все хорошо, то следуем дальше. Нам еще надо реализовать выход с рынка при 2-ом снижении (повышении) Стохастика, ну и защитить от обратного движения.
Сначала поставим защиту от обратного движения Стохастика:

Здесь все просто: в этот блок заходим только, если OrdersTotal()>0, т.е. есть открытые ордера, иначе нам просто незачем туда заходить. Далее, с помощью функции OrderSelect(), выбираем первый ордер (порядковый номер 0), затем, если тип выбранного ордера — BUY, то проверяем значение Стохастика и, если оно меньше 40, то закрываем все открытые позиции:

Как видите здесь тоже все просто. В блоке используются две глобальные переменные – down и up. Переменная down это счетчик понижений, который считает, сколько понижений Стохастика прошло после открытия сделки. Переменная up считает, соответственно, количество повышений Стохастика. Эти переменные объявляются вместе с переменной K_level и должны обнуляться во время открытия сделки, поэтому в блоки открытия сделок добавляем строчки обнуления переменных down и up.

Идем дальше. В строке:

происходит проверка на наличие очередного понижения Стохастика, если таковое было, то счетчик увеличивается на 1 (оператор down++). Наличие понижения определяется очень просто – сравниваются значения Стохастика один бар назад, два бара назад и три бара назад, переменные — stoch_1, stoch_2 и stoch_3 соответственно. Понижение было, если stoch_3 stoch_1. Аналогично проверяется наличие повышения.

Переменная NWave содержит в себе значение равное количеству понижений (повышений) после которого необходимо закрывать сделку. Изначально, по правилам системы, это значение равно 2, но я решил иметь возможность изменять этот параметр во время тестирования эксперта. Поэтому переменная NWave объявлена как внешняя.

Далее, если число повышений (понижений) Стохастика равно NWave, то происходит закрытие ордеров с помощью функции CloseDirect(…). Эту функцию мы уже разбирали.

Но нас это не устраивает, поэтому внесем изменения в код и заменим строки:

Тем самым, добавив дополнительную проверку на отсутствие пересечения с линией 50 при входе в зону, где изменяется значение переменной K_level. Таким образом, теперь, прежде чем изменить значение переменной K_level мы, дополнительно проверяем, не было ли пересечения уровня 50.

Теперь все, и наш эксперт принял окончательный вид:

Теперь можно тестировать его, оптимизировать, изменять, словом делать с ним все, что душе угодно.

Весь текст эксперта в отдельном окне можно посмотреть здесь.

Надеюсь, написание эксперта Вам не показалось сложным. Все, на самом деле достаточно просто, если писать программу по частям, разделив ее на небольшие блоки. Такая, блочная структура программы, очень практична, т.к. отдельные блоки, с небольшими изменениями, можно будет использовать в будущем в других экспертах. Это несколько облегчает труд программирования на MQL4.

Простой советник по стохастику

Открываем позиции по стохастику, когда основная линия стохастика пересекает индикаторную линию и при этом стохастик находится в зоне перекупленности или перепроданности.

Вложения

shpandin

Прохожий

Andrejms

Активный участник

Открываем позиции по стохастику, когда основная линия стохастика пересекает индикаторную линию и при этом стохастик находится в зоне перекупленности или перепроданности.

cmillion

Гуру форума

sponsor

Местный житель

Paragon

Местный знаток

Открываем позиции по стохастику, когда основная линия стохастика пересекает индикаторную линию и при этом стохастик находится в зоне перекупленности или перепроданности.

Смотрю и сравниваю картинку с параметрами,возникает вопрос — что и какую роль для бота выполняют уровни стохастика LevelSell / LevelBuy?
Ну и как всегда у Вовы — отсутствие динамического Автолота. Почему?

cmillion

Гуру форума

Смотрю и сравниваю картинку с параметрами,возникает вопрос — что и какую роль для бота выполняют уровни стохастика LevelSell / LevelBuy?
Ну и как всегда у Вовы — отсутствие динамического Автолота. Почему?

Читайте внимательно описание.
» и при этом стохастик находится в зоне перекупленности или перепроданности.»
Зона перекупленности выше уровня LevelSell
зона перепроданности ниже LevelBuy
Не могу же я такие элементарные вещи разжовывать.

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

santasss

Новичок форума

Paragon

Местный знаток

Читайте внимательно описание.
» и при этом стохастик находится в зоне перекупленности или перепроданности.»
Зона перекупленности выше уровня LevelSell
зона перепроданности ниже LevelBuy
Не могу же я такие элементарные вещи разжовывать.

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

Володя,проблема в том,что мы смотрим на такие вещи по разные стороны призмы,стороны выгоды и истины.
Я полагал ,что после зоны ,при развороте и пересечении двух линий, открывать вход только после пробития уровней, а у Вас выходит значительно раньше.
На счет автолота Вы тут замутили,при Вашем варианте с лотом ,картинка куда красивее и дольше рисуется ибо если бот стартовал с удачного места то будет долгий тест,а автолот сразу налицо показывает скорый слив,если тому и быть.
Тем кто не предпочитает работать с автолотом,ищите в тесте место в днях,где показана максимальная просадка и с того места повторите, а там Вам решать,в реал или нет.
Успехов!*hi*

Источник https://www.mql5.com/ru/code/15123

Источник https://www.autoforex.ru/articles/ea_is_born_stoch/ea_is_born_stoch.php

Источник https://forexsystemsru.com/threads/prostoj-sovetnik-po-stoxastiku.83579/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: