Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan setelah pembukaan dengan manajemen posisi berbasis ATR yang dinamis

Penulis:ChaoZhang, Tanggal: 2024-11-12 14:26:23
Tag:BBEMARSIADXATR

img

Gambaran umum

Strategi ini adalah sistem perdagangan pembukaan pasar berdasarkan beberapa indikator teknis, terutama menargetkan sesi pembukaan pasar Jerman dan AS. Ini mengidentifikasi fase konsolidasi menggunakan Bollinger Bands, mengkonfirmasi arah tren dengan rata-rata bergerak eksponensial jangka pendek dan panjang, menyaring sinyal perdagangan menggunakan RSI dan ADX, dan mengelola posisi secara dinamis menggunakan ATR.

Prinsip Strategi

Strategi ini menggunakan 14 periode Bollinger Bands (1.5 standar deviasi) untuk mengidentifikasi fase volatilitas rendah, dengan mempertimbangkan konsolidasi ketika harga dekat dengan band tengah. Ini menggunakan 10 dan 200 periode EMA untuk mengkonfirmasi tren bullish, yang membutuhkan harga di atas kedua rata-rata. RSI 7 periode memastikan kondisi tidak oversold (> 30), sementara ADX 7 periode mengkonfirmasi kekuatan tren (> 10). Strategi menganalisis tertinggi 20 lilin terakhir untuk tingkat resistensi, yang membutuhkan setidaknya dua sentuhan. Masuk terjadi pada pemecahan resistensi dengan kondisi lain terpenuhi, menggunakan 2x ATR untuk stop-loss dan 4x ATR untuk take-profit.

Keuntungan Strategi

  1. Validasi silang beberapa indikator teknis mengurangi sinyal palsu
  2. Stop loss dan take profit dinamis berbasis ATR beradaptasi dengan volatilitas pasar
  3. Fokus pada sesi pembukaan dengan volatilitas tinggi
  4. Mencatatkan tren yang kuat melalui pola konsolidasi-break-out
  5. Mekanisme kontrol risiko yang komprehensif

Risiko Strategi

  1. Beberapa indikator mungkin kehilangan beberapa peluang perdagangan
  2. Sesi pembukaan yang fluktuatif dapat memicu stop-loss
  3. Pembalikan pasar yang cepat dapat menyebabkan kerugian yang signifikan Disarankan untuk menerapkan ukuran posisi yang tepat, eksekusi stop-loss yang ketat, dan menghindari overtrading.

Arahan Optimasi

  1. Sesuaikan parameter indikator untuk pasar yang berbeda
  2. Pertimbangkan untuk menambahkan indikator volume untuk memverifikasi validitas pemisahan
  3. Masukkan indikator teknis tambahan untuk keandalan sinyal
  4. Mengoptimalkan waktu masuk untuk mengurangi dampak slippage
  5. Meningkatkan manajemen laba/rugi untuk rasio risiko-balasan yang lebih baik

Ringkasan

Strategi ini menangkap peluang perdagangan selama sesi pembukaan pasar melalui analisis teknis multidimensi, menggunakan stop-loss dan take-profit dinamis untuk manajemen risiko. Dengan logika yang jelas dan kontrol risiko yang kuat, strategi ini menunjukkan kepraktisan yang baik. Optimasi dan penyesuaian terus menerus dapat meningkatkan kinerja strategi.


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


Berkaitan

Lebih banyak