리소스 로딩... 로딩...

다이내믹 ATR 기반 포지션 관리와 함께 오픈 이후의 브레이크오프 거래 전략

저자:차오장, 날짜: 2024-11-12 14:26:23
태그:BBEMARSIADXATR

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}}"


관련

더 많은