KvaziLocker - событийный советник переменного тайм фрейма, в который зашит торговый стиль г-на VIB - талантливого трейдера, заработавшего трейдингом больше всех, с кем я знаком.

Вот основные положения его метода:

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

Для меня его метод был одновременно и неприемлем (из-за локов), и привлекателен (из-за эффективности  торговли). Поэтому, в KvaziLocker -е я попытался разрешить это противоречие.

 Вместо лока, KvaziLocker ставит квазилок. То есть как бы (квази) его ставит, а на самом деле не ставит, но считает, что поставил. И начинает его развязывать так, как его стал бы VIB развязывать. Но используя для такой квазиразвязки квазизапертый ордер.

Вероятно, квазинепонятно? Поясню на пальцах:

VIB запирал ордер A противоположным ордером В, а потом или вместо запертого А открывал новый ордер С, или развязывал связку ордеров А или В.  

А KvaziLocker только "думает", что делает то же самое, а на самом деле или начинает считать ордером С незапертый (квазизапертый) ордер А, или закрывает А и/или переворачивается (закрывает А и открывает противоположный В).

Кроме квазизамков, в KvaziLocker  есть еще несколько инноваций:

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

Напомню, событие - изменение направления изменения цены не менее чем на пороговую величину.

В KvaziLocker порог последующего события определяется автоматически величиной предыдущего события по формуле:

THR= - (S-F)/2     (1)

, где THR - порог следующего события;

- второй (second) экстремум текущего события;

F - первый (first) экстремум текущего события.

KvaziLocker выделяет зоны областей High и Low текущего события FSHZone и LZone

Начало соответствующей области KvaziLocker определяет, используя параметр ZoneFactor, на расстоянии:

 Zone=(High-Low)/ZoneFactor     (2)

от первого экстремума F текущего события. То есть, для события роста определяется область LZone, а для снижения - HZone. 

Пример, как это выглядит при работе программы. Здесь:

- в верхнем левом углу информация о High-Low текущего события, H и L зонах текущего события, пороге следующего события и о цели по прибыли;

 

- белая наклонная линия - текущее событие изменения цены от первого экстремума до последнего;

- вверх от красной горизонтальной линии - зона HZone;

- вниз от желтой горизонтальной линии - зона LZone

Сетка ордеров и объем сделок

KvaziLocker совершает сделки, когда цена пересекает уровни сеток ордеров, которые расположены вверх от границы HZone и вниз от границы LZone.

KvaziLocker продает при входе цены в зону HZone, покупает при входе цены в зону LZone на глубину переменного шага от предыдущего уровня сетки ордеров.

Количество уровней сетки (максимально допустимое количество одновременно открытых ордеров) задается внешним параметром Positions. 

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

Объем ордера рассчитывается автоматически, используя параметры советника - плечо Leverage  и допустимое количество уровней Positions.  Например, если Leverage = 10, а Positions = 15, то соотношение суммарного объема пятнадцати открытых ордеров к  балансу счета составит 10:1.

Квазилокирование начинается при возникновении необходимости открытия ордера с порядковым номером Positions+1 

Текущие убытки аккумулируются в незакрытых ордерах сетки ордеров. Емкость сетки (суммарный текущий убыток в незакрытых ордерах) перед началом квазилокирования можно рассчитать по формуле [в пунктах котируемой валюты]:

С=(C1+C2+С3)*Point, где

C1=Spread*Positions;

C2=Module*(Positions-1);

C3=Σ(Stepi), i =1,Positions-1;

Stepi=i*StepFactor.

Внешние параметры

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

Module - используемая KvaziLocker -ом единица измерения. Модуль равен максимальной из двух величин:

- заданный процент от  Bid;

- спред.

Initial & Minimal thresholds - Начальный и минимальный пороги события в модулях. Например, порог = 10 означает десять модулей. Если начальный порог не задан, то он принимается равным минимальному.

Distance till TP - дистанция до тейк профита первого открытого ордера. Задается в модулях. Например, дистанция = 3 означает три модуля.  Для последующих ордеров дистанция до тейк профита увеличивается согласно формуле (3), аналогично параметру StepFactor.

Zone factor - Используется для расчета начала зон HZone и LZone по формуле (2). Минимально допустимое значение, при котором событие разделяется на две равные зоны, равно  2.

Step factor - Используется для автоматического расчета шага между уровнями сетки ордеров по формуле:

Step=Module+OrdersTotal*StepFactor*Point     (3)

, где 

Step - шаг между уровнями;

OrdersTotal - порядковый номер уровня;

Point - значение пункта котируемой валюты.

HZone, LZone - Начальные значения зон High и Low. Если не задано, то HZone=High текущего события,  LZone = Low текущего события.

Leverage - допустимое торговое плечо. 

Positions - максимально допустимое количество не закрытых ордеров (количество уровней в сетке ордеров).

Target for equity - Если указано, то задает значение цели по капиталу, по достижению которой все ордера закрываются. Если не указано, то торговля без поставленной цели, то есть, до бесконечности. 

Step till next Target Equity - Если не указано, то после достижения Target for equity советник выгружается. Если указано, то после фиксации текущей Target for equity автоматически назначается новый:

 Target for equity= Target for equity+Step till next Target Equity     (4)

Airbag - подушка безопасности в % от капитала начала сессии.  Если указано, то торговля прекращается, после снижения капитала до указанного значения. Если не указано, то допускается торговля вплоть до обнуления капитала. Рекомендую без подушки безопасности не торговать.

Особенность программы.

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

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

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

При отключенной подушки безопасности (если параметр Airbag =0), полная потеря капитала возможна при изменении цены без отскоков более чем на (100/Leverage)%. Например, при торговле с плечом 1:10 конец может наступить после прямолинейного изменении цены без вибраций на 10%. 

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

Пример

Начальный капитал 1000$

Настройка: Цель по эквити +10$ от базы. Здесь база = эквити = капиталу, когда нет открытых ордеров. Плечо 1:10, уровней сетки 10.

Валютная пара EURUSD.

Примерно до 25 сделки видим увеличение/снижение крутизны роста баланса по мере увеличения/снижения задействованного уровня сетки. Особенно отчетливо рост крутизны виден, после 25-ой сделки, когда при текущей базе около 1032$ была установлена цель по эквити 1043$. После достижения поставленной цели (1043$) на восьмом уровне сетки при балансе около 1054$, робот закрыл все открытые ордера  и приготовился к новому циклу с целью 1054$.

Так как программа предназначена для диапазонной торговли, но по паре EURUSD видим четко выраженный тренд, меняем торговый инструмент на USDJPY, где тренд не такой отчетливый.

Валютная пара USDJPY.

15.08.2017. После достижения цели по эквити 1054$ (при балансе около 1064$) в сделках 41-56, робот закрыл семь уровней сетки открытых ордеров, в которых хранились текущие убытки, и приготовился к новому циклу с целью 1064$.

17.08.2017. В сделках 56-66 пройден путь до предыдущей цели по капиталу, и при капитале 1068намечена следующая цель по капиталу 1078$ 

24.08.2017. Счету исполнился 1 месяц. Закрыто 97 ордеров с плечом 1:1,  суммарная прибыль 9.898%. То есть 1% прибыли добывается примерно за 10 сделок.

05.09.2017. Перед перерывом в торговле закрыто 125 ордеров с плечом 1:1, Profit Factor 4.0, Maximal DrawDown 1.62%,  текущий капитал 1130$. Пару недель торговать не будем.

Скачать
Детальный отчет КвазиЛокера
Kvazilocker.htm
HTML документ 76.0 KB

Программа поставляется бесплатно за % от прибыли. Условия смотрите в Каталоге.