Скачать Советник QLT (Quantum)
зарегистрируйтесь бесплатно или войдите, чтобы скачать материалы. Это займет не более 5-х секунд.
Описание: Советник основан на индикаторе Quantum. Используются свои методы фильтрации сигналов и выставления ордеров. На данный момент не использует никаких других индикаторов. Сетки buy/sell не зависят друг от друга.
Цель используемых методов - уменьшить просадку и не строить большие сетки.
Использование: Закинуть советник на график М1 нужной пары и загрузить соответствующий пресет. Настройки по-умолчанию не использовать! Наличие индикатора Quantum не требуется.
ММ: $10000 на начальные 0.02 лота.
Как работает советник:
При появлении сигнала от Quantuma начинается отсчет. Если не было сброса счетчика и было пропущено нужное количество сигналов (все в соответствии с настройками), то берется или рассчитывается коэф. умножения лота и открывается рыночный ордер. При появлении новых сигналов выставляются отложенные ордера. Если у новой отложки цена лучше чем у имеющихся, то они закрываются. Новый ордер выставляется с учетом объема не сработавших.
Подробное описание работы советника.
Для тех, кто не знает: индикатор Quantum показывает минимумы и максимумы за определенное количество свечей. Торговая стратегия по данному индикатору подразумевает открытие ордеров против текущего движения, в расчете на откат/разворот.
Рассматриваться будет вариант с использованием отложек. Хотя в настройках их можно отключить, но не советую, результат будет гораздо хуже.
Также будет рассматриваться закрытие сетки только в плюс. Это тоже можно отключить и закрывать сетку по сигналу индикатора (qdc), но не вижу в этом смысла.
Получив сигнал индикатора (qde), советник начинает отсчет этих сигналов. Он пропускает количество сигналов, указанных в настройках (Wait), и открывает рыночный ордер. Если в настройках указано пропустить 7 сигналов, то ордер откроется после появления 8-го сигнала.
Счетчик обнуляется в следующих случаях:
1. Было уже NumBoxes сигналов, а цена прошла меньше NumPoints пунктов. Например, в настройках установлено 6 и 10. Значит при появлении 7-го сигнала, если цена прошла меньше 10 пунктов, счетчик будет обнулен.
Бывает вялотекущее движение цены в одну сторону. При этом прошли не много, а счетчик уже накрутили. Для таких ситуаций и сделана эта настройка.
2. Если с начала отсчета прошло больше NumPriceTime минут.
При длительном флэте цена может выдавать новые максимумы/минимумы (скажем 2-3 сигнала) и опять уходить в границы флэта. Если такие ситуации не фильтровать, то к моменту, когда начнется движение, счетчик уже почти израсходуется и сетка начнет строиться раньше, чем надо, т.е. в самом начале активного движения, а не когда движение уже будет затихать.
3. Когда количество сигналов равно количеству свечей (NumBoxes2). Если в настройках указано 5, то при появлении 6-го сигнала, счетчик будет обнулен.
Когда начинается активное движение, то сигналы могут появляться на каждой новой свече. Если на этих сигналах открывать сделки, то они сразу пойдут в минус. Лучше такое движение пропустить.
4. При появлении противоположного сигнала.
Например, мы считаем сигналы для открытия сетки в sell. Нужного количества так и не набрали, цена пошла вниз и появился сигнал на buy. Очевидно, что ситуация на рынке изменилась и лучше начать отсчет заново.
При появлении новых сигналов, советник будет выставлять отложенные ордера (стоповые). Отложки виртуальные, т.к. не все брокеры позволяют поставить отложку на оптимальном расстоянии. Если цена безоткатно идет дальше, то отложка не срабатывает, а значит не будет увеличивать просадку. Хотя отложки и съедают часть прибыли, но не редко позволяют избежать слива.
Ставятся отложки на определенном расстоянии (Delta) от текущей цены: для buystop - от цены ask, для sellstop - от цены bid.
По прошествии определенного времени (TimeSec), не сработавшая отложка удаляется, а ее объем запоминается. Следующая отложка будет выставлена с учетом этого объема. Время жизни отложки проверяется при появлении новой свечи, поэтому отложка может просуществовать несколько больше, чем указано в настройках.
Если есть активные (не удаленные) отложки, то при выставлении новой проверяется, не будет ли цена этой отложки лучше, чем у активных. Если да, то они закрываются, а новая выставляется с учетом их объемов.
Отложки можно тралить. Правда для маленькой сетки пользы от этого нет. Поэтому в настройках указывается количество ордеров, при превышении которого включается трал.
Когда начинает строиться сетка, то может случиться ситуация, при которой появляется много сигналов, а цена при этом проходит не так много и с небольшими откатами. Когда же начинается основное движение, то остается целая пачка ордеров, собранных в кучу. Чтобы такого не происходило, есть следующие настройки.
Открывать только выше/ниже (для sell/buy) чем предыдущий ордер (OnlyLowerHigher). При включении данной настройки, сигналы, не удовлетворяющие условиям, будут проигнорированы. Т.к. эффективно это только для начала сетки, то указывается количество ордеров, до которого используется этот параметр (NumOrders).
В самом начале сетки имеет смысл не только открывать ордера выше/ниже, но и указать побольше расстояние между ними (HighLowPoints). Соответственно, указывается и количество ордеров, для которых это действует (NumOrders2).
Например, в настройках указаны параметры 19, 2, 5. Значит, первые 5 ордеров будут выставляться на расстоянии не менее 2 пунктов между собой, далее просто выше (или ниже) друг друга, пока количество ордеров в сетке не превысит 19, а дальше уже просто по сигналам, не зависимо от того где в данный момент оказалась цена.
Рано или поздно цена начинает двигаться в нужную сторону и появляется сигнал от индикатора (qdc), что надо закрывать сетку. Можно закрывать и в минус, но, на мой взгляд, лучше все-таки еще подождать и закрыть в плюс (пусть даже и маленький). Для этого есть соответствующая настройка (CloseOnlyPlus). Также указывается минимальное количество пунктов профита (ProfitPoints) при котором будет закрытие сетки, т.е. если на момент появления сигнала, размер профита не менее указанного, то сетка закроется.
Когда сетка вырастает выше среднего размера, лучше ее закрыть с меньшим профитом или даже с некоторым убытком, чем дожидаться когда она вырастет и сожрет весь депозит. Для этого можно указать допустимый убыток (PointLoss) и количество ордеров (NumOrdPointLoss), при превышении которого и будет учтена настройка. Если убыток указать со знаком минус, получится соответствующий профит. Таким образом, маленькие сетки можно закрывать, например, в +3 пункта, а большие в +1.
Бывают такие движения цены (в основном на новостях), когда она сходила в одну сторону, выдала сигналы на открытие сетки, а затем быстренько пошла в другую сторону. Сетка при этом может выйти в приличный плюс, но сигнала на закрытие еще нет. Когда же сигнал все-таки появится, то профит может быть уже не таким большим. Также бывает, что на откате сетка вышла уже в приличный плюс, но до появления сигнала так и не дошла. Чтобы не упускать такие варианты, можно указать размер профита (ProfitPoints3), при котором будет закрыта сетка даже без появления сигнала. Проверка осуществляется на каждой новой свече.
Вместо немедленного закрытия сетки, можно попытаться тралить профит, включив соответствующий блок (UseTrStop). Здесь есть следующие настройки.
Начальный уровень (TrailingStop0). На этом расстоянии от текущей цены будет выставлен уровень стоплоса (виртуальный).
TrailingStop. На это расстояние от текущей цены будет подтягиваться стоплос.
Шаг TrailingStop (TrailingStopStep). Стоплос будет переставлен, если цена пройдет больше указанного здесь количества пунктов.
Если сетка имеет маленький плюс, то использование трала может привести к закрытию в минус. Чтобы такого не было, есть настройка (ProfitPoints2), в которой указывается минимальный размер профита, при котором будет использоваться трал. Т.е., если профит был меньше, то трал не включится и произойдет обычное закрытие сетки.
Т.к. советник строит сетку ордеров, то в настройках можно указать объем ордеров (T1, T2, T3, T4, T5, T6) и их количество (kol1, kol2, kol3, kol4, kol5, kol6). Если количество указать ноль, то ордера соответствующего объема открываться не будут. Рекомендуется объем первого ордера (T1) указать 0.01, а увеличение делать с помощью коэффициента умножения лота (Klots). Таким образом, у вас будет минимально возможный размер ордеров (с соответствующей просадкой и доходностью), который можно легко масштабировать на любой размер депозита всего одним коэффициентом.
Если Klots указать ноль, то будет использоваться автоматический расчет коэффициента. При этом используется размер свободной маржи на 0.01 лота (MarginForLot). Коэффициент округляется до целого числа в меньшую сторону.
Советник имеет собственный счетчик ордеров. Он не зависит от того, удалось открыть реальный ордер или нет, сработала отложка или нет, и отражает то количество, которое должно было быть по стандартному алгоритму. Все расчеты, связанные с количеством ордеров, используют именно этот счетчик. Значение счетчика выводится в окно графика вместе с другими данными. Количество реально открытых ордеров ни в каких расчетах не участвует.
Настройки:
Используются старые пункты, на 5-тизнак пересчитывается автоматом.
mn = 2016; // Magic Number
Slip = 5; // Проскальзывание
tf = M1; // Используемый таймфрейм
NoNewGrid = false; // Не начинать новую сетку (Если нужно чтобы советник закончил текущую сетку и не начинал новую, то выставить значение в true)
Wait = 0; // Пропустить N боксов перед открытием сетки
// Обнулить счетчики если...
NumBoxes = 8; // 1а ...количество сигналов больше и...
NumPoints = 8; // 1б ...цена прошла меньше (пункты)
NumPriceTime = 180; // 2 ...или прошло больше времени от начала отсчета (минуты)
NumBoxes2 = 5; // 3 ...или количество сигналов равно количеству свечей (>)
// -----------------------------
OnlyLowerHigher = true; // Открывать только выше/ниже (для sell/buy) чем предыдущий ордер
NumOrders = 8; // Количество ордеров для которых применяется параметр
HighLowPoints = 1; // Количество пунктов между ордерами
NumOrders2 = 8; // Количество ордеров для которых применяется предыдущий параметр
HL12 = false; // Для оптимизации. Верхнее количество ордеров равно нижнему
// -----------------------------
qde = 240; // Quantum eintDepth3 for Entry (QDE)
qdcqde = false; // Для оптимизации. QDC равно QDE
qdc = 240; // Quantum eintDepth3 for Close (QDC)
// -----------------------------
CloseOnlyPlus = true; // Закрывать сетку только в плюс
ProfitPoints = 1; // Количество пунктов профита
ProfitPoints3 = 20; // Количество пунктов профита (закрытие без QDC) (Если текщий профит достиг заданного уровня, то сетка закроется)
PointLoss = 12; // Допустимый убыток при закрытии (пункты), менее (Если поставить отрицательное значение, то убыток станет соответствующим профитом)
NumOrdPointLoss = 50; // Кол-во ордеров (>), с которых применяется предыдущий параметр
// -----------------------------
UseTrStop = false; // Использовать TrailingStop для профита (Трал используется вместо немедленного закрытия, т.е. должен появиться сигнал на закрытие сетки)
TrailingStop0 = 2; // Начальный уровень (пункты)
TrailingStop = 2; // TrailingStop (пункты)
TrailingStopStep = 1; // Шаг TrailingStop (пункты)
ProfitPoints2 = 4; // Размер профита, с которого включается трал (пункты)
// -----------------------------
UseOtlOrders = true; // Использовать отложенные ордера (стоповые) (Ордера виртуальные)
Delta = 1; // Расстояние от текущей цены до отложенного ордера (пункты)
TimeSec = 210; // Время жизни отложенного ордера (сек.)
UseOtlTrailing = false; // Использовать трал для отложенных ордеров
DeltaTr = 3; // Расстояние трала отложенных ордеров (пункты)
NumOtl = 10; // Количество ордеров (>), с которых включать трал
// -----------------------------
Klots = 1; // Коэффициент умножения лота (0 - автомат)
MarginForLot = 10000; // Размер свободной маржи на 0.01 лота (при Klots = 0)
// -----------------------------
T1 = 0.01; // Размер лота1
kol1 = 12; // Количество ордеров1
T2 = 0.02; // Размер лота2
kol2 = 9; // Количество ордеров2
T3 = 0.04; // Размер лота3
kol3 = 8; // Количество ордеров3
T4 = 0.08; // Размер лота4
kol4 = 7; // Количество ордеров4
T5 = 0.16; // Размер лота5
kol5 = 3; // Количество ордеров5
T6 = 0.25; // Размер лота6
kol6 = 70; // Количество ордеров6
// -----------------------------
font_color = clrSilver; // Цвет шрифта
FontSize = 10; // Размер шрифта
enum ugol
{
topleft = 0, // верхний левый
topright = 1, // верхний правый
bottomleft = 2, // нижний левый
bottomright = 3 // нижний правый
};
corner = 0; // Угол окна для вывода информации
xx = 10; // Отступ по горизонтали
yy = 20; // Отступ по вертикали