Strategi ini menggabungkan indikator momentum Stochastic K nilai dan indikator turun naik ATR untuk menyesuaikan garis stop loss dan entry line secara dinamik berdasarkan nilai ATR, merealisasikan idea menyesuaikan stop loss dan entry line secara automatik mengikut turun naik pasaran.
Mengira nilai K sma ((stoch ((dekat, tinggi, rendah, len), licinK) dengan panjang len, mewakili nilai K Stochastic.
Mengira nilai ATR atr ((len) dengan panjang len.
Grafik garis stop loss ((rsi(atr, len) +lowLine,..., tajuk =
Menentukan isyarat masuk dan keluar apabila nilai K melintasi garis masuk silang (k, garis atas) dan garis stop loss silang (k, garis bawah).
Gambar warna latar belakang untuk isyarat beli dan jual.
Melakukan perdagangan dan menetapkan stop loss apabila isyarat di atas dicetuskan.
Strategi ini secara dinamik menyesuaikan garis stop loss dan entry berdasarkan turun naik pasaran ATR, yang secara automatik menyesuaikan risiko stop loss mengikut turun naik pasaran.
Apabila turun naik pasaran tinggi, jarak antara stop loss dan garis masuk meningkat untuk mengelakkan berhenti oleh turun naik.
Apabila turun naik pasaran adalah rendah, jarak antara stop loss dan garis masuk menyempitkan untuk stop loss yang tepat pada masanya.
Menggunakan nilai penunjuk momentum K untuk menentukan kemasukan dan keluar. Nilai K mencerminkan kelajuan perubahan harga dan titik perubahan.
Menggabungkan indikator momentum dan turun naik boleh menangkap trend dan menyesuaikan risiko secara automatik berdasarkan turun naik.
Nilai K mungkin mempunyai pecah palsu, menyebabkan isyarat perdagangan yang tidak perlu.
Jika parameter len ATR terlalu besar, jarak antara stop loss dan garis masuk menjadi terlalu besar dengan risiko yang tinggi.
Stop loss yang murni tidak dapat menentukan sama ada kedudukan stop loss adalah sesuai dan gagal mengawal risiko kehilangan berhenti tunggal.
Isyarat strategi yang kerap membawa kepada kos dagangan yang tinggi.
Uji dan sesuaikan parameter smoothK untuk mencari kombinasi parameter nilai K yang lancar.
Uji nilai parameter ATR len yang berbeza untuk menentukan parameter ATR yang sesuai.
Mengoptimumkan parameter baris kemasukan lowLine untuk mencari parameter optimum untuk mengawal kekerapan perdagangan.
Pertimbangkan untuk menggabungkan penunjuk lain untuk menapis isyarat kemasukan dan mengelakkan pecah palsu, seperti penunjuk jumlah dagangan, penunjuk KDJ, dll.
Pertimbangkan untuk mengoptimumkan kaedah stop loss, meningkatkan kepada stop loss yang dijangkakan untuk mengawal risiko stop loss secara aktif.
Strategi ini merealisasikan idea penyesuaian stop loss dan garis masuk secara dinamik berdasarkan nilai indikator momentum K dan indikator turun naik ATR. Ia dapat menangkap trend dan menyesuaikan risiko secara automatik berdasarkan turun naik, yang sangat inovatif dan praktikal. Pengoptimuman lanjut seperti penyesuaian parameter, meningkatkan kaedah stop loss dapat menjadikan strategi lebih stabil dan boleh dipercayai, dengan prospek pembangunan 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)