В процессе загрузки ресурсов... загрузка...

Стратегия торговли после открытого выхода с динамическим управлением позициями на основе ATR

Автор:Чао Чжан, Дата: 2024-11-12 14:26:23
Тэги:ББЕМАРСИADXATR

img

Обзор

Эта стратегия представляет собой торговую систему открытия рынка, основанную на нескольких технических показателях, в первую очередь ориентированную на сессии открытия рынка Германии и США. Она определяет фазы консолидации с использованием полос Боллинджера, подтверждает направление тренда с использованием краткосрочных и долгосрочных экспоненциальных скользящих средних, фильтрует торговые сигналы с использованием RSI и ADX и управляет позициями динамически с использованием ATR.

Принципы стратегии

Стратегия использует 14-периодные полосы Боллинджера (1,5 стандартного отклонения) для выявления фаз низкой волатильности, учитывая консолидацию, когда цена близка к средней полосе. Она использует 10- и 200-периодные EMA для подтверждения бычьих тенденций, требуя цены выше обеих средних. 7-периодный RSI обеспечивает условия неперепроданности (> 30), в то время как 7-периодный ADX подтверждает силу тренда (> 10). Стратегия анализирует максимумы последних 20 свечей для уровней сопротивления, требующих по крайней мере двух касаний. Вход происходит при прорыве сопротивления с выполнением других условий, используя 2x ATR для остановки потери и 4x ATR для получения прибыли.

Преимущества стратегии

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

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

  1. Несколько индикаторов могут упустить некоторые торговые возможности
  2. Волатильные сессии открытия могут привести к стоп-лосс
  3. Быстрые изменения на рынке могут привести к значительным потерям Рекомендуется внедрять надлежащее размещение позиций, строгое выполнение стоп-лосса и избегать переоценки.

Руководство по оптимизации

  1. Корректировка параметров показателей для различных рынков
  2. Рассмотреть возможность добавления показателей объема для проверки достоверности прорыва
  3. Включить дополнительные технические показатели надежности сигнала
  4. Оптимизировать время входа для уменьшения влияния скольжения
  5. Улучшить управление прибылью/убытками для улучшения соотношения риска и прибыли

Резюме

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


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Post-Open Long Strategy with ATR-based Stop Loss and Take Profit (Separate Alerts)", overlay=true)

// Parametri per Bande di Bollinger ed EMA
lengthBB = 14
mult = 1.5  // Bande di Bollinger più strette per timeframe inferiori
emaLength = 10  // EMA più breve per una rilevazione di trend più rapida
emaLongLength = 200  // EMA a lungo termine per il filtraggio del trend

// Parametri per RSI
lengthRSI = 7
rsiThreshold = 30

// Parametri per ADX
adxLength = 7
adxSmoothing = 7
adxThreshold = 10

// Filtro temporale - Solo durante l'apertura dei mercati tedesco e USA
daxOpen = (hour >= 8 and hour < 12)
usOpen = (hour == 15 and minute >= 30) or (hour >= 16 and hour < 19)

// Calcolo delle Bande di Bollinger
smaBB = ta.sma(close, lengthBB)
basis = smaBB
dev = mult * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Calcolo delle EMA (breve e lungo termine)
ema = ta.ema(close, emaLength)  // EMA più breve
emaLong = ta.ema(close, emaLongLength)  // EMA a lungo termine per il filtraggio del trend

// Calcolo RSI
rsi = ta.rsi(close, lengthRSI)

// Calcolo ADX
[plusDI, minusDI, adx] = ta.dmi(adxLength, adxSmoothing)

// Calcolo ATR per Stop Loss e Take Profit dinamici
atrLength = 14
atrStopLossMultiplier = 2.0  // Moltiplicatore per Stop Loss
atrTakeProfitMultiplier = 4.0  // Moltiplicatore per Take Profit modificato a 4.0
atrValue = ta.atr(atrLength)  // Valore ATR calcolato qui

// Condizione di lateralizzazione - Prezzo vicino alla SMA delle Bande di Bollinger
lateralization = math.abs(close - smaBB) < (0.01 * close) and (daxOpen or usOpen)

// Identificazione della resistenza e del breakout
var float resistanceLevel = na
resistanceTouches = 0

for i = 1 to 20
    if high[i] > high[i+1] and high[i] > high[i-1]
        resistanceLevel := high[i]
        resistanceTouches := resistanceTouches + 1

// Condizione di Breakout: Il prezzo attuale supera la resistenza identificata
breakoutCondition = close > resistanceLevel and resistanceTouches >= 2

// Filtro di mercato rialzista a lungo termine - Entrare solo se il prezzo è sopra la EMA a 200 periodi
bullMarket = close > emaLong

// Filtro di trend a breve termine
trendFilter = ta.ema(close, emaLength)  // Filtro di trend a breve termine
trendDown = close < trendFilter  // Condizione di downtrend basata sul trend a breve termine

// Evitare l'entrata durante un pullback - Verifica se le due candele precedenti sono rosse
firstRedCandle = close[1] < open[1]  // La prima candela precedente è rossa
secondRedCandle = close[2] < open[2]  // La seconda candela precedente è rossa
avoidPullbackCondition = not (firstRedCandle and secondRedCandle)  // Entrare solo se non entrambe sono rosse

// Condizione Panic Candle - La candela deve chiudere negativa
panicCandle = close < open and (daxOpen or usOpen)

// Condizione di Entrata Long
longCondition = breakoutCondition and lateralization and close > ema and rsi > rsiThreshold and adx > adxThreshold and not trendDown and avoidPullbackCondition and bullMarket and panicCandle

// Stop Loss e Take Profit dinamici basati su ATR
atrStopLoss = close - (atrValue * atrStopLossMultiplier)  // Stop Loss dinamico usando ATR con moltiplicatore 2.0
atrTakeProfit = close + (atrValue * atrTakeProfitMultiplier)  // Take Profit dinamico usando ATR con moltiplicatore 4.0

// Entrata Long: Ordine eseguito alla chiusura della candela
if (longCondition and strategy.opentrades == 0 and barstate.isconfirmed)
    strategy.entry("Long", strategy.long)

// Disegna linee per Stop Loss e Take Profit
// line.new(x1=bar_index, y1=atrStopLoss, x2=bar_index + 1, y2=atrStopLoss, color=color.red, width=2, style=line.style_solid)  // Linea di Stop Loss (rossa)
// line.new(x1=bar_index, y1=atrTakeProfit, x2=bar_index + 1, y2=atrTakeProfit, color=color.green, width=2, style=line.style_solid)  // Linea di Take Profit (verde)

// Uscita: Stop Loss o Take Profit raggiunti
if (strategy.opentrades > 0)
    strategy.exit("Exit Long", "Long", stop=atrStopLoss, limit=atrTakeProfit)

// Alert: Differenziati per Entrata e Uscita utilizzando strategy.order.action
alert_message = "Azione: {{strategy.order.action}}, Prezzo: {{close}}, Dimensione Posizione: {{strategy.position_size}}"


Связанные

Больше