Strategi SSL berganda dengan EMA Stop Loss

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

img

Ringkasan

Strategi ini mengintegrasikan penunjuk Dual SSL dan penunjuk purata bergerak, menggunakan penunjuk Dual SSL untuk menentukan arah trend pasaran, dan purata bergerak untuk pengesahan trend.

Logika Strategi

  1. Mengira rel atas dengan mengambil SMA harga tertinggi dalam tempoh tertentu berbanding penutupan semalam Mengira rel bawah dengan mengambil SMA harga terendah dalam tempoh tertentu berbanding penutupan semalam

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

  3. Mengira SMA 200 tempoh harga penutupan sebagai penanda aras untuk trend jangka sederhana hingga panjang.

  4. Apabila bullish, jika harga penutupan melanggar di atas SMA dari bawah, isyarat beli dihasilkan. Apabila bearish, jika harga penutupan melanggar di bawah SMA dari atas, isyarat jual dihasilkan.

  5. Selepas memasuki kedudukan panjang, jika harga penutupan pecah di bawah rel atas, ia adalah isyarat penutupan.

  6. Tetapkan titik stop loss peratusan tetap. Jika harga penutupan melanggar di bawah titik stop loss, perintah stop loss akan dicetuskan.

Kelebihan

  1. Menggunakan penunjuk Dual SSL untuk menentukan arah trend dapat secara berkesan mengenal pasti trend dan meningkatkan kebarangkalian memasuki arah yang betul.

  2. Menambah purata bergerak boleh menapis beberapa isyarat bising dan mengelakkan perdagangan yang salah di pasaran yang berbelit-belit.

  3. Menggunakan stop loss untuk mengawal risiko perdagangan tunggal dapat mengelakkan kerugian yang berlebihan.

  4. Logik strategi adalah agak mudah dan mudah difahami, sesuai untuk pemula untuk berlatih.

Risiko

  1. Indikator SSL Dual sensitif terhadap penyesuaian parameter, kombinasi tempoh yang berbeza boleh membawa kepada hasil yang sangat berbeza. Parameter harus dioptimumkan dengan teliti.

  2. MA yang terlalu lama menyaring terlalu banyak peluang perdagangan, sementara yang terlalu pendek gagal untuk mendedahkan secara berkesan.

  3. Julat stop loss yang terlalu luas gagal mengawal risiko dengan berkesan, sementara yang terlalu ketat boleh dicetuskan oleh turun naik harga biasa. Julat stop loss perlu ditetapkan dengan teliti.

  4. Strategi ini sangat bergantung pada pengoptimuman parameter. Parameter yang salah mungkin gagal mengenal pasti trend dengan betul, yang membawa kepada keputusan perdagangan yang salah.

Arahan pengoptimuman

  1. Uji kombinasi tempoh yang berbeza untuk mencari parameter yang boleh meningkatkan ketepatan penentuan trend untuk penunjuk Dual SSL.

  2. Uji MA tempoh yang berbeza untuk mencari keseimbangan optimum antara isyarat denoisasi dan pemeliharaan.

  3. Mengkaji kerugian berhenti adaptif yang menyesuaikan berdasarkan turun naik pasaran untuk membuat kerugian berhenti lebih responsif.

  4. Masukkan penunjuk lain untuk pengesahan, seperti jumlah, pertemuan pelbagai jangka masa, untuk meningkatkan ketahanan.

  5. Analisis berjalan maju harus dijalankan pada strategi yang dioptimumkan untuk memastikan ketahanan.

Kesimpulan

Strategi ini menggabungkan kekuatan penunjuk SSL Berganda dan purata bergerak. Dengan potensi yang signifikan untuk pengoptimuman parameter, ia adalah strategi trend berikut. Dengan penyesuaian dan pengoptimuman parameter yang munasabah, hasil yang baik dapat dicapai. Walau bagaimanapun, risiko overfit harus dikawal untuk memastikan ketahanan. Secara keseluruhan, strategi ini menjadi contoh yang baik untuk penerokaan 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 lanjut