Средняя реверсия при стратегии постепенного вхождения

Автор:Чао Чжан, Дата: 2024-01-29 15:47:24
Тэги:

img

Обзор

Стратегия Mean Reversion with Incremental Entry, разработанная HedgerLabs, является передовым сценарием стратегии торговли, ориентированным на технику среднего реверсия на финансовых рынках.

Логика стратегии

Центральным элементом этой стратегии является простая скользящая средняя (SMA), вокруг которой вращаются все входы и выходы.

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

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

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

При включенном Calc_on_every_tick стратегия постоянно оценивает рынок для обеспечения быстрого реагирования.

Анализ преимуществ

Стратегия средней реверсии с постепенным входом имеет следующие основные преимущества:

  1. Высоко систематизирован для уменьшения эмоционального вмешательства
  2. Повышенный вход обеспечивает большую прибыль во время высокой волатильности
  3. Настраиваемые параметры, такие как период MA, подходят для различных инструментов
  4. Интеллектуальное управление позицией автоматически адаптирует длинный/короткий
  5. Оптимальные отступления с целью выхода на закрытие позиций

Анализ рисков

К рискам, которые следует учитывать, относятся:

  1. Убытки от зависимости от технических индикаторов
  2. Неопределенность тренда, вызывающая длительные снижения
  3. Плохие настройки MA приводят к частым остановкам
  4. Больший размер позиции от дополнительного входа

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

Возможности для расширения

Стратегия может быть усилена путем:

  1. Добавление фильтров трендов для предотвращения неблагоприятных сделок
  2. Оптимизация роста входа с волатильностью
  3. Включение остановок для закрепления прибыли
  4. Экспериментируя с различными скользящими средними
  5. Использование фильтров для уменьшения ложных сигналов

Заключение

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


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na


Больше