Strategi Stop Loss yang Dinamis

Penulis:ChaoZhang, Tanggal: 2023-12-21 15:58:54
Tag:

img

Gambaran umum

Strategi ini menentukan arah tren berdasarkan lilin harian, dan menggunakan titik tinggi atau rendah baru yang terbentuk oleh lilin 15 menit sebagai harga stop loss atau harga stop loss trailing, sehingga secara dinamis menyesuaikan stop loss dan mengunci lebih banyak keuntungan.

Logika Strategi

  1. Bandingkan harga penutupan lilin harian dengan harga tertinggi dan terendah lilin harian sebelumnya untuk menentukan arah tren. Jika harga penutupan lebih tinggi dari harga tertinggi hari sebelumnya, itu didefinisikan sebagai tren naik. Jika harga penutupan lebih rendah dari harga terendah hari sebelumnya, itu didefinisikan sebagai tren turun.

  2. Ketika dalam tren naik, pergi panjang ketika harga penutupan lilin 15 menit lebih tinggi dari harga tertinggi lilin 15 menit sebelumnya. Ketika dalam tren turun, pergi pendek ketika harga penutupan lilin 15 menit lebih rendah dari harga terendah lilin 15 menit sebelumnya.

  3. Tetapkan harga terendah dari candlestick 15 menit sebelumnya sebagai harga stop loss setelah pergi panjang. Tetapkan harga tertinggi dari candlestick 15 menit sebelumnya sebagai harga stop loss setelah pergi pendek.

  4. Ketika lilin 15 menit membuat tinggi atau rendah baru lagi, sesuaikan harga stop loss sesuai. Sesuaikan dengan rendah baru setelah pergi panjang. Sesuaikan dengan tinggi baru setelah pergi pendek. Ini mewujudkan stop loss trailing dinamis.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia dapat secara dinamis menyesuaikan harga stop loss.

Khususnya keuntungan meliputi:

  1. Penghakiman berdasarkan operasi tren dapat menentukan tren pasar secara tepat waktu dan memilih arah perdagangan yang tepat.

  2. Perdagangan jangka waktu 15 menit memungkinkan masuk dan keluar yang sering untuk menangkap lebih banyak peluang.

  3. Penyesuaian stop loss dinamis berdasarkan puncak atau titik terendah baru mengurangi risiko stop loss terkena.

  4. Posisi stop loss yang masuk akal sebagian besar menghindari kerugian yang tidak perlu.

Analisis Risiko

Risiko utama dari strategi ini berasal dari kesalahan dalam penilaian tren.

  1. Penilaian tren harian yang salah dapat menyebabkan arah perdagangan yang salah.

  2. Harga dapat berfluktuasi dengan keras dalam jangka pendek, meningkatkan kemungkinan stop loss 15 menit dipukul.

  3. Identifikasi titik pembalikan tren yang tidak benar dapat menyebabkan kerugian.

Solusi yang sesuai:

  1. Tambahkan indikator dari kerangka waktu lain untuk penilaian komprehensif untuk menghindari mengandalkan satu kerangka waktu saja.

  2. Mengevaluasi volatilitas pasar dan meringankan rentang stop loss dengan tepat selama volatilitas tinggi.

  3. Tambahkan mekanisme identifikasi titik pembalikan tren untuk menutup posisi tepat waktu sebelum pembalikan.

Arahan Optimasi

Masih ada ruang untuk optimasi lebih lanjut:

  1. Tambahkan indikator jangka waktu lainnya untuk mengoptimalkan penangkapan tren.

  2. Uji pengaturan rasio stop loss yang berbeda untuk menemukan parameter optimal.

  3. Tambahkan indikator volume untuk menghindari kesalahan dari divergensi volume.

  4. Tambahkan mekanisme pembalikan tren untuk mengoptimalkan titik keluar.

  5. Mengevaluasi memperluas interval harga Trailing Stop untuk lebih mengurangi risiko stop loss yang terkena.

Ringkasan

Performa keseluruhan strategi ini baik. Logika jelas dan mudah dipahami. Ini memiliki keuntungan seperti penyesuaian stop loss dinamis, perdagangan sering, dan perdagangan sesuai tren. Ini dapat secara efektif mengendalikan risiko dan mengunci keuntungan, dan layak untuk pengujian dan optimasi lebih lanjut. Tetapi masih ada ruang untuk perbaikan. Disarankan untuk meningkatkan dari aspek seperti penilaian komprehensif dari beberapa sudut, optimasi parameter, menambahkan mekanisme identifikasi pembalikan tren, dll, untuk lebih memperkuat stabilitas dan profitabilitas strategi.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-15 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Anand's Strategy", overlay=true)

// Get the high and low of the previous day's candle
prev_high = request.security(syminfo.tickerid, "D", high[2])
prev_low = request.security(syminfo.tickerid, "D", low[2])

// var float prev_high = na
// var float prev_low = na

prev_close = request.security(syminfo.tickerid, "D", close[1])


getDayIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "D", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "D", low[_bar])
    [_indexed_high, _indexed_low]

var index = 2

while index >= 0
    [indexed_high_D, indexed_low_D] =  getDayIndexedHighLow(index)
  
    if prev_close > indexed_high_D or prev_close < indexed_low_D
        prev_high := indexed_high_D
        prev_low := indexed_low_D
        break
    // Decrease the index to move to the previous 15-minute candle
    index := index - 1


// Determine the trade direction based on the candle criterion
trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0)

// Get the current close from 15-minute timeframe
current_close = request.security(syminfo.tickerid, "15", close[1])
prev_high_15m = request.security(syminfo.tickerid, "15", high[2])
prev_low_15m = request.security(syminfo.tickerid, "15", low[2])

// var float prev_high_15m = na
// var float prev_low_15m = na

getIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "15", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "15", low[_bar])
    [_indexed_high, _indexed_low]


// Loop through previous 15-minute candles until the condition is met
var  i = 2

while i >= 2
    [indexed_high_15m, indexed_low_15m] =  getIndexedHighLow(i)
  
    if current_close > indexed_high_15m or current_close < indexed_low_15m
        prev_high_15m := indexed_high_15m
        prev_low_15m := indexed_low_15m
        break
    // Decrease the index to move to the previous 15-minute candle
    i := i - 1



buy_condition = trade_direction == 1 and current_close > prev_high_15m
stop_loss_buy = prev_low_15m

// Sell Trade Criteria in Negative Trend
sell_condition = trade_direction == -1 and current_close < prev_low_15m
stop_loss_sell = prev_high_15m


// Trailing Stop Loss for Buy Trade
// Custom Trailing Stop Function for Buy Trade
var float trail_stop_buy = na
trailing_buy_condition = buy_condition and current_close > trail_stop_buy
if trailing_buy_condition
    trail_stop_buy := current_close

// Custom Trailing Stop Function for Sell Trade
var float trail_stop_sell = na
trailing_sell_condition = sell_condition and current_close < trail_stop_sell
if trailing_sell_condition
    trail_stop_sell := current_close

// Take Buy Trade with Stop Loss
if (buy_condition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy)

// Take Sell Trade with Stop Loss
if (sell_condition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell)

// Set the background color based on the trade direction
bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)

Lebih banyak