English 中文 Español Deutsch 日本語 Português
preview
Биржевая сеточная торговля лимитными ордерами на полном автомате на Московской бирже MOEX

Биржевая сеточная торговля лимитными ордерами на полном автомате на Московской бирже MOEX

MetaTrader 5Трейдинг | 22 июня 2022, 13:47
4 066 18
Roman Shiredchenko
Roman Shiredchenko

Введение

В данной статье мы подробно расскажем о том, как использовать сеточный торговый подход при написании советника на языке торговых стратегий MQL5. Советник будет торговать по сеточной стратегии в терминале MetaTrader 5 на рынках Московской биржи MOEX, которая также включает в себя закрытие позиции по стоп-лоссу или тейк-профиту, а также удаление отложенных ордеров при наступлении определенных рыночных условий.


1. Описание принципа сеточной торговли

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

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

Например, Вы можете разместить ордера на покупку через каждые 100 руб. ниже рыночной цены фьючерсного контракта на обыкновенные акции Банк ВТБ (ПАО) — VTBR -6.22 (далее - VBM 2), а также разместить ордера на продажу через каждые 100 руб. выше его рыночной цены. Это позволяет извлекать пользу от торговли при различных условиях.

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

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

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

Давайте посмотрим, как это работает. Предположим, вы ожидаете, что в следующие 7 дней цена торгуемого Вами фьючерсного контракта, например, VBM 2 будет колебаться в диапазоне от 1 600 до 2 800 рублей. В этом случае вы можете настроить сеточную торговлю для торговли в пределах прогнозируемого диапазона.

На панели сеточной торговли вы можете установить параметры стратегии, в том числе:

  • верхняя и нижняя границы ценового диапазона;

  • количество ордеров, которые будут размещены в указанном ценовом диапазоне;

  • ширина шага между каждым лимитным ордером на покупку и продажу.


Рис. 1.  Выставление сетки ордеров по сеточной торговле

В этом случае по мере снижения цены фьючерса VBM 2 до 1 600 руб. сеточный советник будет накапливать позиции по более низкой цене, чем на рынке. Когда цены начнут восстанавливаться, он будет продавать по более высокой цене, чем рыночная. В рамках этой стратегии предпринимается попытка извлечь выгоду из разворота направления движения цены.


2. Типы движений цены актива на финансовых рынках, наиболее предпочтительные для торговой системы

Точка входа в данной торговой стратегии привязана к рыночному движению символа. А значит, раскинуть сеть (по сути, войти в сделку) можно в любой момент. Как известно, большую часть времени рынки находятся в боковом движении, так называемом флете. Данный робот написан именно для таких рыночных условий, соблюдая так называемую парадигму — дешево покупаем, дорого продаем.

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

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

Если рассматривать данный торговый подход в общем виде, то касаемо, например, фьючерсного контракта  VBM 2, то даже при наличии однонаправленного (общего итогового) его движения  от нижней границе 1 600 к верхней  2 800, при наличии ценовых колебаний (откатов от основного движения) и, как следствие, сработок и перевыставлений лимитных ордеров как на покупку, так и на продажу, в итоге после условно около 1 месяца торговли на Московской бирже МОЕХ, значение общей прибыли будет выше общего убытка.

Именно за счет ценовых колебаний торгуемого символа между ценовыми уровнями (внутри диапазона) достигается наращивание прибыли по итогам торговли на данном сеточном подходе за выделенный временной период.

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

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


3. Особенности и преимущества сеточной торговли

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

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

Данная торговая система подразумевают торговлю от уровней, используя усреднение (Найман Э. "Мастер-трейдинг: Секретные материалы с. 134), когда вы производите однотипную операцию к совершенной ранее (покупка в длинной позиции или продажа в короткой) по еще более выгодной цене.

Главным минусом усреднения является то, что вы заранее не знаете, до какой цены будет идти против вас рынок. А ведь усреднение требует каждый раз (после первого) вкладывать дополнительные залоговые средства, что увеличивает риск вашей позиции. Большинство начинающих трейдеров совершают традиционную ошибку - в погоне за высокими прибылями они "перегружают" свой счет, доводя величину кредитного рычага до совершенно фантастических величин, иногда даже делая ставку на все имеющиеся средства. (Найман Э. "Мастер-трейдинг: Секретные материалы с. 135)

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

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

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


4. Реализация сеточной торговли

4.1. Механизм сеточной торговли

Этапы сеточной торговли:

  1. Начальная структура - когда вы ставите торгового робота на торги на выбранном вами торговом символе

  2. Открытие позиции - когда срабатывает первый лимитный ордер размещенной вами сетки ордеров

  3. Обновление сетки - когда происходит срабатывание последующих ордеров сетки (либо увеличивающих начальную рыночную позицию, либо ее сокращающих)

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

  5. Контроль за торговлей сеточным советником - закрытие текущей сессии торговли сеткой ордеров в профит, её перевыставление на новых актуальных ценовых значениях минимума и максимума торгуемого вами символа

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

Пример

Предположим, вы установили параметры своей стратегии следующим образом на 01.04.2022 года:

  • Контракт: срочный VBM 2
  • Нижняя граница цены: 1 600 руб.
  • Верхняя граница цены: 2 800 руб.
  • Количество элементов в сетке: 10
  • Режим: равноудаленный

Предположим, вы установили параметры своей стратегии следующим образом:

Первоначальные ордера на покупку нейтральной сетки будут размещены ниже текущей рыночной цены. Между тем ордера на продажу будут выставлены выше текущей рыночной цены. После срабатывания ближайшего лимитного ордера на покупку или на продажу произойдет так называемый процесс - назовем его активацией торговой сетки. Далее уже в торгах будут задействовано 9 ордеров.

Распределение цен будет следующим по типам ордеров:

  • Buy Limit: 1 600 рублей, 1 733 рубля, 1 866 рублей, 1 999 рублей  

  • Sell Limit: 2 135 рублей, 2 268 рубля, 2 401 рубля, 2 534 рубля, 2 667 рублей, 2 800 рублей

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

Сводка всех исполненных ордеров.

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

Диапазон от нижней границы (LOW_PRICE_BuyLim) до верхней границы (HIGH_PRICE_SellLim) делится на заданное количество ордеров (Number_of_elements_in_the_grid) с равными промежутками. Желательно самостоятельно посмотреть и выбрать значения диапазона и количества ордеров в сетке (от 3-х), чтобы итоговая ширина между ордерами была выше спреда символа и ценовые значения границ были вне текущей цены.

Причем верхняя граница ценового диапазона: HIGH_PRICE_SellLim, должна по значению быть больше нижней границы диапазона: LOW_PRICE_BuyLim.

4.2. Обновление сетки

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

К примеру, в этом случае, после активации сеточной стратегии первым лимитным ордером в селл и последующем движении цены фьючерсного контракта VBM2 вверх, после сработки очередного лимитного ордера в селл,  нижняя часть сетки (количество Buy Limit ордеров)  будет увеличена на 1 ордер BuyLimit -  размещен на 1 шаг выше (ближе к цене) предыдущего  BuyLimit ордера сети.

А именно, после активации сеточной торговли, движения цены вверх и срабатывания первого после активации сети лимитного ордера в селл, лимитные цены для каждого уровня в сетке будут следующие:

Цена, руб. Направление и тип ордера/позиции
2 534 Продажа лимитным
2 401 Продажа лимитным
2201,5 Рыночная позиция объемом 2-х первых селл лимит ордеров
2 132 Покупка лимитным ордером
1 999 Покупка лимитным ордером
1 866 Покупка лимитным ордером
1 733 Покупка лимитным ордером
1 600 Покупка лимитным ордером

Что отражено на представленном ниже рисунке:


Рис. 2. Процесс обновления сетки ордеров - после ее активации и срабатывания очередных лимитных ордеров

Таким образом, и далее происходит процесс обновления ордеров сетки.

Параметры сетки:

//+------------------------------------------------------------------+
//|                          ВНЕШНИЕ ПЕРЕМЕННЫЕ СЕТИ
//+------------------------------------------------------------------+
input int Volume = 1;                          //Volume контракта/лота
input double HIGH_PRICE_SellLim = 2800.00;     //HIGH_PRICE_SellLim (верхняя цена крайнего SellLim ордера сетки)
input double LOW_PRICE_BuyLim  = 1600.00;      //LOW_PRICE_BuyLim   (нижняя цена крайнего BuyLim ордера сетки) для BuyLim
input double HIGH_PRICE_SL  = 100.00;          // HIGH_PRICE_SL: SL в пунктах от HIGH_PRICE_SellLim (верхняя цена стоп-лосса) для SellLim
input double LOW_PRICE_SL = 100.00;            // LOW_PRICE_SL:  SL в пунктах от LOW_PRICE_BuyLim (нижняя цена стоп-лосса)  для BuyLim
input int Pending_order_period  = 12;          // Pending_order_period: время в месяцах выставления лимитных ордеров
input int Number_of_elements_in_the_grid = 10; // Number of elements in the grid (number of limit orders)
input double TakeProfit  = 0;                  // TakeProfit в пипсах ордеров от цены их выставления
input double Profit_percentage = 0;            // Profit_percentage - процент закрытия сети в прибыли
                                               // работает при значении > "0"
input  bool Continued_trading = false;         // Continued_trading - продолжать ли торговлю после выхода по проценту закрытия сети в прибыли   

input int    Time_to_restrict_trade  = 0;      // Time_to_restrict_trade - установка времени (в днях) истечения для позиции при профите
                                               // (выход из рынка по окончании периода в днях)                                              

input int Magic       = 10;                    // Magic Number

Названия внешних переменных и их расшифровка сделаны максимально подробно, поэтому не требуют излишних комментариев.

Что еще немаловажно, это выставление значений переменных

HIGH_PRICE_SellLim 

не ниже верхнего и

LOW_PRICE_BuyLim  

не ниже нижнего лимита значений, определенных (заданных) Московской биржей: 

https://www.moex.com/en/contract.aspx?code=VTBR-6.22

Данная и прочая информация отображена в параметрах инструмента на Московской бирже (рис.3)


Рис. 3. Параметры инструмента - Фьючерсный контракт на обыкновенные акции Банк ВТБ (ПАО) VTBR-6.22

Торговый подход продемонстрирован на рис. 4.2.

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


Рис. 4.1. Торговля сеточным советником на Фьючерсном контракте на обыкновенные акции Банк ВТБ (ПАО) VTBR-6.22 


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


Рис. 4.2. Торговля сеточным советником на Фьючерсном контракте на обыкновенные акции Банк ВТБ (ПАО) VTBR-6.22 при ненулевых значениях стоп-лосса и тейк-профита

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

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

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

Заключение

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

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

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

Примечание:

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

Список рекомендованной литературы:

- Найман Э. "Мастер-трейдинг: Секретные материалы - М: Альпина Паблишер, 2002 г. - 320 стр.

Прикрепленные файлы |
GRID_TRADING_v.01.mq5 (112.28 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (18)
tapo
tapo | 26 июн. 2022 в 00:52
Roman Shiredchenko #:

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

Давно так не смеялся:) 24-го в первую минуту падение на 8% (акция ВТБ ложится на планку), всего падение на 50%+, а Вы заходили? А как же:

Там же все расписано! Алло! Вне диапазонов не торгуем!

Алло! Собственные правила нарушали? А сделочки не покажете? А то что-то враньем воняет.

Далее, Вы, видимо, после 60% падения не спасовали, и вместо того, чтобы переждать некоторое время зашли 25 февраля еще раз, еще раз, еще много-много раз и продолжили сидеть дальше. 26 февраля рынок вообще был закрыт. На закрытом торговали?:) Или месяц в заморозке сидели... Или как там в Вашей сказке дело было?

Roman Shiredchenko
Roman Shiredchenko | 26 июн. 2022 в 08:09
tapo #:

Давно так не смеялся:) 24-го в первую минуту падение на 8% (акция ВТБ ложится на планку), всего падение на 50%+, а Вы заходили? А как же:

Алло! Собственные правила нарушали? А сделочки не покажете? А то что-то враньем воняет.

Далее, Вы, видимо, после 60% падения не спасовали, и вместо того, чтобы переждать некоторое время зашли 25 февраля еще раз, еще раз, еще много-много раз и продолжили сидеть дальше. 26 февраля рынок вообще был закрыт. На закрытом торговали?:) Или месяц в заморозке сидели... Или как там в Вашей сказке дело было?


Сделки не  покажу, сообщу лишь, что покупку перевернул  в продажу и вышел по безубытку.  "А то что-то враньем воняет" - от Вас. 
Собственные правила торговли  не нарушал.

Что касается торговли в диапазоне, на лимитках, то она предполагает  торговлю  во флете. Стопы, обычное дело,  торговой системы и если отстопило, тем более, когда идут планки, неужели тут не понятно, что  надо какое то время вновь оценить рынок?
Как часто планки бывают на бирже?
2014, 2020, 2022 ??? Не???

Сработка стопа, это нома торговой системы, в итоге решает профит, лосс  за месяц, за пол года, за год.

Ожидаемый вопрос торговли на закрытом рынке, да  была позиция на закрытом рынке.

LordVinicius
LordVinicius | 29 авг. 2022 в 13:28

Neste artigo, o FIFO (First In First Out) é mencionado para cálculo do preço médio, pois o MT 5 ainda não disponibilizou outras opções para o cálculo do preço médio, como o LIFO (Last In, First Out)? Isso é muito importante e não ter LIFO torna o MT 5 uma plataforma desatualizada e eu acabo usando outras plataformas! LIFO influencia TUDO!!! O MT 5 deve disponibilizar o LIFO o mais rápido possível!!!

Roman Shiredchenko
Roman Shiredchenko | 30 авг. 2022 в 06:54
LordVinicius #:

Neste artigo, o FIFO (First In First Out) é mencionado para cálculo do preço médio, pois o MT 5 ainda não disponibilizou outras opções para o cálculo do preço médio, como o LIFO (Last In, First Out)? Isso é muito importante e não ter LIFO torna o MT 5 uma plataforma desatualizada e eu acabo usando outras plataformas! LIFO influencia TUDO!!! O MT 5 deve disponibilizar o LIFO o mais rápido possível!!!


Добрый день - как переведу текст - сразу напишу тут по существу коммента. Спс за интерес с Вашей стороны.
Roman Shiredchenko
Roman Shiredchenko | 7 сент. 2022 в 12:42
LordVinicius #:

Neste artigo, o FIFO (First In First Out) é mencionado para cálculo do preço médio, pois o MT 5 ainda não disponibilizou outras opções para o cálculo do preço médio, como o LIFO (Last In, First Out)? Isso é muito importante e não ter LIFO torna o MT 5 uma plataforma desatualizada e eu acabo usando outras plataformas! LIFO influencia TUDO!!! O MT 5 deve disponibilizar o LIFO o mais rápido possível!!!

A pergunta não é clara:

o preço médio de uma posição é calculado independentemente do número de disparo da ordem - a primeira ou a última ordem veio e como saiu FIFO (First In First Out) ou LIFO (Last In, First Out) na plataforma MT 5. Contabilização de compensação de posições são mantidas na bolsa.

O artigo diz:

Cada transação consiste em um par de ordens de compra e venda correspondentes, o tipo de transação é FILO (first in, last out). O lucro pode ser calculado com base em cada par de ordens de compra e venda correspondidas.

Seja mais específico sobre sua solicitação - fornecerei uma explicação detalhada, incluindo uma explicação do cálculo do preço médio da posição agregada, se você estiver interessado.

DoEasy. Элементы управления (Часть 9): Реорганизация методов WinForms-объектов, элементы управления "RadioButton" и "Button" DoEasy. Элементы управления (Часть 9): Реорганизация методов WinForms-объектов, элементы управления "RadioButton" и "Button"
В статье наведём порядок в наименованиях методов классов WinForms-объектов и создадим WinForms-объекты Button и RadioButton.
Разработка торговой системы на основе индикатора CCI Разработка торговой системы на основе индикатора CCI
В очередной статье из серии, посвященной разработке торговых систем, я представлю индекс товарного канала (CCI), объясню его особенности и поделюсь тем, как создать торговую систему на основе этого индикатора.
Нейросети — это просто (Часть 18): Ассоциативные правила Нейросети — это просто (Часть 18): Ассоциативные правила
В продолжение данной серии статей предлагаю познакомиться ещё с одним типом задач из методов обучения без учителя — поиск ассоциативных правил. Данный тип задач впервые был применен в ритейле для анализа корзин покупателей. О возможностях использования подобных алгоритмов в рамках трейдинга мы и поговорим в этой статье.
Метамодели в машинном обучении и трейдинге: Оригинальный тайминг торговых приказов Метамодели в машинном обучении и трейдинге: Оригинальный тайминг торговых приказов
Метамодели в машинном обучении: Автоматическое создание торговых систем практически без участия человека — Модель сама принимает решение как торговать и когда торговать.