2.1. Задание глубины анализа рынка

Рис.2.1. SWT-Robot. Отображения параметров состояния
Глубина анализа рынка определяет уровень самого старшего тренда, начиная с которого определяется направление движения котировок.
Уровень старшего тренда задается параметром TrendVector - целое число, определяющее номер старшего тренда, начиная с которого учитываются все тренды более низкого уровня при определении направления торговли.
Количество трендов, используемых для проектирования торговых стратегий восемь, и им присвоены следующие номера:
Basic - номер 8 - основной тренд;
Long - номер 7 - долгосрочный тренд;
Medium - номер 6 - среднесрочный тренд;
Short - номер 5 - краткосрочный тренд;
Weekly - номер 4 - недельный тренд;
Daily - номер 3 - дневной тренд;
IDay - номер 2 - внутридневной тренд;
Hourly - номер 1 - часовой тренд.
В случае, когда учитываются все тренды значение параметра TrendVector будет равно восемь. Если исключить базовый тренд - 7, и т.д.
В программе введены ограничения на диапазон вектора трендов, исключающие ошибки:
- если значение параметра установлено больше 8, то программа принимает значение 8;
- если значение параметра установлено больше 8, то программа принимает значение 8;
- если значение параметра установлено меньше 4, то программа принимает значение 4.
Искусственно тренды разбиты на две группы.
Пять старших формируют параметр Trend, задающий направление торговли.
Три младших - параметр Pattern, определяющий условия входа в рынок (по паттернам дневного тренда).
Направление торговли определяется в двух вариантах.
При значении параметра AdsptiveMode=true и заданной глубине анализа учитывается старший из направленных трендов группы Trend - доминирующий тренд. Если все тренды группы находятся в состоянии коррекции, то направление торговли определяется недельным трендом.
При значении параметра AdsptiveMode=false и заданной глубине анализа учитываются все тренды группы независимо от их состояния, а направление торговли определяется по всей совокупности учитываемых трендов.
Полные условия открытия позиций определяются следующим образом:


Правила очень просты.
В зависимости от настройки тренд/контртренд по каждому из трендов формируются условия для открытия лонга или шорта.
Обозначения на примере недельного тренда:
- Wup - движение вверх;
- Wdn - движение вниз;
- WC - коррекционный характер движения;
- !WC - не коррекция;
- WTup - признак роста по совокупности параметров для недельного тренда;
- WTdn - признак снижения по совокупности параметров для недельного тренда;
- Weekly=true означает, что тренд учитывается при формировании условий сделки.
Для остальных трендов аналогично.
Далее, с учетом алгоритмов выбора трендов, как логическое произведение разрешающих условий по каждому из учитываемых трендов, формируются условия для открытия сделки в каждый конкретный момент времени.
В зависимости от настройки тренд/контртренд по каждому из трендов формируются условия для открытия лонга или шорта.
Обозначения на примере недельного тренда:
- Wup - движение вверх;
- Wdn - движение вниз;
- WC - коррекционный характер движения;
- !WC - не коррекция;
- WTup - признак роста по совокупности параметров для недельного тренда;
- WTdn - признак снижения по совокупности параметров для недельного тренда;
- Weekly=true означает, что тренд учитывается при формировании условий сделки.
Для остальных трендов аналогично.
Далее, с учетом алгоритмов выбора трендов, как логическое произведение разрешающих условий по каждому из учитываемых трендов, формируются условия для открытия сделки в каждый конкретный момент времени.
2.2. Условия открытия позиций
В самом простом варианте при заданной глубине анализа позиции открываются в направлении действующего тренда.Тренд считается восходящим, если движение по всем учитываемым компонентам направлено вверх - признак OpbuyTD.
Тренд считается нисходящим, если движение по всем учитываемым компонентам направлено вниз - признак OpsellTD.
В режиме контртренд позиции открываются против направления тренда.
Аналогичным образом трактуется значение параметра Pattern.
Лонг разрешен если все компоненты направлены вверх - OpbuyRT.
Шорт разрешен если все компоненты направлены вниз - OpsellRT.
Режим контртренда не меняет характер учета трендов, входящих в группу Pattern.
Если согласованного движения по двум параметрам нет, то новые позиции не открываются. Старые удерживаются, если не сформированы признаки закрытия позиций.
2.3. Торговый сигнал
Торговый сигнал формируется по внутричасовому тренду - волна W2 графика минутного масштаба (см. рис.2.2)
Рис.2.2. Формирование торговых сигналов
Торговые сигналы формируются по двум признакам.
Первый признак - пересечение волной внутричасового тренда нулевой линии. Если волна пересекает нулевую линию снизу вверх - формируется сигнал BUY. Если сверху вниз - сигнал SELL.
Второй признак - изменение направления движения волны. Если волна находясь в области положительных значений и двигаясь к нулевой линии разворачивается вверх - формируется сигнал BUY. Если волна находясь в области отрицательных значений и двигаясь к нулевой линии разворачивается вниз - формируется сигнал SELL.
Сделка на покупку открывается если параметр Тренд имеет значение UP, параметр Pattern - UP, сигнал - BUY и отсутствуют блокировки на открытие позиции.
Сделка на продажу открывается если параметр Тренд имеет значение DN, параметр Pattern - DN, сигнал - SELL и отсутствуют блокировки на открытие позиции.
2.4. Блокировки
Открытие позиций блокируется при превышении установленного лимита риска, заданного значения кредитного плеча и при наличии доминирующей коррекции, если она учитывается в настройках робота.2.5. Открытие позиций по алгоритму сетки
Если установлен режим использования сетки Grid=true, то в момент открытия лонга по торговому робот формирует два уровня цены
if(LevelUp < (Ask + GridStep * Point))
LevelUp = Ask + GridStep * Point;
if(LevelDn > (DoubleGrid * (Ask - GridStep * Point)))
LevelDn = DoubleGrid * (Ask - GridStep * Point);
где GridStep - шаг сетки в пунктах.
if(LevelUp < (Ask + GridStep * Point))
LevelUp = Ask + GridStep * Point;
if(LevelDn > (DoubleGrid * (Ask - GridStep * Point)))
LevelDn = DoubleGrid * (Ask - GridStep * Point);
где GridStep - шаг сетки в пунктах.
При активировании сеточного алгоритма и старте покупок робот разрешает работу по сетке. При достижении ценой верхнего уровня робот открывает новый лонг и формирует следующую пару уровней.цены.
При двойном сеточном алгоритме (DoubleGrid=true) позиция откроется и при движении цены вниз и достижении нижнего уровня.
При двойном сеточном алгоритме (DoubleGrid=true) позиция откроется и при движении цены вниз и достижении нижнего уровня.
После закрытия всех позиций уровни сетки обнуляются и робот переходит в режим ожидания до открытия новой позиции по торговому алгоритму.
Для коротких позиций - шорт - ситуация аналогичная, только уровни отсчитываются от цены Bid, а не Ask.
if(LevelUp < (DoubleGrid * (Bid + GridStep * Point)))
LevelUp = DoubleGrid * (Bid + GridStep * Point);
if(LevelDn > (Bid - GridStep * Point))
LevelDn = Bid - GridStep * Point;
При необходимости шаг сетки масштабируется коэффициентом GridStepFactor - множитель шага сетки - или устанавливается вручную.
2.6. Открытие позиций от границ каналов волатильности
Это допонительная опция, активируемая установкой параметра ChannelInput=true.
Позиции открываются в направлении действующего тренда при отсутствии блокировок по лимиту риска и кредитному плечу.
При возврате цены в канал волатильности сверху робот продает, при возврате в канал снизу - покупает (см. рис.2.3).

Рис.2.3. Открытие позиций от границ каналов волатильности.
Каналы волатильности дневного и внутридневного трендов отрабатываются независимо.
Комментариев нет:
Отправить комментарий