Strategi Kawalan Risiko Dinamik Corak Engulfing Supertrend

ATR SL TP CANDLE supertrend ENGULFING
Tarikh penciptaan: 2025-02-20 15:32:32 Akhirnya diubah suai: 2025-02-20 15:32:32
Salin: 6 Bilangan klik: 319
2
fokus pada
319
Pengikut

Strategi Kawalan Risiko Dinamik Corak Engulfing Supertrend Strategi Kawalan Risiko Dinamik Corak Engulfing Supertrend

Gambaran keseluruhan

Ini adalah strategi perdagangan lanjutan yang menggabungkan indikator Supertrend dan corak pengapungan. Strategi ini mengesan corak corak pengapungan dalam pasaran, dan memastikan arah trend dengan indikator Supertrend, untuk memfilterkan isyarat perdagangan yang tepat. Strategi ini juga mengintegrasikan pengaturan berhenti dan keuntungan yang dinamik, mengawal risiko dengan berkesan sambil memastikan ruang keuntungan.

Prinsip Strategi

Strategi ini berdasarkan kepada prinsip-prinsip utama berikut:

  1. Menggunakan ATR (Average True Rate) untuk mengira indikator Supertrend untuk menentukan trend pasaran keseluruhan.
  2. Penyaringan bentuk penyerapan yang berkesan dilakukan dengan menetapkan Boring Candle Threshold dan Engulfing Candle Threshold.
  3. Hanya masukkan kedudukan apabila arah trend Supertrend selaras dengan arah bentuk menelan.
  4. Menggunakan kedudukan berhenti dan keuntungan yang dinamik, berdasarkan harga pembukaan kedudukan yang dikira mengikut perkadaran.
  5. Menggunakan strategi pengurusan kedudukan untuk memastikan hanya satu arah dagangan pada masa yang sama.

Kelebihan Strategik

  1. Kawalan kualiti isyarat ketat, meningkatkan ketepatan dengan pengesahan dua kali ((kecenderungan + bentuk).
  2. Menerangkan konsep boring and swallowing thresholds untuk menyaring isyarat palsu.
  3. Perhitungan Supertrend dinamik berdasarkan ATR menjadikan strategi ini mempunyai kebolehan beradaptasi dengan pasaran.
  4. Mekanisme pengurusan kerugian dan keuntungan yang baik, mengawal risiko dan mengunci keuntungan.
  5. Visual yang sempurna, isyarat dagangan, titik henti rugi dan sasaran keuntungan jelas.

Risiko Strategik

  1. Dalam pasaran yang bergolak, isyarat palsu yang sering berlaku boleh menyebabkan penembusan.
  2. Tetapan pegangan kerugian dan keuntungan yang tetap mungkin tidak sesuai untuk semua keadaan pasaran.
  3. Ia mungkin akan menjadi lebih besar apabila trend berbalik.
  4. Parameter yang sensitif kepada tetapan parameter, parameter yang tidak betul boleh menyebabkan persembahan strategi yang buruk.
  5. Dalam pasaran yang kurang cair, risiko tergelincir mungkin berlaku.

Arah pengoptimuman strategi

  1. Indeks kuantiti boleh diperkenalkan sebagai pengesahan isyarat.
  2. Pertimbangkan untuk menyertakan mekanisme ATR yang dinamik.
  3. Perkadaran stop loss dan profit disesuaikan secara dinamik berdasarkan turun naik kadar pasaran.
  4. Menambah penapis masa untuk mengelakkan dagangan pada masa yang tidak sesuai.
  5. Pertimbangkan untuk menambah penapis intensiti trend untuk meningkatkan kualiti transaksi.

ringkaskan

Ini adalah strategi yang direka dengan ketat, logik yang jelas, dengan menggabungkan petunjuk teknikal dan analisis bentuk, kawalan kualiti isyarat yang lebih baik dapat dicapai. Kaedah ini mempunyai mekanisme pengurusan risiko yang sempurna, kesan visualisasi yang sangat baik, sesuai untuk ujian dan pengoptimuman di lapangan.

Kod 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)