Многодиапазонная стратегия торговли на основе ценовой коррекции MA100 с использованием смарт-сетки

SMA MA ATR
Дата создания: 2025-02-19 11:12:51 Последнее изменение: 2025-02-19 11:12:51
Копировать: 0 Количество просмотров: 693
1
Подписаться
1617
Подписчики

Многодиапазонная стратегия торговли на основе ценовой коррекции MA100 с использованием смарт-сетки

Обзор

Стратегия представляет собой многодиапазонную торговую сетку, основанную на движущихся средних величинах MA100. Она реализуется путем установления различных диапазонов ценовых отступлений (от -8%, -15%, -20%), постепенно покупая позиции при значительных падениях рынка и получая прибыль при восстановлении цены на 3%. Стратегия использует концепцию умной сетки для управления рисками путем ограничения максимального количества позиций и интервала торговли в каждом диапазоне.

Стратегический принцип

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

  1. Базовые цены, использующие 100-циклическую простую скользящую среднюю ((SMA) в качестве стратегии
  2. Установите три диапазона покупок:
    • Диапазон 2: Возвращение цены на 8%, максимально допустимо 2 сделки
    • Диапазон 3: Снижение цены на 15%, максимум 3 сделки
    • Диапазон 4: ценовое отступление на 20%, максимум четыре сделки
  3. Единые условия для устранения позиции: когда цена отскочит свыше 3% от MA100
  4. В каждом блоке установлен минимальный интервал сделок в 50 K-линейных циклов, чтобы избежать слишком частых сделок

Стратегические преимущества

  1. Строительство многоэтажных складов снижает затраты
  2. Применение идеи сетчатого трейдинга, позволяющей ловить возможности в условиях резкой волатильности
  3. Максимальные ограничения на хранение и интервалы торговли, эффективное управление рисками
  4. Простая логика стратегии, ее легко понять и поддерживать.
  5. Применимость к рыночной среде с высокой волатильностью
  6. Автоматизированное выполнение без вмешательства человека.

Стратегический риск

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

Направление оптимизации стратегии

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// BTC SOL ETH BNB XMR RNDR AKT OM ONDO IO

strategy("MA100 crash buy 3 Zone // 15 min", overlay=true, calc_on_every_tick=true)

// Définition des MA
maH1 = ta.sma(close, 100)
maB2 = ta.sma(close, 100)
maB3 = ta.sma(close, 100)
maB4 = ta.sma(close, 100)

// Définition du niveau d'achat et de vente
sellLevel1 = maH1 * 1.03 //+3%
buyLevel2 = maB2 * 0.92 //-8%
buyLevel3 = maB2 * 0.85 //-15%
buyLevel4 = maB2 * 0.80 //-20%



// Nombre max de trades simultanés
maxTrades2 = 2
maxTrades3 = 3
maxTrades4 = 4

// Délais entre deux ordres (en bougies)
tradeDelay = 50
var float lastTradeTime = na
var float lastSellTime = na
tradeDelay2 = 50
var float lastTradeTime2 = na
tradeDelay3 = 50
var float lastTradeTime3 = na
tradeDelay4 = 50
var float lastTradeTime4 = na

// Condition d'achat et de vente
buyCondition2 = low <= buyLevel2 and strategy.opentrades < maxTrades2 and (na(lastTradeTime2) or bar_index - lastTradeTime2 > tradeDelay2)
buyCondition3 = low <= buyLevel3 and strategy.opentrades < maxTrades3 and (na(lastTradeTime3) or bar_index - lastTradeTime3 > tradeDelay3)
buyCondition4 = low <= buyLevel4 and strategy.opentrades < maxTrades4 and (na(lastTradeTime4) or bar_index - lastTradeTime4 > tradeDelay4)
sellCondition = strategy.position_size > 0 and high >= sellLevel1 and (na(lastSellTime) or bar_index - lastSellTime > tradeDelay)

if buyCondition2
    strategy.entry("Buy", strategy.long)
    lastTradeTime2 := bar_index  // Enregistre le moment du trade

if buyCondition3
    strategy.entry("Buy", strategy.long)
    lastTradeTime3 := bar_index  // Enregistre le moment du trade

if buyCondition4
    strategy.entry("Buy", strategy.long)
    lastTradeTime4 := bar_index  // Enregistre le moment du trade

if sellCondition
    strategy.close("Buy")  // Ferme 50% de toutes les positions ouvertes // , qty_percent=30
    lastSellTime := bar_index  // Enregistre le moment du trade


// Affichage des niveaux
plot(sellLevel1, color=#fa930d, title="Sell Level")
plot(buyLevel2, color=#15bbfd, title="Buy Level")
plot(buyLevel3, color=#1229aa, title="Buy Level")
plot(buyLevel4, color=#9812aa, title="Buy Level")