Многоуровневая динамическая стратегия свинг-трейдинга с усредненной стоимостью, основанная на индексе относительной силы и среднем истинном диапазоне

RSI ATR DCA TP
Дата создания: 2025-02-20 17:25:04 Последнее изменение: 2025-02-27 17:22:25
Копировать: 0 Количество просмотров: 369
2
Подписаться
319
Подписчики

Многоуровневая динамическая стратегия свинг-трейдинга с усредненной стоимостью, основанная на индексе относительной силы и среднем истинном диапазоне Многоуровневая динамическая стратегия свинг-трейдинга с усредненной стоимостью, основанная на индексе относительной силы и среднем истинном диапазоне

Обзор

Эта стратегия представляет собой многоуровневую динамическую систему распределения стоимости (DCA) в сочетании с относительно сильным и слабым индексом (RSI) и средней реальной волной (ATR). Основная ее часть заключается в том, чтобы выявить перепродажи на рынке и использовать ATR для построения позиций. Эта стратегия имеет такие характеристики, как распределение риска, оптимизация затрат и стабильность доходов.

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

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

  1. Входный сигнал основан на оценке перепродажи RSI ниже 30 и допускает до 4 сборов.
  2. Сумма за каждое создание позиции основана на общем риске в размере 200 долларов США, размер позиции рассчитан на основе динамики ATR в 2 раза
  3. Управление складом использует динамическое среднее отслеживание стоимости, в реальном времени рассчитывает среднюю цену после нескольких складов
  4. Стоп-стоп устанавливается в 3 раза выше средней ATR, адаптируется к волатильности рынка
  5. Показание средней цены и стоп-позиции в режиме реального времени с помощью маркировочной линии для удобства визуального отслеживания

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

  1. Точный контроль риска - точный контроль риска в каждой сделке с помощью предварительной суммы риска и динамической корректировки ATR
  2. Гибкость в строительстве складов - механизм строительства складов по партиям позволяет снизить затраты и использовать возможности
  3. Интеллектуальная остановка - динамическая остановка на основе ATR, гарантирующая прибыль и адаптирующаяся к рыночным колебаниям
  4. Сильная визуализация - реальное отображение средней ценовой линии и стоп-линии обеспечивает интуитивно понятную торговую ссылку
  5. Гибкость - параметры стратегии могут быть гибко изменены в зависимости от особенностей рынка

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

  1. Риск непрерывного перепродажи - продолжающееся падение рынка может привести к чрезмерному количеству позиций Решение: строгое ограничение максимального количества складов, установка стоп-лостов при необходимости
  2. Риск установки стоп-листов - слишком высокий стоп-коэффициент может привести к упущенным возможностям получения прибыли Решение: корректировка ATR в зависимости от динамики рынка
  3. Риски управления капиталом - строительство складов может занять слишком много средств Решение: разумные ограничения на риски и размеры позиций

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

  1. Оптимизация входных сигналов
  • Повышение индексов трендового анализа, чтобы избежать преждевременного позиционирования в условиях сильного падения
  • Комбинированные показатели объема торгов повышают надежность суждений о перепродаже
  1. Совершенствование тормозного механизма
  • Внедрение механизма “trailing stop” для лучшего блокирования прибыли
  • Рассмотрение сборов и гибкость прибыли
  1. Усиление контроля рисков
  • Добавление общего контроля отмены
  • Оптимизация алгоритмов распределения

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

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

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

//@version=6
strategy("DCA-Based Swing Strategy (Risk $200) with Signals", overlay=true)

// === Main Indicators ===
// RSI for identifying oversold conditions
rsi = ta.rsi(close, 14)

// ATR for volatility estimation
atr = ta.atr(14)

// === Strategy Parameters ===
// Risk management
riskPerTrade = 200                       // Total risk ($200)
atrRisk = 2 * atr                        // Risk in dollars per buy (2 ATR)
positionSize = riskPerTrade / atrRisk    // Position size (shares)

// DCA Parameters
maxEntries = 4                           // Maximum of 4 buys
takeProfitATR = 3                        // Take profit: 3 ATR

// === Position Management ===
var float avgEntryPrice = na             // Average entry price
var int entryCount = 0                   // Number of buys
var line takeProfitLine = na             // Take profit line
var line avgPriceLine = na               // Average entry price line

// === Buy and Sell Conditions ===
buyCondition = rsi < 30 and entryCount < maxEntries  // Buy when oversold
if (buyCondition)
    strategy.entry("DCA Buy", strategy.long, qty=positionSize)
    
    // Update the average entry price
    avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * entryCount + close) / (entryCount + 1)
    entryCount += 1

    // Display "BUY" signal on the chart
    label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.normal)

    // Update lines for average entry price and take profit
    if (not na(takeProfitLine))
        line.delete(takeProfitLine)
    if (not na(avgPriceLine))
        line.delete(avgPriceLine)
    takeProfitPrice = avgEntryPrice + takeProfitATR * atr


// Sell condition: Take profit = 3 ATR from average entry price
takeProfitPrice = avgEntryPrice + takeProfitATR * atr
if (close >= takeProfitPrice and entryCount > 0)
    strategy.close("DCA Buy")
    
    // Reset parameters after closing
    avgEntryPrice := na
    entryCount := 0

    // Remove lines after selling
    if (not na(takeProfitLine))
        line.delete(takeProfitLine)
    if (not na(avgPriceLine))
        line.delete(avgPriceLine)