Strategi mengikut arah aliran berdasarkan penunjuk saluran SSL


Tarikh penciptaan: 2023-11-27 16:42:34 Akhirnya diubah suai: 2023-11-27 16:42:34
Salin: 0 Bilangan klik: 1445
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan penunjuk saluran SSL

Gambaran keseluruhan

Strategi ini adalah strategi trend-tracking berdasarkan petunjuk SSL Channel. Ia menggabungkan pengurusan berhenti dan berhenti untuk mengunci keuntungan untuk mencapai pertumbuhan dana yang stabil.

Prinsip Strategi

Logik utama kod ini adalah menggunakan silang emas SSL atas dan bawah untuk menilai arah trend. Khususnya, apabila SSL atas melintasi SSL bawah dari bawah, lakukan lebih banyak; apabila SSL bawah melintasi SSL atas dari atas ke bawah, lakukan kosong.

Setelah memasuki kedudukan, strategi akan menggunakan penunjuk ATR kalikan dengan faktor untuk menetapkan harga hentian dan hentian. Sebagai contoh, harga hentian adalah harga tolak ATR * 1.5, harga hentian adalah harga tambah ATR * 1. Ini dapat mengawal kerugian tunggal dengan berkesan dan mengunci keuntungan.

Apabila SSL terputus, anda boleh menebusnya. Dengan cara ini, anda dapat mengesan titik perubahan trend dan menghentikan kerugian tepat pada masanya.

Analisis kelebihan

  1. Ketepatan tinggi dalam menentukan arah trend menggunakan saluran SSL
  2. Penetapan Hentikan Kerosakan dan Hentikan yang Rasional untuk Mengendalikan Risiko
  3. Stop loss tepat pada masanya, dan trend pada titik balik

Analisis risiko

  1. Perdagangan Trend Mudah Terlampau
  2. Keupayaan untuk membuat keputusan SSL gagal
  3. Perlu mengoptimumkan faktor ATR

Penyelesaian:

  1. Siklus pemegang kedudukan yang diselaraskan
  2. Pengesahan bersama-sama dengan petunjuk lain
  3. Uji kombinasi ATR yang berbeza

Arah pengoptimuman

  1. Mengoptimumkan parameter ATR untuk mencari kombinasi parameter yang optimum
  2. Menambah penapis dan isyarat pengesahan
  3. Siklus pegangan yang disesuaikan dengan pasaran yang berbeza
  4. Mengoptimumkan strategi hentian kerugian

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan SSL untuk menilai trend, dan menetapkan stop-loss yang munasabah. Namun, ujian dan pengoptimuman lanjut diperlukan untuk mencari kombinasi parameter yang terbaik, digabungkan dengan indikator lain untuk menyaring isyarat palsu. Pada masa yang sama, anda perlu menyesuaikan parameter mengikut pasaran yang berbeza untuk menjadikan strategi lebih fleksibel.

Kod sumber strategi
/*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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////