Strategi Pengendalian Risiko Dinamis Pola Engulfing Supertrend yang Disempurnakan

ATR SL TP CANDLE supertrend ENGULFING
Tanggal Pembuatan: 2025-02-20 15:32:32 Akhirnya memodifikasi: 2025-02-20 15:32:32
menyalin: 6 Jumlah klik: 319
2
fokus pada
319
Pengikut

Strategi Pengendalian Risiko Dinamis Pola Engulfing Supertrend yang Disempurnakan Strategi Pengendalian Risiko Dinamis Pola Engulfing Supertrend yang Disempurnakan

Ringkasan

Ini adalah strategi perdagangan yang canggih yang menggabungkan indikator Supertrend dan bentuk pengapungan. Strategi ini mengidentifikasi pola pengapungan di pasar, dan mengkonfirmasi arah tren dengan indikator Supertrend, untuk melakukan pemfilteran sinyal perdagangan yang akurat. Strategi ini juga mengintegrasikan pengaturan stop loss dan profit yang dinamis, untuk mengontrol risiko secara efektif sambil menjamin ruang keuntungan.

Prinsip Strategi

Strategi ini didasarkan pada prinsip-prinsip utama berikut:

  1. Perhitungan indikator Supertrend menggunakan ATR (Average True Rate) untuk menentukan tren pasar secara keseluruhan.
  2. Penyaringan bentuk penyerapan yang efektif dilakukan dengan menetapkan Boring Candle Threshold dan Engulfing Candle Threshold.
  3. Hanya membuka posisi ketika arah tren Supertrend bertepatan dengan arah bentuk menelan.
  4. Pengaturan posisi stop loss dan gain yang dinamis, berdasarkan harga pembukaan posisi berdasarkan perbandingan.
  5. Menggunakan strategi manajemen posisi untuk memastikan hanya satu arah perdagangan pada satu waktu.

Keunggulan Strategis

  1. Kualitas sinyal dikontrol dengan ketat, dan akurasi ditingkatkan dengan konfirmasi ganda ((trend + mode)).
  2. Menggunakan konsep boring and swallowing thresholds untuk menyaring sinyal palsu.
  3. Perhitungan Supertrend yang dinamis berdasarkan ATR membuat strategi ini memiliki adaptasi pasar yang baik.
  4. Mekanisme manajemen stop loss dan profit yang baik, mengendalikan risiko dan mengunci keuntungan.
  5. Visual yang sangat baik, sinyal perdagangan, stop loss dan target keuntungan terlihat dengan jelas.

Risiko Strategis

  1. Dalam beberapa tahun terakhir, pasar telah mengalami beberapa kali penurunan, terutama pada tahun-tahun terakhir.
  2. Pengaturan stop loss dan profit tetap mungkin tidak cocok untuk semua kondisi pasar.
  3. Jika tren berbalik, kemungkinan akan terjadi penurunan yang lebih besar.
  4. Parameter yang sensitif terhadap pengaturan parameter, parameter yang tidak tepat dapat menyebabkan kinerja kebijakan yang buruk.
  5. Di pasar yang kurang likuid, mungkin ada risiko tergelincir.

Arah optimasi strategi

  1. Indikator volume lalu lintas dapat diperkenalkan sebagai konfirmasi sinyal.
  2. Pertimbangkan untuk menambahkan mekanisme regulasi ATR yang dinamis.
  3. Rasio stop loss dan profit disesuaikan berdasarkan volatilitas pasar.
  4. Menambahkan filter waktu untuk menghindari perdagangan pada periode waktu yang tidak sesuai.
  5. Pertimbangkan untuk menambahkan filter intensitas tren untuk meningkatkan kualitas transaksi.

Meringkaskan

Ini adalah strategi yang dirancang dengan ketat, logika yang jelas, dengan kombinasi indikator teknis dan analisis bentuk, untuk mencapai kontrol kualitas sinyal yang lebih baik. Strategi ini memiliki mekanisme manajemen risiko yang sempurna, visualisasi yang sangat baik, cocok untuk pengujian dan pengoptimalan di lapangan.

Kode Sumber Strategi
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)