Sumber dimuat naik... memuat...

Strategi Dagangan Pasca-Terbuka Breakout dengan Pengurusan Posisi Berasaskan ATR Dinamis

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

img

Ringkasan

Strategi ini adalah sistem perdagangan pembukaan pasaran berdasarkan pelbagai penunjuk teknikal, terutamanya mensasarkan sesi pembukaan pasaran Jerman dan AS. Ia mengenal pasti fasa penyatuan menggunakan Bollinger Bands, mengesahkan arah trend dengan purata bergerak eksponensial jangka pendek dan panjang, menapis isyarat perdagangan menggunakan RSI dan ADX, dan menguruskan kedudukan secara dinamik menggunakan ATR.

Prinsip Strategi

Strategi ini menggunakan Bollinger Bands 14 tempoh (1.5 penyimpangan standard) untuk mengenal pasti fasa turun naik yang rendah, mempertimbangkan penyatuan apabila harga berhampiran dengan jalur tengah. Ia menggunakan EMA 10 dan 200 tempoh untuk mengesahkan trend menaik, memerlukan harga di atas kedua-dua purata. RSI 7 tempoh memastikan keadaan yang tidak terlalu banyak dijual (> 30), sementara ADX 7 tempoh mengesahkan kekuatan trend (> 10). Strategi ini menganalisis tertinggi 20 lilin terakhir untuk tahap rintangan, memerlukan sekurang-kurangnya dua sentuhan. Masuk berlaku pada pecah rintangan dengan syarat lain dipenuhi, menggunakan 2x ATR untuk stop-loss dan 4x ATR untuk mengambil keuntungan.

Kelebihan Strategi

  1. Penanda teknikal berbilang penanda silang mengurangkan isyarat palsu
  2. Peningkatan harga yang tidak boleh dikurangkan
  3. Memfokuskan pada sesi pembukaan dengan turun naik yang tinggi
  4. Mencatatkan trend yang kuat melalui corak penyatuan-penembusan
  5. Mekanisme kawalan risiko yang komprehensif

Risiko Strategi

  1. Pelbagai penunjuk mungkin kehilangan beberapa peluang perdagangan
  2. Sesi pembukaan yang tidak menentu boleh mencetuskan stop-loss
  3. Pembalikan pasaran yang cepat boleh menyebabkan kerugian yang ketara Disyorkan untuk melaksanakan saiz kedudukan yang betul, pelaksanaan stop-loss yang ketat, dan mengelakkan overtrading.

Arahan pengoptimuman

  1. Sesuaikan parameter penunjuk untuk pasaran yang berbeza
  2. Pertimbangkan untuk menambah penunjuk jumlah untuk mengesahkan kesahihan pecah
  3. Memasukkan penunjuk teknikal tambahan untuk kebolehpercayaan isyarat
  4. Mengoptimumkan masa kemasukan untuk mengurangkan kesan slippage
  5. Meningkatkan pengurusan keuntungan/kerugian untuk nisbah risiko-balasan yang lebih baik

Ringkasan

Strategi ini menangkap peluang perdagangan semasa sesi pembukaan pasaran melalui analisis teknikal berbilang dimensi, menggunakan stop-loss dinamik dan mengambil keuntungan untuk pengurusan risiko. Dengan logik yang jelas dan kawalan risiko yang kukuh, ia menunjukkan kepraktisan yang baik. Pengoptimuman dan penyesuaian berterusan dapat meningkatkan prestasi 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 lanjut