Tidak ada omong kosong SSL Channel Trading Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-27 16:42:34
Tag:

img

Gambaran umum

Ini adalah strategi mengikuti tren berdasarkan indikator SSL Channel. Ini menggabungkan stop loss dan mengambil manajemen keuntungan untuk mengunci keuntungan untuk pertumbuhan modal yang stabil.

Logika Strategi

Logika utama kode ini adalah menggunakan salib emas dari pita atas dan bawah SSL untuk menentukan arah tren. Secara khusus, pergi panjang ketika pita atas SSL melintasi di atas pita bawah SSL dari bawah, dan pergi pendek ketika pita bawah SSL melintasi di bawah pita atas SSL dari atas.

Setelah masuk ke posisi, strategi akan menggunakan ATR dikalikan dengan koefisien untuk mengatur harga stop loss dan take profit. Misalnya, harga stop loss adalah harga dikurangi ATR * 1.5 dan harga take profit adalah harga ditambah ATR * 1. Ini dapat secara efektif mengontrol kerugian tunggal dan mengunci keuntungan.

Ketika saluran SSL melintasi, tutup posisi. Ini dapat melacak titik infleksi dalam tren untuk stop loss yang tepat waktu.

Analisis Keuntungan

  1. Saluran SSL sangat akurat dalam menentukan arah tren
  2. Pengaturan stop loss dan take profit wajar untuk mengontrol risiko secara efektif
  3. Stop loss tepat waktu melacak titik inflexion dalam tren

Analisis Risiko

  1. Perdagangan tren dapat dengan mudah menyebabkan overtrading
  2. Ada kemungkinan kegagalan dalam penilaian saluran SSL
  3. Koefisien ATR perlu dioptimalkan

Solusi yang sesuai:

  1. Sesuai menyesuaikan periode penahanannya
  2. Masukkan indikator lain untuk konfirmasi
  3. Uji kombinasi koefisien ATR yang berbeda

Arahan Optimasi

  1. Mengoptimalkan parameter ATR untuk menemukan kombinasi parameter yang optimal
  2. Meningkatkan indikator lain untuk menyaring dan mengkonfirmasi sinyal
  3. Sesuaikan periode penyimpanan sesuai dengan pasar yang berbeda
  4. Optimalkan strategi stop loss dan take profit

Ringkasan

Logika keseluruhan strategi ini jelas, menggunakan saluran SSL untuk menentukan tren, dan menetapkan stop loss dan take profit yang wajar. Tetapi pengujian dan optimasi lebih lanjut masih diperlukan, menggabungkan indikator lain untuk menyaring sinyal palsu dan menemukan kombinasi parameter terbaik. Pada saat yang sama, parameter harus disesuaikan sesuai dengan pasar yang berbeda untuk membuat strategi lebih fleksibel. Secara keseluruhan, strategi ini memberikan kerangka kerja yang dapat diandalkan untuk mencapai pendapatan yang stabil.


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

//@version=3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Designed per No Nonsense Forex VP rules
//For testing your individual indicators before the full system
//Originated from causecelebre
//Tried to put in as much VP rules as possible

///////////////////////////////////////////////////
//Rules Implemented:
///////////////////////////////////////////////////
// - SL 1.5 x ATR
// - TP 1 x ATR
//
// - Entry conditions
//// - Entry from 1 x confirmation
// - Exit conditions
//// - Exit on confirmation flip 

///////////////////////////////////////////////////
//Trades entries
///////////////////////////////////////////////////
// - First entry L1 or S1 with standard SL and TP

///////////////////////////////////////////////////
//Included Indicators and settings
///////////////////////////////////////////////////
// - Confirmtion = SSL 10

///////////////////////////////////////////////////
//Credits
// Strategy causecelebre https://www.tradingview.com/u/causecelebre/
// SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Change log
//First release. Testing of indicators
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy(title="NNFX Strategy Indicator | jh", overlay = true )

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Set the main stuff  ****
///////////////////////////////////////////////////

//Price
price = close

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ATR stuff
///////////////////////////////////////////////////

slMultiplier = input(1.5, "SL")
tpMultiplier = input(1, "TP")

atrlength = input(title="ATR Length", defval=14, minval=1)
atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

ma_function(source, atrlength) => 
    if atrsmoothing == "RMA"
        rma(source, atrlength)
    else
        if atrsmoothing == "SMA"
            sma(source, atrlength)
        else
            if atrsmoothing == "EMA"
                ema(source, atrlength)
            else
                wma(source, atrlength)

//plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0)

atr = ma_function(tr(true), atrlength)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Confirmation ****
///////////////////////////////////////////////////

ssllen=input(title="SSL Length Period", defval=10)
smaHigh=sma(high, ssllen)
smaLow=sma(low, ssllen)
Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp   = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, "SSL Down", linewidth=1, color=red)
plot(sslUp, "SSL Up", linewidth=1, color=lime)

///////////////////////////////////////////////////
//Confirm Signals
///////////////////////////////////////////////////

c_Up = sslUp
c_Down = sslDown

//Signals based on crossover
c_Long = crossover(c_Up, c_Down)
c_Short = crossover(c_Down, c_Up)

//Signals based on signal position
trendLong = c_Up > c_Down ? 1 : 0
trendShort = c_Down > c_Up ? 1 : 0

confirmLong = c_Long
confirmShort = c_Short

plotshape(trendLong, color = green, style=shape.triangleup, location=location.bottom)
plotshape(trendShort, color = red, style=shape.triangledown, location=location.bottom)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Entries and Exits
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (year>2009)

    //Long entries with standard 1.5 ATR for SL, 1 ATR for TP
    long_sl = price - (atr * slMultiplier)
    long_tp = price + (atr * tpMultiplier)
    strategy.order("L1", strategy.long, when = confirmLong)
    strategy.close("L1", when = confirmShort)
    strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp)

    
    //Short entries with standard 1.5 ATR for SL, 1 ATR for TP
    short_sl = price + (atr * slMultiplier)
    short_tp = price - (atr * tpMultiplier)
    strategy.order("S1", strategy.short, when = confirmShort)
    strategy.close("S1", when = confirmLong)
    strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    




Lebih banyak