Berdasarkan strategi tren engulfing dinamis


Tanggal Pembuatan: 2024-02-29 11:24:18 Akhirnya memodifikasi: 2024-02-29 11:24:18
menyalin: 0 Jumlah klik: 561
1
fokus pada
1617
Pengikut

Berdasarkan strategi tren engulfing dinamis

Ringkasan

Strategi tren tren yang mengkonsumsi dinamika adalah strategi yang melakukan perdagangan berdasarkan bentuk tren. Strategi ini menggunakan rentang rata-rata fluktuasi nyata (ATR) untuk mengidentifikasi volatilitas pasar, indikator tren super untuk menentukan arah tren pasar, melakukan operasi multi-putaran ketika sesuai dengan bentuk tren dan sesuai dengan arah tren. Stop loss dan stop loss juga dapat dihitung berdasarkan dinamika bentuk tren.

Prinsip Strategi

  1. Perhitungan ATR digunakan untuk mengukur volatilitas pasar.
  2. Perhitungan indikator supertrend untuk menentukan arah tren utama pasar.
  3. Mendefinisikan kondisi pasar multihead dan pasar kosong.
  4. Identifikasi bentuk multiheaded swallowing (dalam tren naik) dan empty swallowing (dalam tren turun) yang sesuai dengan arah tren.
  5. Stop loss dan stop loss dihitung berdasarkan bentuk gulungan.
  6. Operasi over atau under dilakukan saat identifikasi bentuk yang menelan dan sesuai dengan arah tren.
  7. Ketika harga mencapai stop loss atau stop loss, maka melakukan posisi terbuka.
  8. Diagram yang mengidentifikasi bentuk penelan

Analisis Keunggulan Strategi

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggabungkan pola pengapungan dengan identifikasi tren untuk meningkatkan kualitas sinyal.
  2. Untuk mengidentifikasi titik-titik perubahan tren dan tindakan yang ditargetkan.
  3. Sinyal-sinyal yang lebih jelas dan lebih mudah untuk menguasai waktu operasi.
  4. Strategi Stop Loss Swallow adalah strategi yang mengikuti tren dan mengendalikan risiko.
  5. Kerangka kode yang jelas, mudah dioptimalkan dan ditingkatkan.

Analisis Risiko Strategi

Strategi ini juga memiliki beberapa risiko:

  1. Pencerobohan ini bisa berupa penembusan palsu, dan kesalahan identifikasi dapat menyebabkan kerugian.
  2. Sulit untuk memahami parameter-parameter bentuk seperti ukuran volume, panjang waktu, dan lain-lain.
  3. Mekanisme penilaian tren yang tidak sempurna dapat menyebabkan operasi yang tidak sesuai dengan tren.
  4. Pengaturan stop loss dan stop loss tergantung pada pengalaman dan mungkin terlalu subjektif.
  5. Efeknya bergantung pada optimasi parameter yang membutuhkan banyak verifikasi data historis.

Risiko-risiko tersebut dapat dikontrol dan ditingkatkan dengan cara-cara berikut:

  1. Dalam kombinasi dengan indikator teknis lainnya, sinyal penembusan palsu disaring.
  2. Menggunakan metode perhitungan parameter yang lebih stabil, seperti ATR adaptif.
  3. Meningkatkan keandalan mekanisme penilaian tren, seperti dengan memperkenalkan model pembelajaran mesin.
  4. Menggunakan algoritma genetik dan lain-lain untuk mencari kombinasi optimal.
  5. Periksa kembali dalam waktu yang lebih lama untuk memastikan parameter stabil.

Arah optimasi strategi

Strategi ini memiliki banyak ruang untuk dioptimalkan:

  1. Model pembelajaran mesin dapat diperkenalkan untuk meningkatkan akurasi penilaian tren.
  2. Menggabungkan metode baru untuk identifikasi bentuk untuk meningkatkan identifikasi bentuk yang menelan.
  3. Optimalkan Stop Loss dengan menggunakan strategi Stop Loss terbaru.
  4. Strategi penembusan yang lebih cocok untuk operasi garis pendek dapat dikembangkan berdasarkan data frekuensi tinggi.
  5. Dapat diterapkan untuk varietas yang berbeda untuk penyesuaian parameter dan optimalisasi.

Meringkaskan

Secara keseluruhan, strategi tren tren tren tren yang dinamis digabungkan dengan penilaian tren yang akurat melalui efek yang signifikan, membentuk strategi perdagangan yang masuk akal dengan akurasi sinyal masuk, stop loss dan stop loss. Dalam proses penerapannya, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut melalui pengoptimalan parameter, kontrol risiko, dan pengenalan teknologi baru. Kerangka strategi ini jelas, memiliki universalitas yang kuat, layak untuk penelitian dan aplikasi yang mendalam.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Malikdrajat


//@version=4
strategy("Engulfing with Trend", overlay=true)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2

up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Define Downtrend and Uptrend conditions
downtrend = trend == -1
uptrend = trend == 1


// Engulfing 
boringThreshold = input(25, title="Boring Candle Threshold (%)", minval=1, maxval=100, step=1)
engulfingThreshold = input(50, title="Engulfing Candle Threshold (%)", minval=1, maxval=100, step=1)
stopLevel = input(200, title="Stop Level (Pips)", minval=1)


// Boring Candle (Inside Bar) and Engulfing Candlestick Conditions
isBoringCandle = abs(open[1] - close[1]) * 100 / abs(high[1] - low[1]) <= boringThreshold
isEngulfingCandle = abs(open - close) * 100 / abs(high - low) <= engulfingThreshold

// Bullish and Bearish Engulfing Conditions
bullEngulfing = uptrend and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = downtrend and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Stop Loss, Take Profit, and Entry Price Calculation
bullStop = close + (stopLevel * syminfo.mintick)
bearStop = close - (stopLevel * syminfo.mintick)
bullSL = low 
bearSL = high
bullTP = bullStop + (bullStop - low)
bearTP = bearStop - (high - bearStop)

// Entry Conditions
enterLong = bullEngulfing and uptrend
enterShort = bearEngulfing and downtrend

// Exit Conditions
exitLong = crossover(close, bullTP) or crossover(close, bullSL)
exitShort = crossover(close, bearTP) or crossover(close, bearSL)

// Check if exit conditions are met by the next candle
exitLongNextCandle = exitLong and (crossover(close[1], bullTP[1]) or crossover(close[1], bullSL[1]))
exitShortNextCandle = exitShort and (crossover(close[1], bearTP[1]) or crossover(close[1], bearSL[1]))

// Strategy Execution
strategy.entry("Buy", strategy.long, when=enterLong )
strategy.entry("Sell", strategy.short, when=enterShort )

// Exit Conditions for Long (Buy) Positions
if (bullEngulfing and not na(bullTP) and not na(bullSL))
    strategy.exit("Exit Long", from_entry="Buy", stop=bullSL, limit=bullTP)

// Exit Conditions for Short (Sell) Positions
if (bearEngulfing and not na(bearTP) and not na(bearSL))
    strategy.exit("Exit Short", from_entry="Sell", stop=bearSL, limit=bearTP)

// Plot Shapes and Labels
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(bearEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red)

// Determine OP, SL, and TP
plot(bullEngulfing ? bullStop : na, title="Bullish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearStop : na, title="Bearish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullSL : na, title="Bullish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearSL : na, title="Bearish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullTP : na, title="Bullish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearTP : na, title="Bearish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)