Strategi ini menggabungkan indikator momentum Stochastic K value dan indikator volatilitas ATR untuk menyesuaikan garis stop loss dan entry line secara dinamis berdasarkan nilai ATR, mewujudkan gagasan untuk menyesuaikan stop loss dan entry line secara otomatis sesuai dengan volatilitas pasar.
Hitung nilai K sma ((stoch ((dekat, tinggi, rendah, len), halusK) dengan panjang len, mewakili nilai Stochastic K.
Menghitung nilai ATR atr ((len) dengan panjang len.
Grafik stop loss line plot ((rsi(atr, len) + lowLine,..., title =
Tentukan sinyal masuk dan keluar ketika nilai K melintasi garis masuk silang (k, garis atas) dan garis stop loss silang (k, garis bawah).
Grafik warna latar belakang untuk sinyal beli dan jual.
Mengeksekusi perdagangan dan mengatur stop loss ketika sinyal di atas dipicu.
Strategi secara dinamis menyesuaikan garis stop loss dan entry berdasarkan volatilitas pasar ATR, yang secara otomatis menyesuaikan risiko stop loss sesuai dengan volatilitas pasar.
Ketika volatilitas pasar tinggi, jarak antara stop loss dan garis entry meningkat untuk menghindari dihentikan oleh fluktuasi.
Ketika volatilitas pasar rendah, jarak antara stop loss dan entry line menyempit untuk stop loss yang tepat waktu.
Menggunakan nilai indikator momentum K untuk menentukan entri dan keluar. Nilai K mencerminkan kecepatan perubahan harga dan titik balik.
Menggabungkan indikator momentum dan volatilitas dapat menangkap tren dan secara otomatis menyesuaikan risiko berdasarkan fluktuasi.
Nilai-nilai K mungkin memiliki false breakout, menyebabkan sinyal perdagangan yang tidak perlu.
Jika parameter len ATR terlalu besar, jarak antara stop loss dan garis entry menjadi terlalu besar dengan risiko tinggi.
Stop loss trailing murni tidak dapat menentukan apakah posisi stop loss sesuai dan gagal mengendalikan risiko stop loss tunggal.
Sinyal strategi yang sering menyebabkan biaya perdagangan tinggi. Dapat menyesuaikan parameter entry line lowLine untuk mengontrol frekuensi perdagangan.
Uji dan sesuaikan parameter smoothK untuk menemukan kombinasi parameter nilai K yang optimal.
Uji nilai yang berbeda dari parameter ATR len untuk menentukan parameter ATR yang tepat.
Optimalkan parameter entry line lowLine untuk menemukan parameter optimal untuk mengontrol frekuensi perdagangan.
Pertimbangkan untuk menggabungkan indikator lain untuk menyaring sinyal masuk dan menghindari breakout palsu, seperti indikator volume perdagangan, indikator KDJ, dll.
Pertimbangkan untuk mengoptimalkan metode stop loss, meningkatkan ke stop loss yang diharapkan untuk secara aktif mengendalikan risiko stop loss.
Strategi ini mewujudkan gagasan penyesuaian stop loss dan entry line secara dinamis berdasarkan nilai momentum indikator K dan indikator volatilitas ATR. Ini dapat menangkap tren dan secara otomatis menyesuaikan risiko berdasarkan fluktuasi, yang sangat inovatif dan praktis. Optimasi lebih lanjut seperti penyesuaian parameter, meningkatkan metode stop loss dapat membuat strategi lebih stabil dan andal, dengan prospek pengembangan yang besar.
/*backtest start: 2023-09-08 00:00:00 end: 2023-10-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) len = input(34, minval=1, title="Length for Main Stochastic & ATR") smoothK = input(2, minval=1, title="SmoothK for Main Stochastic") lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines") //Stoch formula k = sma(stoch(close, high, low, len), smoothK) plot(k, color=aqua, title = "Stoch") //len=input atr=atr(len) plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line") plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line") aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0 belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0 aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0 belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0 skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0 //BackGroound Color Plots plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0) plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0) plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0) plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0) bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal") bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal") bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short") bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long") bgcolor(skip==1 ? black : na, transp=0, title = "skip signal") //strategy longCondition = belowLine==1 shortCondition = aboveLine==1 strategy.entry("BUY", strategy.long, when = longCondition) strategy.entry("SELL", strategy.short, when = shortCondition) strategy.cancel_all(when = skip==1)