Memindahkan strategi Stop Loss Tracking

Penulis:ChaoZhang, Tanggal: 2024-01-03 16:15:29
Tag:

img

Gambaran umum

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.

Prinsip Strategi

  1. 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.

  2. 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.

  3. 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.

  4. Strategi ini mendukung kontrol manual apakah untuk mengaktifkan mekanisme stop loss dinamis.

Analisis Keuntungan

  1. Mekanisme stop loss trailing yang dinamis dapat menyesuaikan tingkat stop loss secara fleksibel sesuai dengan fluktuasi pasar untuk mengontrol risiko secara efektif.

  2. Fungsi peringatan memungkinkan pengiriman informasi penyesuaian stop loss secara real time ke MT4/MT5 untuk manajemen otomatis tanpa intervensi manual.

  3. Anotasi visual dari penyesuaian stop loss pada grafik memudahkan melihat dan memverifikasi efek stop loss trailing.

  4. Dukungan untuk mengontrol secara manual mekanisme stop loss trailing memungkinkan adaptasi yang fleksibel dengan kondisi pasar yang berbeda.

  5. Dikombinasikan dengan indikator Stoch untuk menentukan peluang, strategi dapat secara efektif menyaring breakout palsu dan meningkatkan stabilitas.

Analisis Risiko

  1. Indikator Stoch dapat menghasilkan sinyal silang yang sering, memperkenalkan risiko operasi yang lebih tidak efektif.

  2. Dalam kondisi pasar yang ekstrim, stop loss dapat ditembus, tidak dapat sepenuhnya menghindari kerugian besar.

  3. Masalah koneksi peringatan seperti gangguan dan keterlambatan dapat terjadi, mencegah umpan balik waktu nyata dari penyesuaian.

  4. Jangkauan penundaan kerugian yang dinamis membutuhkan penyesuaian yang relatif sering, yang berpotensi menimbulkan biaya perdagangan yang lebih tinggi.

Arahan Optimasi

  1. Kombinasi parameter yang berbeda dapat diuji untuk mengoptimalkan indikator Stoch untuk kualitas sinyal dan kinerja strategi yang lebih baik.

  2. Indikator lain dapat dikombinasikan untuk menyaring sinyal atau menentukan rentang penyesuaian untuk meningkatkan stabilitas strategi.

  3. Algoritma pelacakan yang berbeda dapat dipelajari untuk mengurangi frekuensi penyesuaian sambil memastikan efek stop loss.

  4. Metode koneksi dengan MT4/MT5 dapat ditingkatkan untuk memastikan peringatan yang tepat waktu dan efisien dan meminimalkan keterlambatan.

  5. Mode stop loss otomatis dan manual dapat diperkenalkan untuk menggunakan mekanisme yang berbeda dalam kondisi pasar yang berbeda.

Ringkasan

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)


Lebih banyak