neophyte
neophyte личный блог
06 июня 2017, 05:19

Мы строили, строили и наконец построили. (с)Чебурашка

Работа закончена.
Отброшено то, что ненужно или является второстепенным, по крайней мере на сегодняшний день.
Добавлено гибкости в настройках конфигурации на тренды, риски, и разные режимы трейлинга.
Добавлена возможность использования в направлении тренда сеточного алгоритма, учитывающего волатильность инструмента. И еще несколько мелких хитростей и примочек.
На этом остановимся.
Робот в автономном режиме я не использую. Он выполняет функции исполнительного механизма в рамках выбранной торговой тактики и торгуемого тренда, освобождая от рутины слежения за рынком и ручных операций по открытию позиций в заданный момент. 
В автономе тоже работает, но там не те результаты, к которым я привык.

SWT-метод. Параметры настройки робота.

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

1.1. Список параметров и их назначение.

При сбрасывании робота на график торгуемого инструмента появляется диалоговое окно для настройки параметров.

Мы строили, строили и наконец построили. (с)Чебурашка

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

Назначение параметров следующее.


1.1.1. Группа торговых сигналов

TheFirstTypeTradingSignal  — при значении параметра true для формирования торгового сигнала используется пересечение сигнальной волной нулевой линии в направлении торгуемого тренда.
TheSecondTypeTradingSignal  — при значении параметра true для формирования торгового сигнала используется разворот сигнальной волны второго уровня выше/ниже нулевой линии в направлении торговли. Использование режима целесообразно на сильных тренда, когда на откате волна второго уровня не заходит за нулевую линию.
TheSignalsModeLevel — выбор волны для формирования торгового сигнала. Значения параметра и тип волны: — 0 — сигнал формируется по волне второго уровня графика М1 — внутричасовой тренд;
— 1 — сигнал формируется по волне третьего уровня графика М1 — часовой тренд;
— 2 — сигнал формируется по волне четвертого уровня графика М1 — внутридневной тренд;
— 3 — сигнал формируется по волне четвертого уровня графика М5 — дневной тренд.


1.1.2. Группа фильтрации сигналов и управления режимом торговли

FiltrIDayTrendLevel  — целое число от 0 до 2. При значении параметра 0 данный тренд при открытии позиций в расчет не принимается. При значении параметра 1 для открытия позиции принимаются во внимание только сигналы в направлении тренда. Значение параметра больше 1 блокирует открытие сделок в направлении тренда если волна четвертого уровня графика М1 больше/меньше границы канала волатильности на диаграмме волн (назначение — предотвратить вход в рынок в зоне возможного окончания импульса (свинга)). Сделки в противоположном направлении открываются без ограничений.
FiltrDailyTrendLevel  — целое число от 0 до 2. При значении параметра 0 данный тренд при открытии позиций в расчет не принимается. При значении параметра 1 для открытия позиции принимаются во внимание только сигналы в направлении тренда. Значение параметра больше 1 блокирует открытие сделок в направлении тренда если волна четвертого уровня графика М5 больше/меньше границы канала волатильности на диаграмме волн (назначение — предотвратить вход в рынок в зоне возможного окончания импульса (свинга)). Сделки в противоположном направлении открываются без ограничений.
FiltrLocalTrendLevel   — целое число от 0 до 2. При значении параметра 0 данный тренд при открытии позиций в расчет не принимается. При значении параметра 1 для открытия позиции принимаются во внимание только сигналы в направлении тренда. Значение параметра больше 1 блокирует открытие сделок в направлении тренда если волна четвертого уровня графика М15 больше/меньше границы канала стандартной волатильности — пунктирный канал на диаграмме волн (назначение — предотвратить вход в рынок в зоне возможного окончания импульса (свинга)). Сделки в противоположном направлении открываются без ограничений.
FiltrShortTrendLevel  — целое число от 0 до 2. При значении параметра 0 данный тренд при открытии позиций в расчет не принимается. При значении параметра 1 для открытия позиции принимаются во внимание только сигналы в направлении тренда. Значение параметра больше 1 блокирует открытие сделок в направлении тренда если волна четвертого уровня графика Н1 больше/меньше границы канала волатильности на диаграмме волн (назначение — предотвратить вход в рынок в зоне возможного окончания импульса (свинга)). Сделки в противоположном направлении открываются без ограничений.
FiltrMediumTrendLevel  — целое число от 0 до 2. При значении параметра 0 данный тренд при открытии позиций в расчет не принимается. При значении параметра 1 для открытия позиции принимаются во внимание только сигналы в направлении тренда. Значение параметра больше 1 блокирует открытие сделок в направлении тренда если волна четвертого уровня графика Н4 больше/меньше границы канала волатильности на диаграмме волн (назначение — предотвратить вход в рынок в зоне возможного окончания импульса (свинга)). Сделки в противоположном направлении открываются без ограничений.
TwoMajorTrendsANDMode — при параметре true объединение признаков краткосрочного и среднесрочного тренда переключается из режима логического ИЛИ(OR) в режим логического И(AND). В режиме ИЛИ(OR) сделки разрешены, если при прочих положительных условиях хотя бы один из двух старших трендов допускает торговлю в данном направлении. В режиме И(AND)  — если оба тренда допускают торговлю в данном направлении.
TheLocalTrendPriorityMode  — при параметре true в советнике задается режим приоритета локального тренда. В этом режиме независимо от значений параметра FiltrLocalTrend всегда учитывается направление движения в рамках локального тренда. Открытие позиций против направления локального тренда блокируется. Позиции открываются в направлении движения рынка по локальному тренду с дополнительными условиями фильтрации входов по параметрам остальных трендов.
Закрытие позиций строго по параметрам локального тренда вне зависимости от направлений движения рынка по остальным трендам. а также по достижению цели, стопом, трейлинг-стопом и режимами закрытия по эквити.
При значении параметра false направление локального тренда принимается во внимание на общих условиях, также как и параметры других трендов.
Long  — торгуем/не торгуем лонг.
Short  — торгуем/не торгуем шорт.
OnlyOpen  — при значении параметра true позиции только открываются и сопровождаются адаптивным или ручным трейлинг-стопом. Закрытие позиций происходит только по достижению уровней ордеров стоп-лосс и тейк-профит, а также трейдером вручную.
CloseManualPosByExpert  — при значении параметра true эксперт получает возможность закрытия позиций, ранее открытых или открываемых вручную. Пользоваться с осторожностью и только при отсутствии сделок против тренда, торгуемого роботом, поскольку такие позиции будут сразу же закрыты при приоритете локального тренда или закрыты непредсказуемым образом в остальных случаях.

1.1.3. Группа настройки параметров риска.

TotalRiskLimitPerc — максимальный общий риск в процентах по всему портфелю торгуемых инструментов при нормированном риске на сделку.
LotsForManualMM  — размер лота для торговли фиксированным объемом, задаваемым вручную, без AutoMM.
AutoMM  — параметр выбора режима автоматического определения размера (объема) позиции. Значение true соответствует автоматическому определению размера позиции, значение false  — ручной выбор размера позиции, задаваемый параметром LotsForManualMM.
RiskPercForTradeAutoMM  — максимальный процент риска на сделку при AutoMM=true и максимально возможном размере стопа, задаваемого через параметры робота. Если заданный или рассчитанный размер лота меньше допустимого в торговом терминале, то в советнике автоматически устанавливается минимально допустимый размер лота. Если заданный или рассчитанный размер лота больше допустимого в торговом терминале, то в советнике автоматически устанавливается максимально допустимый размер лота.
MaxNumberOrdersInMarket  — максимальное количество ордеров в рынке по инструменту, открываемых советником по торговым сигналам. Ограничение не распространяется на позиции, открываемые сеточным алгоритмом.
TheSizeStopLossLevel  — начальный уровень ордера стоп-лосс. Значения параметра и размер ордера:
0 — ордер стоп-лосс не устанавливается;
1 — ордер стоп-лосс равен волатильности внутридневного тренда V05, увеличенной на 20%;
2 — ордер стоп-лосс равен волатильности дневного тренда V15, увеличенной на 20%;
3 — ордер стоп-лосс равен волатильности локального тренда V60, увеличенной на 20%.
TheSizeTakeProfitLevel  — размер ордера тейк-профит. Значения параметра и размер ордера:
0 — ордер тейк-профит не устанавливается;
1 — ордер тейк-профит равен волатильности внутридневного тренда V05;
2 — ордер тейк-профит равен волатильности дневного тренда V15;
3 — ордер тейк-профит равен волатильности локального тренда V60;
4 — ордер тейк-профит равен волатильности краткосрочного тренда V240.
TheMovingStopLossMode при значении параметра true происходит подтягивание ордера стоп-лосс за позицией (трейлинг) за позицией при продвижении позиции в зону прибыли.
AggressiveMode  — включение адаптивного мультипликатора риска. При значении параметра true на интервале направленного локального тренда (волна четвертого уровня графика М15 внутри канала стандартной волатильности — пунктирный канал на диаграмме волн), согласованного с направлением движения по краткосрочному тренду, количество разрешенных к открытию сделок и риск на каждую сделку удваиваются.
LeverageLimits  — задается предельный размер кредитного плеча, в рамках которого советник может открывать позиции. Если заданный размер кредитного плеча больше плеча, предоставленного брокером, то действуют ограничения по кредитному плечу брокера. Например, плечо у брокера 1:500, а вы можете установить 1:25 и советники не будут открывать новые позиции, если набран объем, соответствующий кредитному плечу 1:25. Это впрочем не препятствует ручной догрузке счета.

1.1.4. Группа настройки параметров управления трейлинг-стопом.

TrailingStopManualSize  — размер трейлинг-стопа, задаваемого вручную. Активен, если TrailingStopAdaptive выключен. При значении 0 — ручной трейлинг-стоп отсутствует. Если значение больше 0, но меньше минимально допустимого в торговом терминале, то устанавливается минимально допустимое + 5пп.
TrailingStopAdaptive  — включение/выключение режима адаптивного трейлинг-стопа. Адаптивный трейлинг-стоп включается на режиме коррекционного движения по локальному тренду, краткосрочному или среднесрочному тренда в порядке убывания приоритета локальный-краткосрочный-среднесрочный. Если какой-либо из трендов не учитывается при открытии сделок, то адаптивный трейлинг-стоп по его параметрам также не включается, так как участки коррекционного движения соответствующих трендов трендов не участвуют в формировании торговых сигналов.
TrailingStopAdaptiveMini  — минимальный размер адаптивного трейлинг-стопа, равный волатильности часового тренда, увеличенного на 20%.
TheBreakevenTrailingStop  — режим вывода стопа или трейлинг-стопа на уровень безубыточности и остановка дальнейшего движения.
TrSManualPosByExpert  — сопровождать трейлинг стопом советника и позиции, открытые вручную.
TimeOutOpenNewPosMinutes  —  интервал в минутах блокировки открытия по торговому сигналу однотипной позиции с целью исключения эффекта «дребезга» индикаторов вблизи пороговых уровней. Ограничение не распространяется на позиции, открываемые сеточным алгоритмом.

1.1.5. Параметры управления дополнительным сеточным алгоритмом.

AddGrid  — при значении параметра true включается сеточный алгоритм, наращивающий объем по мере продвижения рынка в направлении торгуемого тренда. Запуск алгоритма по первой сделке данного направления. Сеточный алгоритм работает независимо от состояния фильтров до тех пор, пока не сформируется сигнал закрытия позиций данного направления. При выполнении условий активации режима агрессивной торговли объем наращивается и при откате рынка против тренда.
GridStepFaktor  — множитель переменного шага сетки в единицах волатильности часового тренда V01, по умолчанию принимается равным 0.9.
GridVolumeFaktor  — дополнительный множитель объема для позиций, открываемых сеточным алгоритмом, по сравнению с объемом позиций, открываемых основным алгоритмом.

1.1.6. Мэджик-идентификатор и вспомогательные режимы.

Magic  — мэджик-идентификатор обеспечивает возможность настройки различных копий роботов для одновременной работы на одном инструменте с разными конфигурациями параметров для различных типов торгуемых трендов. Значение по умолчанию 112358. Селекция позиций при их обработке экспертом производится по символу и мэджик-идентификатору. При желании трейдер может задавать свои значения идентификатора для работы на одном и том же инструменте различных версий советника с различными настройками параметров.

1.1.7. Глобальные переменные.


В область глобальных переменных вынесена настройка параметров, общих для всех инструментов торгового счета.
В дополнение к уже имеющимся возможностям организовано взаимодействие отдельных копий робота, действующих на различных инструментах, в единую систему, позволяющую реализовать блокировку работы всех копий роботов при достижении параметром эквити целей профита, стоп-лосс или максимально допустимого убытка убытка по торговому счету.
С помощью системы глобальных переменных задаются следующие параметры:
— задание уровня начального баланса торгового счета для очередного торгового цикла (начало цикла определяется трейдером);
— задание уровня допустимой абсолютной просадки по счету для очередного торгового цикла;
— задание единого для всех копий роботов уровня целей прибыли для выхода по эквити;
— задание единого для всех копий роботов уровня стоп-лосс для выхода по эквити;
— задание единого для всех копий робота размера трейлинг стопа по эквити, после достижения которого роботы устанавливают скользящий безубыточный уровень выхода из рынка по совокупной прибыли всех открытых позиций.
Настройка параметров производится в диалоговом окне глобальных переменных, которое вызывается нажатием клавиши F3 или выбором соответствующего пункта в разделе меню Сервис.

Мы строили, строили и наконец построили. (с)Чебурашка

1.1.7.1. Группа настройки параметров торгового счета.

Заполнять не обязательно, если не задан уровень допустимой просадки.
TheInitialAccountBalance  — начальный баланс торгового счета.
AllowedAbsoluteDrawdownLevel -допустимый уровень абсолютной просадки.
TheHftCloseMode  — при значении параметра 1 закрывает позиции по инструменту при броске цен против позиции на величину волатильности внутридневного тренда в пределах минуты, а также в безусловном порядке независимо от настройки других параметров устанавливает адаптивный трейлинг-стоп при броске цен в сторону открытой позиции. Используется для аварийного выхода из рынка при резком росте волатильности, чаще всего вследствие сильной реакции на новости.Рекомендуется к постоянному включению. В обычном режиме влияния на параметры открытых ордеров не оказывает.

1.1.7.2. Группа параметров по коллективной работе роботов с эквити.

Данные параметры рекомендуется задавать на одном из пула роботов, торгующих на счете. Иначе при различных цифрах закрытие позиций будет производится по наименьшему из заданных значений выхода с прибыль. и по наибольшему из заданных значений выхода с убытком.
EquityProfitTarget  — уровень целевого профита по эквити в единицах баланса торгового счета. Если ноль, то не включается. При достижении заданного уровня все открытые позиции закрываются, а работа пула роботов блокируется до задания нового уровня целей.
EquityStopLoss  — уровень допускаемого плавающего убытка по эквити в единицах баланса торгового счета. При достижении заданного уровня все открытые позиции закрываются, а работа пула роботов блокируется до задания нового уровня.
TrailingStopEquitySizePerc  — трейлинг прибыли по эквити. Задается в процентах. В момент запуска терминала, если значение параметра не равно нулю, вычисляется порог включения трейлинга, равный стартовому значению эквити с добавлением размера трейлинга. При достижении порога включается режим слежения и трейлинг-стоп подтягивается вслед за ростом эквити. При развороте рынков и достижении уровня трейлинг-стопа все открытые позиции закрываются по рынку, но работа роботов не блокируется.
Block  — параметр блокировки работы роботов. При значении, отличном от нуля, производится проверка, не вышли ли параметры счета за заданные границы по прибыли и убыткам. Если вышли, то работа советников блокируется. Если сумма средств на счете меньше или равна нулю, работа советника также блокируется, хотя это в общем-то и не нужно.

При смене торгового счета появляется диалоговое окно предупреждений с предложением проверить и при необходимости задать параметры глобальных переменных для нового торгового счета («Type F3 anf check the GlobalVariables for new account»).

Мы строили, строили и наконец построили. (с)Чебурашка


1.1.8. Замечания общего характера

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


1.1.9. Индикация параметров настройки.

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

Мы строили, строили и наконец построили. (с)Чебурашка

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

InitAB  — обозначение параметра TheInitialAccountBalance и заданное числовое значение начального баланса.
ADDL  — обозначение параметра AllowedAbsoluteDrawdownLevel  и заданное значение допустимого уровня абсолютной просадки.
EqSL  — обозначение параметра EquityStopLoss и заданное числовое значение допустимого абсолютного уровня снижения средств в единицах баланса торгового счета.
EqTP  — обозначение параметра EquityProfitTarget и заданный уровень целевого профита по эквити в единицах баланса торгового счета.
EqTrS  — обозначение параметра TrailingStopEquitySizePerc и заданный в процентах размер трейлинг стопа по совокупной плавающей прибыли по всем позициям.
Block  — обозначение и значение параметра блокировки работы роботов.
HspSm — комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
— первый разряд слева — значение параметра TheHftCloseMode;
— второй разряд слева — значение параметра TheSizeStopLossLevel;
— третий разряд слева — значение параметра TheSizeTakeProfitLevel;
— четвертый разряд слева — значение параметра TheMovingStopLossMode.
SignM — комбинированный индикатор,  значения десятичных разрядов которого несут следующую информацию:
— первый разряд слева — значение параметра TheFirstTypeTradingSignal;
— второй разряд слева — значение параметра TheSecondTypeTradingSignal;
— третий разряд слева — значение параметра TheSignalsModeLevel.
Medium  — комбинированный индикатор, знак которого показывает направление движения по среднесрочному тренду, а значения десятичных разрядов несут следующую информацию:
— первый разряд слева — значение параметра FiltrLocalTrendLevel;
— второй разряд слева — характер движения: 1 — коррекция, 2 — тренд.
Short  — комбинированный индикатор, знак которого показывает направление движения по краткосрочному тренду, а значения десятичных разрядов несут следующую информацию:
— первый разряд слева — значение параметра FiltrLocalTrendLevel;
— второй разряд слева — характер движения: 1 — коррекция, 2 — тренд.
Local  — комбинированный индикатор, знак которого показывает направление движения по локальному тренду, а значения десятичных разрядов несут следующую информацию:
— первый разряд слева — значение параметра TheLocalTrendPriorityMode;
— второй разряд слева — значение параметра FiltrLocalTrendLevel;
— третий разряд слева — характер движения: 1 — коррекция, 2 — тренд.
Daily  — комбинированный индикатор, знак которого показывает направление движения по дневному тренду, а значения десятичных разрядов несут следующую информацию:
— первый разряд слева — значение параметра FiltrLocalTrendLevel;
— второй разряд слева — характер движения: 1 — коррекция, 2 — тренд.
IDay  — комбинированный индикатор, знак которого показывает направление движения по дневному тренду, а значения десятичных разрядов несут следующую информацию:
— первый разряд слева — значение параметра FiltrIDayTrendLevel;
— второй разряд слева — характер движения: 1 — коррекция, 2 — тренд.

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

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

1.1.10. Замечания общего характера

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

Робот реализован на основе использования индикаторов SWT-метода
16 Комментариев
  • gvv
    06 июня 2017, 07:18
    Можно ли его попробовать?
  • Replikant_mih
    06 июня 2017, 11:14
    Это же всё параметры?)) — вот, я нашел ещё одного человека, который не боится большого числа параметров и при этом не занимается переподгонкой, предположительно)

    Пост, правда, пока не прочитал, чуть позже.
  • Sergey Pavlov
    06 июня 2017, 12:10
    «Где деньги, Зин?»… всё остальное (в трейдинге) от лукавого…
  • Siryoyo
    06 июня 2017, 12:22
    Почем сейчас килограмм параметров?
  • kvazar
    07 июня 2017, 23:27
    везет коллега, работа окончена)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн