Советник MovingFlat

Купить эксперта MovingFlat в магазине систем алготрейдинга

Эксперт реализует торговую стратегию, основанную на прорыве движущегося флета. Он постоянно отслеживает рынок на предмет флета и открывает новую позицию в случае прорыва. Затем позиция может быть закрыта по достижению заданной прибыли, по стоп-лоссу или увеличена дополнительными лотами через промежутки с гибким шагом по стратегии усреднения. Эксперт – мультивалютный.

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

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

Настоятельно рекомендуется тестировать данный эксперт (впрочем, как и любой другой) на истории реального счета, поскольку демо-счета могут предоставлять котировки довольно низкого качества (в зависимости от брокера). Результаты тестирования и оптимизации на демо-счете могут вводить в заблуждение.

Предпочтительные таймфреймы – H1, M30, M15.

С настройками по умолчанию эксперт показывает достойные результаты, но некоторые инструменты могут потребовать изменений. Примеры на скриншотах ниже были получены без всякой оптимизации за исключением размера диапазона флета (GridPointsOptimization) для GBPUSD и AUDUSD.

Параметры

Настройки торговой системы:

  • Instruments – разделенный запятыми список рабочих символов, например, “EURUSD,GBPUSD,USDCHF,USDJPY,AUDUSD,USDCAD” (кавычки вводить не надо, пробелы не допускаются); если параметр пуст, берется текущий символ; в тестере вместо данного списка всегда используется текущий символ;
  • GridPointsList – разделенный запятыми список шагов сетки усреднения для каждого рабочего символа (в соответствующем порядке); например, “300,700,300,300,200,300” (5-знак); каждое значение используется как диапазон флета И как расстояние между ордерами усреднения; если указано только одно значение, оно используется для всех рабочих символов; если параметр пуст, используется значение по умолчанию – 300;
  • GridPointsOptimization – количество пунктов в шаге сетки; данный параметр используется ТОЛЬКО во время оптимизации, поскольку невозможно оптимизировать по строке GridPointsList;
  • TakeAmount – размер прибыли (в валюте депозита), которой должна достичь плавающая прибыль по отдельному рабочему символу, чтобы все его рыночные ордера были закрыты (“take profit”); данный параметр может содержать отрицательное число, что трактуется как процент от текущей свободной маржи; например, значение по умолчанию -0.01 означает, что плавающая прибыль в размере 1% от свободной маржи закроет ордера;
  • DegradeByDay – число, задающее, на какую часть TakeAmount следует уменьшать TakeAmount каждый день нахождения в рынке; это штраф за долгоживущие позиции; если параметр больше нуля, то чем дольше ордера остаются открытыми, тем меньшую прибыль по ним требуется получить для закрытия, вплоть до того, что в перспективе возможно “согласиться” и на закрытие с убытком; значение по умолчанию – 0.1, что означает, что каждый день существования позиции в рынке (начиная с самого первого ордера) 0.1 от TakeAmount будет вычитаться из TakeAmount, так что после 10 дней позиция может быть закрыта в ноль, а после 20 – с убытком –TakeAmount; это можно рассматривать как своего рода стоп-лосс замедленного действия;
  • FlatDetect – количество баров, на которых цена должна оставаться в диапазоне GridPoints пунктов для определения состояния флета; значение по умолчанию – 7; диапазон рассчитывается по highs и lows FlatDetect баров;
  • BreakDetect – количество баров, используемых для обнаружения прорыва из состояния флета; значение по умолчанию – 3; если цена close не выходит за пределы диапазона флета ни на одном из BreakDetect баров, состояние флета аннулируется без сигнала;
  • ProgressiveGrid – включение/отключение режима увеличения шага между ордерами усреднения в зависимости от количества уже открытых ордеров; значение по умолчанию – true; например, между 1-м и 2-м ордерами будет как минимум GridPoints, между 2-м и 3-м – как минимум 2*GridPoints, и т.д.; если параметр равен false, шаг остается постоянным и составляет как минимум GridPoints; параметр имеет смысл только при MultipleOrders равным true;

Настройки универсального ядра экспертов:

  • MagicBase – пользовательский идентификатор ордеров (magic number); значение по умолчанию – 0, что означает, что для каждого экземпляра эксперта идентификатор  будет сгенерирован автоматически (внимание: эта процедура зависит от символа и таймфрейма графика, на который установлен эксперт, так что установка двух экземпляров на графики с одним и тем же символом и таймфреймом приведет к генерации одинакового идентификатора); сгенерированный идентификатор выводится в лог;

Параметры ордеров:

  • Lots – количество лотов для новых ордеров и приращение лотов для ордеров усреднения, если IncrementLots равен true; значение по умолчанию – 0.01; если данный параметр равен нулю, вступает в действие параметр Risk;
  • StopLoss – величина стоп-лосса в пунктах; значение по умолчанию – 0; особое значение -2 означает дневной диапазон (рассчитывается автоматически);
  • Slippage – допустимое проскальзывание запросов (в пунктах); значение по умолчанию – 10;
  • TrailStops – включение/отключение сопровождения стоп-лоссов; значение по умолчанию – true; действует только при ненулевом StopLoss;
  • TrailingStep – шаг (в пунктах) сопровождения стоп-лоссов; значение по умолчанию – 10; действует только при ненулевом StopLoss;
  • TrailNonProfit – включение/отключение сопровождения стоп-лоссов для ордеров, у которых прибыль пока меньше StopLoss; когда параметр равен false (значение по умолчанию), эксперт не начинает сопровождение стоп-лосса до тех пор, пока цена не отойдет в благоприятную сторону на StopLoss пунктов (т.е. выполняется условие как минимум безубытка); когда параметр равен true, любое движение цены в выгодную сторону на следующие TrailingStep пунктов вызывает сопровождение; действует только при ненулевом StopLoss;

Управление алгоритмом:

  • BarByBar – включение/отключение торговли по барам (true) или по тикам (false); значение по умолчанию – true (рекомендуется); важно, что сопровождение стоп-лосса всегда выполняется по тикам (с точностью до TrailingStep пунктов), вне зависимости от данного параметра; BarByBar влияет только на сигналы;
  • MultipleOrders – разрешение/запрет нескольких ордеров по каждому рабочему символу; значение по умолчанию – true;

Управление капиталом:

  • IncrementLots – включение/отключение режима увеличения лотов в ордерах усреднения; значение по умолчанию – true; имеет смысл только при MultipleOrders равном true;
  • MaximumLot – максимальный допустимый лот в отдельном ордере; значение по умолчанию – 0.5;
  • Risk – данный параметр действует при установке Lots в 0; он задает размер лота как процент от текущей свободной маржи (“FreeMargin” * Risk / “MarginRequiredFor1Lot”); значение по умолчанию – 0.01 (1%);

Отладка:

  • PrintLog – включение/отключение отладочных записей в лог; значение по умолчанию – false.

Тесты и иллюстрации

Все представленные тесты проводились для стратегии усреднения – она включается за счет установки MultipleOrders в true и StopLoss в 0 (это допустимо, поскольку применялись минимальные риски, а также “замедленный виртуальный стоп-лосс”, описанный выше – DegradeByDay). IncrementLots был равен true, и ProgressiveGrid – тоже true. Изменяя эти два параметра, можно регулировать агрессивность усреднения. Когда ProgressiveGrid равен false, усреднение происходит более часто, что увеличивает нагрузку на депозит – это делает стратегию более рискованной, но может помочь закрыться с прибылью на более короткой коррекции. Когда IncrementLots равен false, стратегия менее агрессивна и нагрузка снижается.

Изображения 1-6 показывают результаты для EURUSD, GBPUSD, AUDUSD, USDCHF, USDJPY, USDCAD (все – на таймфрейме H1). Режим тестирования – по ценам открытия, но результаты достоверны, поскольку параметр BarByBar равен true. Чтобы убедиться в точности результатов, изображение 7 показывает тот же самый тест EURUSD в потиковом режиме, и отличий от изображения 1 почти нет.

На изображении 8 все тот же тест EURUSD выполнен в потиковом режиме с единственным отличием, что BarByBar установлен в false. В данном случае эксперт обрабатывает все тики. Результаты выглядят хуже из-за особенностей торговой стратегии: усреднение по закрытию баров H1 обычно происходит удачнее, чем посреди баров – таким образом меньшее количество лотов покрывает более широкий диапазон движения цены. При других настройках поведение системы может отличаться.

Изображение 9 показывает результаты для пропорционального лота. Все предыдущие тесты выполнялись с постоянным минимальным лотом 0.01, который также использовался и как шаг при усреднении. В этот раз Lots установлен в 0, и начинает работать параметр Risk. В данном примере Risk равен 0.01, т.е. 1% от свободной маржи задает стоимость и размер лота в каждый момент, когда генерируется новый сигал.

Общие совмещенные результаты тестов 1-6 представлены на изображении 10. Тестер MetaTrader 4 не позволяет проводить мультивалютное тестирование, так что данный график получен внешним скриптом из отчетов тестирования “как есть”.

Все 6 тестовых прогонов показаны вместе на изображении 11 для визуального сравнения (также сгенерировано внешним скриптом).

Добавить комментарий

Войти с помощью: 

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Time limit is exhausted. Please reload the CAPTCHA.