
Strategi ini menggunakan indikator Stoch untuk menilai sinyal masuk, setelah masuk, akan melacak harga tinggi atau rendah secara real time, sehingga secara dinamis menyesuaikan titik stop loss. Selain itu, strategi ini juga akan mengirim informasi tentang modifikasi stop loss ke MT4/MT5 melalui fungsi alert, untuk menyesuaikan posisi dalam perdagangan nyata secara real time.
Strategi ini didasarkan pada indikator Stoch yang menghasilkan sinyal beli dan jual ketika garis K Stoch dari bawah menerobos garis D. Sinyal beli dihasilkan ketika garis K Stoch dari atas menerobos garis D.
Setelah masuk ke pasar, strategi akan melacak secara real-time titik terendah terbaru dari harga terendah dan titik tertinggi terbaru dari harga tertinggi, sebagai stop loss yang dinamis. Secara khusus, untuk melakukan banyak pesanan, akan melacak titik terendah terbaru dari harga terendah sebagai stop loss; untuk melakukan pesanan, akan melacak titik tertinggi terbaru dari harga tertinggi sebagai stop loss.
Ketika terdeteksi perubahan dalam Stop Loss, strategi ini akan menghasilkan modifikasi Stop Loss melalui fungsi Alert, dan mengirimnya ke MT4/MT5 untuk menyesuaikan Stop Loss dalam real time dalam perdagangan nyata. Selain itu, pencitraan grafik ditandai untuk menampilkan perubahan Stop Loss secara visual.
Strategi ini mendukung pengendalian manual apakah mekanisme stop loss dinamis diaktifkan. Setelah diaktifkan, harga stop loss dapat disesuaikan secara real-time berdasarkan fluktuasi pasar.
Menggunakan mekanisme tracking stop loss yang dinamis, Anda dapat menyesuaikan stop loss secara fleksibel sesuai dengan fluktuasi pasar, untuk mencapai tracking stop loss, dan mengontrol risiko secara efektif.
Fungsi alert dapat mengirim informasi penyesuaian stop loss secara real-time ke MT4/MT5, untuk manajemen otomatis, tanpa intervensi manusia.
Intuitif dilambangkan informasi penyesuaian stop loss pada grafik, untuk memudahkan melihat dan memverifikasi efek pelacakan stop loss.
Mendukung pengendalian manual apakah mekanisme pelacakan stop loss diaktifkan, fleksibel untuk beradaptasi dengan kondisi pasar yang berbeda.
Kombinasi dengan penilaian waktu dari indikator Stoch dapat secara efektif memfilter terobosan palsu dan meningkatkan stabilitas strategi.
Indikator Stoch mungkin sering mengalami sinyal silang, membawa risiko lebih banyak operasi yang tidak efektif. Parameter dapat disesuaikan dengan baik untuk memfilter sinyal.
Dalam situasi yang ekstrim, stop loss dapat ditembus dan risiko kerugian besar tidak dapat sepenuhnya dihindari.
Koneksi alert mungkin mengalami gangguan, penundaan, dan lain-lain, sehingga tidak dapat memberikan umpan balik secara real-time, dan perlu dilakukan penanganan kesalahan.
Tracking stop loss secara dinamis membutuhkan penyesuaian yang relatif intensif, yang dapat menyebabkan biaya transaksi yang lebih besar.
Kombinasi parameter yang berbeda dapat diuji untuk mengoptimalkan metrik Stoch untuk kualitas sinyal yang lebih baik dan efektivitas strategi.
Dapat dikombinasikan dengan indikator lain untuk memfilter sinyal atau menentukan amplitudo penyesuaian, mengoptimalkan mekanisme stop loss untuk meningkatkan stabilitas strategi.
Algoritma pelacakan yang berbeda dapat dipelajari untuk mengurangi frekuensi penyesuaian dan memastikan efek stop loss.
Mengoptimalkan koneksi ke MT4/MT5 untuk memastikan alert tepat waktu dan mengurangi masalah latensi.
Mode stop loss otomatis dan mode switch manual dapat diperkenalkan, dengan mekanisme stop loss yang berbeda untuk kondisi pasar yang berbeda.
Strategi ini pertama-tama berdasarkan indikator Stoch untuk menentukan waktu pembelian dan penjualan, lalu melacak pergerakan harga secara real-time untuk menyesuaikan posisi stop loss, dan mengirimkan informasi penyesuaian melalui otomatisasi perintah alert. Sistem stop loss dinamis ini dapat secara aktif mengelola risiko posisi sesuai dengan perubahan pasar, dan mengurangi intervensi buatan untuk meningkatkan efisiensi.
/*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)