Strategi SSL ganda dengan EMA Stop Loss

Penulis:ChaoZhang, Tanggal: 2023-11-06 16:52:11
Tag:

img

Gambaran umum

Strategi ini mengintegrasikan indikator Dual SSL dan indikator rata-rata bergerak, menggunakan indikator Dual SSL untuk menentukan arah tren pasar, dan rata-rata bergerak untuk konfirmasi tren.

Logika Strategi

  1. Menghitung rel atas dengan mengambil SMA dari harga tertinggi selama periode tertentu dibandingkan dengan penutupan kemarin. Menghitung rel bawah dengan mengambil SMA dari harga terendah selama periode tertentu dibandingkan dengan penutupan kemarin.

  2. Bandingkan harga penutupan saat ini dengan rel atas dan bawah untuk menentukan arah tren saat ini. Jika harga penutupan di atas rel atas, tren ditentukan sebagai bullish. Jika harga penutupan di bawah rel bawah, tren ditentukan sebagai bearish.

  3. Menghitung SMA 200 periode harga penutupan sebagai patokan untuk tren jangka menengah hingga panjang.

  4. Ketika bullish, jika harga penutupan menembus SMA dari bawah, sinyal beli akan dihasilkan.

  5. Setelah memasuki posisi panjang, jika harga penutupan melanggar di bawah rel atas, itu adalah sinyal penutupan.

  6. Jika harga penutupan melanggar di bawah titik stop loss, perintah stop loss akan dipicu.

Keuntungan

  1. Menggunakan indikator Dual SSL untuk menentukan arah tren dapat secara efektif mengidentifikasi tren dan meningkatkan probabilitas memasuki arah yang benar.

  2. Menambahkan rata-rata bergerak dapat menyaring beberapa sinyal bising dan menghindari perdagangan yang salah di pasar yang bergolak.

  3. Menggunakan stop loss untuk mengendalikan risiko perdagangan tunggal dapat secara efektif menghindari kerugian yang berlebihan.

  4. Logika strategi relatif sederhana dan mudah dimengerti, cocok untuk pemula untuk berlatih.

Risiko

  1. Indikator Dual SSL sensitif terhadap penyesuaian parameter, kombinasi periode yang berbeda dapat menyebabkan hasil yang sangat berbeda.

  2. MA yang terlalu panjang menyaring terlalu banyak peluang perdagangan, sementara yang terlalu pendek gagal untuk menandai secara efektif.

  3. Jangkauan stop loss yang terlalu luas tidak dapat mengendalikan risiko secara efektif, sementara yang terlalu ketat dapat dipicu oleh fluktuasi harga normal. Jangkauan stop loss perlu diatur dengan hati-hati.

  4. Strategi ini sangat bergantung pada optimasi parameter. parameter yang salah mungkin gagal mengidentifikasi tren dengan benar, yang mengarah pada keputusan perdagangan yang salah.

Arahan Optimasi

  1. Uji kombinasi periode yang berbeda untuk menemukan parameter yang dapat meningkatkan akurasi penentuan tren untuk indikator Dual SSL.

  2. Uji MAs periode yang berbeda untuk menemukan keseimbangan optimal antara sinyal denoisasi dan pelestarian.

  3. Menjelajahi stop loss adaptif yang menyesuaikan berdasarkan volatilitas pasar untuk membuat stop loss lebih responsif.

  4. Masukkan indikator lain untuk konfirmasi, seperti volume, pertemuan multi-frame waktu, untuk meningkatkan ketahanan.

  5. Analisis berjalan ke depan harus dilakukan pada strategi yang dioptimalkan untuk memastikan ketahanan.

Kesimpulan

Strategi ini menggabungkan kekuatan dari indikator SSL ganda dan moving average. Dengan potensi yang signifikan untuk optimasi parameter, ini adalah strategi yang mengikuti tren. Dengan penyesuaian dan optimasi parameter yang wajar, hasil yang baik dapat dicapai. Namun, risiko overfit harus dikendalikan untuk memastikan ketahanan. Secara keseluruhan, strategi ini berfungsi sebagai contoh yang baik untuk eksplorasi dan pembelajaran.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@Isaac
//Estrategia vista en ▼▼
//YT: Trading Zone
strategy('SSL Strategy + EMA 200 AND Stop Loss', overlay=true)

ema = ta.ema(close, 200)

stop_loss = input.float(2.00, title='Stop Loss', step=0.10)

period = input(title='Period', defval=10)
len = input(title='Period', defval=10)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh


cruceArriba = ta.crossover(sslUp, sslDown)
cruceAbajo = ta.crossunder(sslUp, sslDown)

alcista = (close > ema ) and (cruceArriba) 
bajista = (close < ema) and (cruceAbajo)

var SL = 0.0
//Cerrar compra por cruce
por_cruce = ta.crossunder(sslUp, sslDown)

//Cerrar venta por cruce
por_cruceAB = ta.crossunder(sslDown, sslUp)

//Cerrar compra y venta por stop loss
Stop = SL

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

UTmpconvertL = strategy.position_avg_price * (1 + 0.1)
UTmpdefineL = (UTmpconvertL > close and strategy.openprofit > 0.1)
UTSPL = UTmpdefineL

SPL = UTSPL

///////////////////////////////////////////////////////////////////////

UTmpconvertLS = strategy.position_avg_price * (1 + 0.1)
UTmpdefineLS = (UTmpconvertLS > close and strategy.openprofit > 0.1)
UTSPLS = UTmpdefineLS

SPLS = UTSPLS

////////////////////////////////////////////////////////////////////////

if not comprado and not vendido and alcista
    cantidad = (strategy.equity / close)
    strategy.entry('Compra', strategy.long, qty=cantidad, comment="Long")
    SL := sslDown


if comprado and not vendido and por_cruce and SPL
    strategy.close("Compra", comment="Exit Long")
    SL := 0
    
if comprado and not vendido and Stop
    strategy.exit('Compra', stop=Stop, comment="SL")
    SL := 0

///////////////////////////////////////////////////////////////////

if not comprado and not vendido and bajista
    cantidad = (strategy.equity / close)
    strategy.entry('Venta', strategy.short, qty=cantidad, comment="Short")
    SL := sslDown

if not comprado and vendido and por_cruceAB and SPLS
    strategy.close("Venta", comment="Exit Short")
    SL := 0
    
if not comprado and vendido and Stop
    strategy.exit('Venta', stop=Stop, comment="SLS")
    SL := 0



plot(Stop > 0 ? Stop : na, style=plot.style_circles, color=color.new(color.yellow,0))
plot(ema)
plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))




Lebih banyak