понедельник, 13 ноября 2017 г.

Торговый робот SWTv2_Exp. Описание и настройка параметров

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

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



Рис.v2.1.1. Диалоговое окно настройки параметров торгового робота.

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


VectorOfHighTrendsFiltration_0_4 - целое число от 0 до 4. Значение параметра и режим вектора фильтрации (L,M,S,L,D,Id):
4 - долгосрочный тренд - включены фильтры всех трендов от внутридневного до долгосрочного: (L,M,S,L,D,Id) = (1,1,1,1,1,1);
3 - среднесрочный тренд - включены фильтры всех трендов от внутридневного до среднесрочного, отключен фильтр долгосрочного тренда: (L,M,S,L,D,Id) = (0,1,1,1,1,1);
2 - краткосрочный тренд - включены фильтры всех трендов от внутридневного до краткосрочного, отключены фильтры среднесрочного и долгосрочного трендов: (L,M,S,L,D,Id) = (0,0,1,1,1,1);
1 - локальный тренд - включены фильтры всех трендов от внутридневного до локального, отключены фильтры краткосрочного, среднесрочного и долгосрочного трендов: (L,M,S,L,D,Id) = (0,0,0,1,1,1);
0 - внутридневная торговля без учета направления старших трендов - включены только фильтры дневного и внутридневного трендов с поддержкой адаптивной настройки от часового тренда: (L,M,S,L,D,Id) = (0,0,0,0,1,1).

SWTwaveFilter_1_4 - целое число от 1 до 4. Задает тип фильтра для разделения стохастических волновых трендов:
1 - цифровой полосовой фильтр второго порядка, рассчитанный из аналогового прототипа методом обратных дифференциалов;
2 - цифровой полосовой фильтр второго порядка, рассчитанный из аналогового прототипа методом билинейного z-преобразования;
3 - цифровой полосовой фильтр четвертого порядка, рассчитанный из аналогового прототипа методом обратных дифференциалов;
4 - цифровой полосовой фильтр четвертого порядка, рассчитанный из аналогового прототипа методом билинейного z-преобразования.
Отметим, что вид волн, их взаимное расположение и характер движения во многом зависят от типа фильтра. Но алгоритмы робота подстраиваются под конкретную конфигурацию трендов.

AdaptiveAdjustmentMode_0_3 - целое число от 0 до 3. Задает режим адаптивной настройки на конфигурацию трендов:
0 - нет адаптивной настройки, все тренды независимы и объединяются по И;
1 - отключение коррекционных режимов;
2 - отключение коррекционных режимов, если тренд на уровень старше или тренд на уровень младше направленные;
3 - отключение коррекционных режимов если тренд на уровень младше направленный.
Выбор режима адаптивной настройки - дело трейдера, и этот выбор может производиться после тестирования на истории в зависимости от стоящих целей и тактических задач.
При торговле внутри дня целесообразно использовать значение параметра 3.
При долгосрочной торговле 2,3 или 0. В последнем случае мы будем иметь очень жесткую фильтрацию условий открытия позиций и меньшее количество сделок, чем в остальных случаях.
Режим 1 наиболее мягкий, обеспечивает значительно больше возможностей для торговли, но иногда за счет роста рисков.

TypeOfTradeSignal_1_3 - целое число от 0 до 3. Задает тип торгового сигнала, по которому открываются позиции:
0 - открытие позиций по торговым сигналам заблокировано. Закрытие - в обычном порядке. Режим может использоваться для автономного запуска сеточного алгоритма по заданным стартовым уровням;
1 - вход по сигналу волн (пояснения смотри ниже по тексту);
2 - вход по сигналу волн и по прорыву канала волатильности;
3 - вход по прорыву канала волатильности (пояснения смотри ниже по тексту).

AutoMM - выбор режима автоматического определения размера (объема) позиции. Значение true соответствует автоматическому определению размера позиции, значение false - ручной выбор размера позиции, задаваемый параметром LotsForManualMM.

RiskPercForTradeAutoMM - максимальный процент риска на сделку при AutoMM=true и размере стопа по волатильности, задаваемого через параметры робота. При отсутствии стопа объем считается исходя из размера волатильности краткосрочного тренда плюс волатильность локального: V240+V60.
Процент риска считается от рискового капитала: средства за минусом уровня допустимой просадки счета AllowedAbsoluteDrawdownLevel, задаваемого в глобальных переменных терминала. Если уровень AllowedAbsoluteDrawdownLevel не задан, то риск считается исходя из общего объема средств на счете. Если заданный или рассчитанный размер лота больше допустимого в торговом терминале, то в советнике автоматически устанавливается максимально допустимый размер лота. Если заданный или рассчитанный размер лота меньше допустимого в торговом терминале, то в советнике автоматически устанавливается минимально допустимый размер лота.

NMaxNumberOrdersInMarket - максимальное количество ордеров в рынке по инструменту, открываемых советником по торговым сигналам. Позиции по сигналам волн (комментарий SWT) и позиции по прорыву канала волатильности (комментарий vSWT) учитываются совместно. Т.е. если робот открыл максимальное количество разрешенных позиций по сигналу волн, то сделки на прорыв канала волатильности открываться уже не будут. И наоборот. Ограничение не распространяется на позиции, открываемые сеточным алгоритмом (комментарий GrSWT), поскольку позиции сетки открываются в направлении роста прибыли и незначительно увеличивают общие риски торговли. Кроме того, по позициям сеточного алгоритма используется короткий стоп, определяемый параметрами робота.
Количество ордеров в рынке по инструменту целесообразно определять следующим образом. Берется суммарный риск на все позиции по инструменту, одновременно находящиеся в рынке, и делится на принимаемый риск одну сделку.Полученный результат округляем в меньшую сторону до целых чисел и вычитаем 2 - ориентировочное количество позиций сеточного алгоритма с ненулевым риском.
Можно пойти от обратного, задавая число NMaxNumberOrdersInMarket в пределах 3-4 и прибавив к этому числу двойку рассчитать риск на одну позицию исходя из суммарного риска по инструменту. Задавать большие значения NMaxNumberOrdersInMarket не рекомендуется. Пусть лучше рынок добавляет позиции по стеке, не наращивая при этом суммарный риск.

LotsForManualMM - размер лота для торговли фиксированным объемом, задаваемым вручную, и действующий при AutoMM=false.

TheSizeTakeProfit_0_6 - целое число от 0 до 6. Задает размер ордера тейк-профит:
0 - ордер тейк-профит не устанавливается;
1 - ордер тейк-профит равен волатильности часового тренда V01;
2 - ордер тейк-профит равен волатильности внутридневного тренда V05;
3 - ордер тейк-профит равен волатильности дневного тренда V15;
4 - ордер тейк-профит равен волатильности локального тренда V60;
5 - ордер тейк-профит равен волатильности краткосрочного тренда V240;
6 - ордер тейк-профит равен волатильности среднесрочного тренда V1440.

TheSizeStopLoss_0_4 - целое число от 0 до 4. Задает размер ордера стоп-лосс, устанавливаемого при открытии позиции:
0 - ордер стоп-лосс не устанавливается;
1 - ордер стоп-лосс равен волатильности часового тренда V01 плюс волатильность внутричасового V00 плюс удвоенный спред;
2 - ордер стоп-лосс равен волатильности внутридневного тренда V05 плюс волатильность часового V01 плюс удвоенный спред;
3 - ордер стоп-лосс равен волатильности дневного тренда V15 плюс волатильность внутридневного V05 плюс удвоенный спред;
4 - ордер стоп-лосс равен волатильности локального трендаV60 плюс волатильность дневного V15 плюс удвоенный спред.
Поправка по волатильности задает доверительный интервал для стопа. Поправка на размер спреда необходима для инструментов, у которых спред больше параметров волатильности для младших трендов.

TheMovingStopLoss - при значении параметра true происходит подтягивание ордера стоп-лосс за позицией при продвижении позиции в зону прибыли. Параметр работает и в зоне прибыли и в зоне убытка, чем отличается от классического трейлинг-стопа, который начинает действовать только в случае, если прибыль по позиции превысила заданное значение.
.
LowRiskEntry - при значении параметра true позиции открываются со стопом за границей канала волатильности графика М1 (индикатор SWT_VolatilityCh). Действие параметра не распространяется на начальный уровень стоп-лосс позиций сеточного алгоритма. При использовании этого режима и включенном параметре TheMovingStopLoss=true все стопы по инструменту подтягиваются к соответствующей границе канала.
Рекомендуется использовать только при агрессивной торговле внутри дня от границ канала. При долгосрочной торговле результат непредсказуем и требует отдельного исследования и тестирования. В общем случае, при долгосрочном тестировании на истории, режим рекомендуется отключать. 

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

TrailingStopAdaptive - при значении параметра true работает трейлинг стоп в размере ордера стоп-лосс для часового тренда (V01+V00 + удвоенный спред). При значении параметра false используется размер трейлинг стопа, задаваемый вручную параметром TrailingStopManualSize.

TrailingStopManualSize - размер трейлинг-стопа, задаваемого вручную. Активен, если адаптивный трейлинг стоп отключен (параметр  TrailingStopAdaptive=false). При значении 0 - ручной трейлинг-стоп отсутствует. Если значение больше 0, но меньше минимально допустимого в торговом терминале, то устанавливается минимально допустимое + 5пп.

Grid - при значении параметра true в дополнение к основным торговым алгоритмам включается сеточный алгоритм, наращивающий объем по мере продвижения рынка в направлении торгуемого тренда. Запуск алгоритма производится по первой сделке данного направления. Сеточный алгоритм работает независимо от состояния фильтров до тех пор, пока не сформируется сигнал закрытия позиций данного направления.
Шаг сетки равен размеру стопа для часового тренда V (V=V01+V00+удвоенный спред) с поправкой на множитель шага сетки GridStepFaktor. С ростом волатильности шаг сетки растет, с уменьшением - снижается.
Стоп-лосс сетки равен размеру стопа для часового тренда V=V01+V00 с поправкой на множитель стопа сетки GridStopFaktor.
Тейк-профит для позиций сетки устанавливается равным тейк-профиту для основного алгоритма.

GridStepFaktor - множитель переменного шага сетки в единицах V (установка по умолчанию 0.45).

GridStopFaktor - множитель стопа сетки в единицах V (установка по умолчанию 0.50).

UpLevel и DownLevel - уровни старта сеточного алгоритма при ручном запуске сетки в момент загрузки робота. Используются после выключения терминала. если необходимо восстановить работу сеточного алгоритма от какого либо уровня. Могут использоваться для инициации работы сеточного алгоритма без использования основных торговых алгоритмов.

TimeOutOpenNewPosMinutes -  интервал в минутах блокировки открытия по торговому сигналу однотипной позиции с целью исключения эффекта "дребезга" индикаторов вблизи пороговых уровней. По умолчанию установлено значение 60 минут - средний период цикла часового тренда.
Установка интервала меньше 12 минут заблокирована программно.
Ограничение по времени не распространяется на позиции, открываемые сеточным алгоритмом, а также не действует, если данному типу торгового сигнала не открыто ни одной позиции и суммарное количество позиций в рынке позволяет инициировать сделку.

ControlManualPosByExpert - при значении параметра true советник управляет позициями, открытыми вручную, устанавливая размером стопа, трейлингом и закрывая позиции, при поступлении соответствующих сигналов.
HftMode - локальный параметр, который закрывает позиции по инструменту при броске цен против позиции на величину 2*V в пределах минуты, а также в безусловном порядке независимо от настройки других параметров подтягивает стоп на величину 2*V при броске цен в сторону открытой позиции. Используется для аварийного выхода из рынка при резком росте волатильности, чаще всего вследствие сильной реакции на новости. В обычном режиме влияния на параметры открытых ордеров обычно не оказывает. Использовать с осторожностью. На некоторых инструментах приводит к необоснованной ликвидации позиций на тонком рынке.
Стоп не подтягивается для прибыльных позиций в режиме TheBreakevenStop=true.
Аналогичный параметр может задаваться в области глобальных переменных торгового терминала и действует на все торгуемые инструменты.
Magic - мэджик-идентификатор обеспечивает возможность настройки различных копий роботов для одновременной работы на одном инструменте с разными конфигурациями параметров для различных типов торгуемых трендов. Значение по умолчанию 112358. Селекция позиций при их обработке экспертом производится по символу и мэджик-идентификатору. При желании трейдер может задавать свои значения идентификатора для работы на одном и том же инструменте различных версий советника с различными настройками параметров. Нельзя использовать несколько экземпляров робота с разными настройками на одном инструменте с одинаковым мэджик-идентификатором.

HideLabels - при значении параметра true отключается режим отображения меток, показывающих состояние торгового робота. Используется при желании разгрузить график от лишних графических элементов.

TestOfExpert - при значении параметра true с целью ускорения работы программы отключаются избыточные режимы индикации.

SizeLabel - задает размер шрифта графических объектов (меток), если настройки компьютера не позволяют использовать шрифт по умолчанию.

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

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



Рис.v2.1.2. Область глобальных переменных торгового терминала

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

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

TheInitialAccountBalance - начальный баланс торгового счета.
AllowedAbsoluteDrawdownLevel - допустимый уровень абсолютной просадки.
EquityProfitTarget - уровень целевого профита по эквити в единицах баланса торгового счета. Если ноль, то не включается. При достижении заданного уровня все открытые позиции закрываются, устанавливается новый уровень цели с учетом процентного шага по прибыли и работа роботов продолжается.
EquityProfitTargetPerc - процентный шаг уровня целей по прибыли. При достижении целей профита по эквити все позиции закрываются, устанавливается новый уровень цели и работа роботов продолжается.
EquityStopLoss - уровень допускаемого плавающего убытка по эквити в единицах баланса торгового счета. При достижении заданного уровня все открытые позиции закрываются, а работа пула роботов блокируется до принятия трейдером решения о продолжении торговли.
Block - параметр блокировки работы роботов. При уровне средств на счете, отличном от нуля, производится проверка, не вышли ли параметры счета за заданные границы по убыткам. Если вышли, то работа советников блокируется. Если сумма средств на счете меньше или равна нулю, работа советника также блокируется, хотя это в общем-то и не нужно.
Внимание. Если вы пополнили счет при нулевом балансе или ранее был достигнут заданный вами предельный уровень просадки, то при возобновлении работы проверьте значение глобальной переменной GV_Block и установите при необходимости нулевое значение переменной. При значении переменной "1" работа роботов заблокирована.
TheHftCloseMode - глобальная переменная торгового терминала, которая управляет закрытием позиций по всем инструментам при броске цен против позиции на величину 2*V в пределах минуты, а также в безусловном порядке независимо от настройки других параметров подтягивает стоп на величину 2*V при броске цен в сторону открытой позиции. Используется для аварийного выхода из рынка при резком росте волатильности, чаще всего вследствие сильной реакции на новости. В обычном режиме влияния на параметры открытых ордеров обычно не оказывает. Использовать с осторожностью. На некоторых инструментах приводит к необоснованной ликвидации позиций на тонком рынке. Вместо глобальной переменной можно пользоваться локальным параметром HftMode, значение которого настраивается в каждом отдельном экземпляре робота.
GlobalAccountNumber - номер торгового счета. При смене торгового счета появляется диалоговое окно предупреждений с предложением проверить и при необходимости задать параметры глобальных переменных для нового торгового счета ("Type F3 anf check the GlobalVariables for new account"). Все исходные установки при этом сбрасываются до нуля, а работа пула роботов блокируется - рис.v2.1.3.


Рис.v2.1.3. Предупреждение о необходимости проверить установку глобальных переменных торгового терминала при смене торгового счета


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

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

.

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

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

InitAB - обозначение параметра TheInitialAccountBalance и заданное числовое значение начального баланса.
ADDL - обозначение параметра AllowedAbsoluteDrawdownLevel  и заданное значение допустимого уровня абсолютной просадки.
EqSL - обозначение параметра EquityStopLoss и заданное числовое значение допустимого абсолютного уровня снижения средств в единицах баланса торгового счета.
EqTP - обозначение параметра EquityProfitTarget и заданный уровень целевого профита по эквити в единицах баланса торгового счета.
EqTP Prc - обозначение параметра EquityProfitTargetPerc и заданное числовое значение процентного шага по новой цели прибыли.
Sig+Hft+Bl - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TypeOfTradeSignal_1_3;
- второй разряд слева - значение параметра HftMode;
- третий разряд слева - значение параметра Block.
Man+Gr+N - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра ConrolManualPosByExpert;
- второй разряд слева - значение параметра Grid;
- третий разряд слева - значение параметра NMaxNumberOrdersInMarket.
Pr+St+Ms - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TheSizeTakeProfit_0_6;
- второй разряд слева - значение параметра TheSizeStopLoss_0_4;
- третий разряд слева - значение параметра TheMovingStopLoss.
LrE+Br - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра LowRiskEntry;
- второй разряд слева - значение параметра TheBreakevenStop.
AdTrS+Lot - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TrailingStopAdaptive;
- второй разряд слева - значение параметра LotsForManualMM.
Amm+Risk - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра AutoMM;
- второй разряд слева - значение параметра RiskPercForTradeAutoMM.
Long, Medium, Short, Local, Daily, IDay - комбинированные индикаторы, знак которых показывает состояние фильтров трендов и направление движения по каждому тренду. Значения десятичных разрядов несут следующую информацию:
- знак - направление движения при действующем фильтре;
- первый разряд слева: 1 - тренд принимается во внимание, 0 - фильтр тренда отключен;
- второй разряд слева - значение параметра настройки адаптивного режима AdaptiveAdjustmentMode_0_3;
- третий разряд слева - характер движения:
- 1 - коррекция;
- 2 - тренд;
- 0 - фильтр отключен.
UpLvl и DnLvl показывают верхний и нижний уровни старта сеточного алгоритма при ручном запуске сетки в момент загрузки робота или текущие уровни, на которых будут открываться позиции.
Нулевые значения означают, что сеточный алгоритм или не включен или еще не запущен.
TypeOfFilter показывает тип фильтра волн SWT-метода, задаваемый параметром SWTwaveFilter_1_3.
Алгоритм работы не является черным ящиком и абсолютно прозрачен. Пояснения по деталям формирования торговых сигналов и особенностям их фильтрации в материалах блога.
В верхнем левом углу графика расположены еще две метки, добавленные для удобства пользователей:
- TrendDirection, которая принимает значения UP, DOWN и No Trend. Метка указывает на направление торговли, сформированное группой настраиваемых трендов - локальным, краткосрочным, среднесрочным и долгосрочным - в соответствии с выбранным значением вектора фильтрации и режимом адаптивной настройки.     
- ReadyToTrade,  которая принимает значения UP, DOWN и Not Ready. Метка указывает на готовность и направление проведения сделки по торговому сигналу в зависимости от постоянно включенных фильтров часового, внутридневного и дневного трендов.
Сделка производится если направление торговли по обоим меткам совпадает. При отключенных фильтрах локального, краткосрочного, среднесрочного и долгосрочного трендов робот торгует по группе младших трендов, фильтры которых остаются постоянно включенными.
Метки полезны для быстрой оценки ситуации, что бывает полезным, если торговля роботом совмещается с агрессивной ручной торговлей в направлении действующих трендов, а также для торговли внутри дня.

Комментариев нет:

Отправить комментарий