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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

Dredger  продает при входе цены в зону HZone, покупает при входе цены в зону LZone с постоянным шагом Space=GriidSpace  между уровнями сетки ордеров.

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

Значение шага между уровнями сеток задается в модулях [Module ] параметром GriidSpace.

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

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

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

С=(C1+C2), где

C1=Spread*Positions;

C2=GriidSpace*Positions/2;

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

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

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

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

- спред.

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

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

для buy TakeProfit= OpenPrice+(Distance till TP*Module) + GriidSpace    (3)

для sell TakeProfit= OpenPrice-(Distance till TP*Module) - GriidSpace

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

Previous extrime-  Величина предыдущего экстрима. Если не указано, то берется из глобальной переменной PreviousExtrime ( доступ через F3). Если указано, то величина должна или совпадать с величиной глобальной переменной PreviousExtrime, или глобальную переменную надо удалить/отредактировать ее величину.

HZone, LZone - Начальные значения зон High и Low. Если не задано, то устанавливаются роботом автоматически в зависимости от состояния рынка и открытых позиций.

Leverage - допустимое плечо размера суммы открытых ордеров относительно баланса счета.

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

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%. 

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