Стратегия разворота волатильности VWAP. Система длинных и коротких прорывов на канале стандартного отклонения

VWAP SD SMA ATR RSI
Дата создания: 2025-02-20 09:33:31 Последнее изменение: 2025-02-20 09:33:31
Копировать: 1 Количество просмотров: 469
2
Подписаться
319
Подписчики

Стратегия разворота волатильности VWAP. Система длинных и коротких прорывов на канале стандартного отклонения Стратегия разворота волатильности VWAP. Система длинных и коротких прорывов на канале стандартного отклонения

Обзор

Стратегия представляет собой торговую систему, основанную на VWAP (Value-Weighted Average Price) и стандартном дифференцированном канале, которая проводит торговлю, идентифицируя обратную форму цены на границе канала. Стратегия сочетает в себе торговую концепцию динамического и среднезначного возврата, чтобы захватить торговые возможности, когда цена преодолевает ключевые технические точки.

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

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

  • При условии, что цены находятся на нижней траектории, они формируют позитивную обратную форму, а затем прорывают предыдущую высокую позицию.
  • Положительные условия: цены формируют понижательную форму в верхней полосе, а затем прорывают предыдущий отрицательный минимум
  • Настройка стоп-пакета: сделайте больше, чтобы нацелиться на VWAP и верхний рельс, сделайте пустоту ниже рельса
  • Параметры сдерживания убытков: сдерживание убытков с перевертыми низкими точками, сдерживание убытков с перевертыми высокими точками

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

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

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

  1. Частое возникновение препятствий в условиях резкой волатильности рынка
  2. На этапе горизонтальной сортировки может быть создано слишком много ложных сигналов.
  3. Более чувствительный к VWAP
  4. Стандартная разница в ширине канала может не подходить для всех рыночных условий
  5. Возможно, мы упустили некоторые важные трендовые возможности

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-01-20 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6  
strategy("VRS Strategy", overlay=true)  

// Calculate VWAP  
vwapValue = ta.vwap(close)  

// Calculate standard deviation for the bands  
stdDev = ta.stdev(close, 20) // 20-period standard deviation for bands  
upperBand = vwapValue + stdDev  
lowerBand = vwapValue - stdDev  

// Plot VWAP and its bands  
plot(vwapValue, color=color.blue, title="VWAP", linewidth=2)  
plot(upperBand, color=color.new(color.green, 0), title="Upper Band", linewidth=2)  
plot(lowerBand, color=color.new(color.red, 0), title="Lower Band", linewidth=2)  

// Signal Conditions  
var float previousGreenCandleHigh = na  
var float previousGreenCandleLow = na  
var float previousRedCandleLow = na  

// Detect bearish candle close below lower band  
bearishCloseBelowLower = close[1] < lowerBand and close[1] < open[1]  

// Detect bullish reversal candle after a bearish close below lower band  
bullishCandle = close > open and low < lowerBand // Ensure it's near the lower band  
candleReversalCondition = bearishCloseBelowLower and bullishCandle  

if (candleReversalCondition)  
    previousGreenCandleHigh := high[1]  // Capture the high of the previous green candle  
    previousGreenCandleLow := low[1]     // Capture the low of the previous green candle  
    previousRedCandleLow := na            // Reset previous red candle low  

// Buy entry condition: next candle breaks the high of the previous green candle  
buyEntryCondition = not na(previousGreenCandleHigh) and close > previousGreenCandleHigh  

if (buyEntryCondition)  
    // Set stop loss below the previous green candle  
    stopLoss = previousGreenCandleLow   
    risk = close - stopLoss // Calculate risk for position sizing  

    // Target Levels  
    target1 = vwapValue // Target 1 is at VWAP  
    target2 = upperBand  // Target 2 is at the upper band  

    // Ensure we only enter the trade near the lower band  
    if (close < lowerBand)  
        strategy.entry("Buy", strategy.long)  
        
        // Set exit conditions based on targets  
        strategy.exit("Take Profit 1", from_entry="Buy", limit=target1)  
        strategy.exit("Take Profit 2", from_entry="Buy", limit=target2)  
        strategy.exit("Stop Loss", from_entry="Buy", stop=stopLoss)  

// Sell signal condition: Wait for a bearish candle near the upper band  
bearishCandle = close < open and high > upperBand // A bearish candle should be formed near the upper band  
sellSignalCondition = bearishCandle  

if (sellSignalCondition)  
    previousRedCandleLow := low[1] // Capture the low of the current bearish candle  

    // Sell entry condition: next candle breaks the low of the previous bearish candle  
    sellEntryCondition = not na(previousRedCandleLow) and close < previousRedCandleLow  

    if (sellEntryCondition)  
        // Set stop loss above the previous bearish candle  
        stopLossSell = previousRedCandleLow + (high[1] - previousRedCandleLow) // Set stop loss above the bearish candle  
        targetSell = lowerBand // Target for sell is at the lower band  

        // Ensure we only enter the trade near the upper band  
        if (close > upperBand)  
            strategy.entry("Sell", strategy.short)  
            
            // Set exit conditions for sell  
            strategy.exit("Take Profit Sell", from_entry="Sell", limit=targetSell)  
            strategy.exit("Stop Loss Sell", from_entry="Sell", stop=stopLossSell)  

// Reset previous values when a trade occurs  
if (strategy.position_size > 0)  
    previousGreenCandleHigh := na  
    previousGreenCandleLow := na  
    previousRedCandleLow := na