admin@guru-net.biz

Phone : +7 903 662-35-39

Сеточная стратегия: как заработать на рыночном шуме

Categories:

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

🌊 Что такое торговый шум

Современные рынки имеют повышенный уровень торгового шума. Торговый шум — это случайные колебания цены вокруг среднего значения. Уровень шума бывает разным:

  • Низкий уровень шума — небольшое зигзагообразное движение вокруг тренда;

Низкий уровень шума

  • Средний уровень шума — колебания средней амплитуды;

Средний уровень шума

  • Высокий уровень шума — большая амплитуда колебаний, хорошо заметны циклы;

Высокий уровень шума

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

🕸️ Как работает стратегия «Сетка ордеров»

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

Сетка ордеров

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

🧮 Расчёт прибыли

Прибыль за один полный микроцикл сетки зависит от количества уровней, шага сетки и объёма ордера. Важно правильно понимать, что такое «длина сетки».

Обозначения:

  • N — количество уровней в одну сторону (Buy или Sell). При симметричной сетке количество Buy-уровней равно количеству Sell-уровней;
  • Шаг — расстояние между соседними уровнями сетки;
  • Объём — объём одного ордера;
  • Комиссия — комиссия брокера за одну сделку (в расчёте на один ордер).

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

Прибыль = 2 × N × Шаг × Объём − 2 × N × Комиссия

где 2 × N — общее количество ордеров в сетке (N на покупку и N на продажу).

Пример расчёта:

  • N = 4 (4 уровня на Buy и 4 на Sell, всего 8 ордеров);
  • Шаг = 1 рубль;
  • Объём = 1;
  • Комиссия = 0.

Прибыль = 2 × 4 × 1 × 1 − 0 = 8 рублей

Если сеточная стратегия используется вместе с позицией, открытой в направлении основной тенденции, общая прибыль составит:

Прибыль по основной позиции + Прибыль по сеточной стратегии

⚠️ Риски стратегии

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

Примеры прибыльных торговых дней:

прибыльный день 1

прибыльный день 2

прибыльный день 3

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

убыточный день 1

убыточный день 2

убыточный день 3

🛡️ Работа с рисками

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

Псевдокод анализа инструмента:

-- Анализ инструмента для сеточной стратегии
-- Цель: найти символ с максимальным количеством дней,
-- где |close - open| минимально

function AnalyzeInstrumentForGrid(symbol, days_count)
    local good_days = 0
    local total_days = 0
    local avg_range = 0
    
    for i = 1, days_count do
        local open = GetOpen(symbol, i)
        local close = GetClose(symbol, i)
        local high = GetHigh(symbol, i)
        local low = GetLow(symbol, i)
        
        local day_range = math.abs(close - open)
        local day_volatility = high - low
        
        -- День считается "хорошим", если цена закрытия близка к открытию
        -- и волатильность не слишком высокая
        if day_range < day_volatility * 0.3 then
            good_days = good_days + 1
        end
        
        avg_range = avg_range + day_volatility
        total_days = total_days + 1
    end
    
    avg_range = avg_range / total_days
    local good_ratio = good_days / total_days
    
    return {
        symbol = symbol,
        good_days = good_days,
        total_days = total_days,
        good_ratio = good_ratio,
        avg_range = avg_range,
        score = good_ratio * (1 / avg_range)  -- чем больше хороших дней и меньше волатильность, тем лучше
    }
end

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

🔄 Хеджирование

Ещё один вариант снижения рисков — использовать хедж. Для этого нужно посчитать корреляцию между инструментами для торговли и хеджа, а также коэффициент хеджирования.

Псевдокод для расчёта корреляции и коэффициента хеджирования:

-- Расчёт корреляции между инструментами и коэффициента хеджирования
-- correlation = cov(X, Y) / (std(X) * std(Y))
-- hedge_ratio = cov(X, Y) / var(Y)

function CalculateCorrelationAndHedgeRatio(symbol_main, symbol_hedge, period)
    local prices_main = {}
    local prices_hedge = {}
    
    -- Собираем цены закрытия за период
    for i = 1, period do
        prices_main[i] = GetClose(symbol_main, i)
        prices_hedge[i] = GetClose(symbol_hedge, i)
    end
    
    -- Средние значения
    local mean_main = 0
    local mean_hedge = 0
    for i = 1, period do
        mean_main = mean_main + prices_main[i]
        mean_hedge = mean_hedge + prices_hedge[i]
    end
    mean_main = mean_main / period
    mean_hedge = mean_hedge / period
    
    -- Ковариация
    local cov = 0
    for i = 1, period do
        cov = cov + (prices_main[i] - mean_main) * (prices_hedge[i] - mean_hedge)
    end
    cov = cov / period
    
    -- Стандартные отклонения
    local var_main = 0
    local var_hedge = 0
    for i = 1, period do
        var_main = var_main + (prices_main[i] - mean_main)^2
        var_hedge = var_hedge + (prices_hedge[i] - mean_hedge)^2
    end
    var_main = var_main / period
    var_hedge = var_hedge / period
    
    local std_main = math.sqrt(var_main)
    local std_hedge = math.sqrt(var_hedge)
    
    -- Корреляция
    local correlation = cov / (std_main * std_hedge)
    
    -- Коэффициент хеджирования
    local hedge_ratio = cov / var_hedge
    
    return {
        correlation = correlation,
        hedge_ratio = hedge_ratio,
        std_main = std_main,
        std_hedge = std_hedge
    }
end

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

Для фьючерсов идеальным хеджем мог бы стать сам базовый актив. Можно подобрать хедж из похожих по движению инструментов. Например, для золота — это серебро.

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

Основной недостаток применения хеджа — необходимость увеличения депозита в 2.5 раза.

🤖 Готовые торговые роботы

Для сеточной стратегии есть готовые торговые роботы для MetaTrader и QUIK, которые можно приобрести в нашем интернет-магазине.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *