Strategi ini menggunakan indikator Stoch untuk menghasilkan sinyal masuk. Setelah memasuki posisi, ia akan melacak titik tertinggi atau terendah baru secara real time untuk menyesuaikan stop loss secara dinamis. Pada saat yang sama, strategi ini juga akan mengirim informasi modifikasi stop loss ke MT4/MT5 melalui fungsi peringatan untuk menyesuaikan posisi dalam perdagangan nyata.
Strategi ini menghasilkan sinyal beli dan jual berdasarkan indikator Stoch. Ketika garis Stoch K melintasi di atas garis D dari bawah, sinyal beli dihasilkan. Ketika garis K melintasi di bawah garis D dari atas, sinyal jual dihasilkan.
Setelah memasuki posisi, strategi melacak titik terendah terbaru dari harga terendah dan titik tertinggi terbaru dari harga tertinggi secara real time sebagai level stop loss dinamis. Secara khusus, untuk posisi panjang, titik terendah terbaru dari harga terendah dilacak sebagai level stop loss. Untuk posisi pendek, titik tertinggi terbaru dari harga tertinggi dilacak sebagai level stop loss.
Ketika perubahan pada level stop loss terdeteksi, strategi menghasilkan modifikasi stop loss order melalui fungsi peringatan dan mengirimkannya ke MT4/MT5 untuk menyesuaikan level stop loss dari perdagangan yang sebenarnya secara real time.
Strategi ini mendukung kontrol manual apakah untuk mengaktifkan mekanisme stop loss dinamis.
Mekanisme stop loss trailing yang dinamis dapat menyesuaikan tingkat stop loss secara fleksibel sesuai dengan fluktuasi pasar untuk mengontrol risiko secara efektif.
Fungsi peringatan memungkinkan pengiriman informasi penyesuaian stop loss secara real time ke MT4/MT5 untuk manajemen otomatis tanpa intervensi manual.
Anotasi visual dari penyesuaian stop loss pada grafik memudahkan melihat dan memverifikasi efek stop loss trailing.
Dukungan untuk mengontrol secara manual mekanisme stop loss trailing memungkinkan adaptasi yang fleksibel dengan kondisi pasar yang berbeda.
Dikombinasikan dengan indikator Stoch untuk menentukan peluang, strategi dapat secara efektif menyaring breakout palsu dan meningkatkan stabilitas.
Indikator Stoch dapat menghasilkan sinyal silang yang sering, memperkenalkan risiko operasi yang lebih tidak efektif.
Dalam kondisi pasar yang ekstrim, stop loss dapat ditembus, tidak dapat sepenuhnya menghindari kerugian besar.
Masalah koneksi peringatan seperti gangguan dan keterlambatan dapat terjadi, mencegah umpan balik waktu nyata dari penyesuaian.
Jangkauan penundaan kerugian yang dinamis membutuhkan penyesuaian yang relatif sering, yang berpotensi menimbulkan biaya perdagangan yang lebih tinggi.
Kombinasi parameter yang berbeda dapat diuji untuk mengoptimalkan indikator Stoch untuk kualitas sinyal dan kinerja strategi yang lebih baik.
Indikator lain dapat dikombinasikan untuk menyaring sinyal atau menentukan rentang penyesuaian untuk meningkatkan stabilitas strategi.
Algoritma pelacakan yang berbeda dapat dipelajari untuk mengurangi frekuensi penyesuaian sambil memastikan efek stop loss.
Metode koneksi dengan MT4/MT5 dapat ditingkatkan untuk memastikan peringatan yang tepat waktu dan efisien dan meminimalkan keterlambatan.
Mode stop loss otomatis dan manual dapat diperkenalkan untuk menggunakan mekanisme yang berbeda dalam kondisi pasar yang berbeda.
Strategi ini pertama-tama menentukan peluang perdagangan berdasarkan indikator Stoch, kemudian melacak fluktuasi harga selama posisi untuk menyesuaikan stop loss secara dinamis dan secara otomatis mengeluarkan informasi penyesuaian melalui perintah peringatan. Mekanisme dinamis semacam itu memungkinkan manajemen risiko posisi aktif sesuai dengan perubahan pasar dengan intervensi manual yang lebih sedikit. Sementara itu, anotasi stop loss yang intuitif juga memfasilitasi pemantauan. Optimasi lebih lanjut pada penyaringan sinyal dan algoritma trailing dapat meningkatkan profitabilitas. Secara keseluruhan, strategi stop loss trailing dinamis cocok untuk melacak pasar yang tidak stabil dan manajemen risiko posisi otomatis.
/*backtest start: 2022-12-27 00:00:00 end: 2024-01-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Peter_O //@version=4 strategy(title="Moving Stop-Loss mechanism", overlay=true) // This script was created for educational purposes only and it is a spin-off of my previous script: // https://www.tradingview.com/script/9MJO3AgE-TradingView-Alerts-to-MT4-MT5-dynamic-variables-NON-REPAINTING/ // This spin-off adds very often requested Moving Stop-Loss Mechanism - the logic here moves the stop-loss each time // a new pivot is detected. // // Last lines of the script include alert() function calls, with a syntax compatible with TradingConnector // for execution in Forex/indices/commodities/crypto markets via MetaTrader. // Please note that "tradeid=" variable must be passed with each alert, so that MetaTrader knows which // trade to modify. TakeProfitLevel=input(400) // **** Entries logic, based on Stoch **** { periodK = 13 //input(13, title="K", minval=1) periodD = 3 //input(3, title="D", minval=1) smoothK = 4 //input(4, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) GoLong=crossover(k,d) and k<80 GoShort=crossunder(k,d) and k>20 // } End of entries logic // **** Pivot-points and stop-loss logic **** { piv_high = pivothigh(high,1,1) piv_low = pivotlow(low,1,1) var float stoploss_long=low var float stoploss_short=high pl=valuewhen(piv_low,piv_low,0) ph=valuewhen(piv_high,piv_high,0) if GoLong stoploss_long := low<pl ? low : pl if GoShort stoploss_short := high>ph ? high : ph plot(stoploss_long, color=color.red, title="stoploss_long") plot(stoploss_short, color=color.lime, title="stoploss_short") // Stop-Loss Updating mechanism enable_stoploss_mechanism=input(true, title="Enable Stoploss Modification Mechanism") UpdateLongStopLoss = strategy.position_size>0 and strategy.position_size[1]>0 and piv_low and pl!=stoploss_long and not GoLong and enable_stoploss_mechanism UpdateShortStopLoss = strategy.position_size<0 and strategy.position_size[1]<0 and piv_high and ph!=stoploss_short and not GoShort and enable_stoploss_mechanism if UpdateLongStopLoss stoploss_long := pl if UpdateShortStopLoss stoploss_short := ph plotshape(UpdateLongStopLoss ? stoploss_long[1]-300*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.lime, textcolor=color.white, text="SL\nmove") plotshape(UpdateShortStopLoss ? stoploss_short[1]+300*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.red, textcolor=color.black, text="SL\nmove") // } End of Pivot-points and stop-loss logic // **** Trade counter **** { var int trade_id=0 if GoLong or GoShort trade_id:=trade_id+1 // } End of Trade counter strategy.entry("Long", strategy.long, when=GoLong) strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel) strategy.entry("Short", strategy.short, when=GoShort) strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel) if GoLong alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close) if GoShort alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close) if UpdateLongStopLoss alertsyntax_updatelongstoploss='slmod slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) alert(message=alertsyntax_updatelongstoploss, freq=alert.freq_once_per_bar_close) if UpdateShortStopLoss alertsyntax_updateshortstoploss='slmod slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) alert(message=alertsyntax_updateshortstoploss, freq=alert.freq_once_per_bar_close)