Strategi stop loss susulan dinamik


Tarikh penciptaan: 2023-12-21 15:58:54 Akhirnya diubah suai: 2023-12-21 15:58:54
Salin: 1 Bilangan klik: 761
1
fokus pada
1623
Pengikut

Strategi stop loss susulan dinamik

Gambaran keseluruhan

Strategi ini menetapkan arah trend berdasarkan garisan matahari, dan kemudian menggunakan titik tinggi atau rendah baru yang terbentuk pada garisan K selama 15 minit sebagai titik berhenti atau menjejaki titik berhenti, untuk melakukan penyesuaian berhenti secara dinamik untuk mengunci lebih banyak keuntungan.

Prinsip Strategi

  1. Menggunakan harga penutupan K hari dan harga tertinggi dan harga terendah hari sebelumnya untuk menentukan arah trend. Jika harga penutupan lebih tinggi daripada harga tertinggi hari sebelumnya, ia ditakrifkan sebagai trend naik; Jika harga penutupan lebih rendah daripada harga terendah hari sebelumnya, ia ditakrifkan sebagai trend menurun.

  2. Dalam trend menaik, apabila harga penutupan 15 minit K lebih tinggi daripada harga tertinggi pada 15 minit K sebelumnya, buat lebih banyak; dalam trend menurun, apabila harga penutupan 15 minit K lebih rendah daripada harga terendah pada 15 minit K sebelumnya, buat lebih sedikit.

  3. Selepas melakukan penambahan, harga terendah pada 15 minit K baris sebelumnya sebagai titik berhenti. Selepas melakukan penarikan, harga tertinggi pada 15 minit K baris sebelumnya sebagai titik berhenti.

  4. Apabila 15 minit garis K sekali lagi mencipta tinggi baru atau rendah, menyesuaikan titik hentian. Apabila melakukan lebih banyak, menyesuaikan kepada rendah baru, apabila kosong, menyesuaikan kepada tinggi baru, mewujudkan hentian pelacakan dinamik.

Analisis kelebihan

Kelebihan utama strategi ini ialah anda boleh menyesuaikan kedudukan stop loss secara dinamik, mengunci keuntungan sebanyak mungkin sambil memastikan kawalan risiko, dan mengurangkan kemungkinan stop loss terkena kejutan.

Kelebihan spesifiknya ialah:

  1. Berdasarkan trend operasi, dapat menilai pergerakan pasaran dan memilih arah perdagangan yang betul.

  2. Perdagangan dalam 15 minit, anda boleh masuk dan keluar lebih kerap, dan anda boleh menangkap lebih banyak peluang.

  3. Secara dinamik, anda boleh menyesuaikan strategi hentian anda untuk mengurangkan risiko kejatuhan hentian anda dengan kenaikan atau penurunan baru.

  4. Tetapan kedudukan hentikan kerosakan adalah munasabah untuk mengelakkan kerugian yang tidak perlu.

Analisis risiko

Risiko utama dalam strategi ini adalah kesilapan dalam penilaian trend. Risiko spesifik adalah seperti berikut:

  1. Kesilapan dalam menilai trend garis matriks boleh menyebabkan perdagangan salah arah.

  2. Dalam jangka masa pendek, terdapat kemungkinan besar bahawa 15 minit stop loss akan ditembusi.

  3. Salah mengenal pasti titik perubahan trend boleh menyebabkan kerugian.

Penyelesaian yang sesuai adalah seperti berikut:

  1. Menambah indikator kitaran masa lain untuk membuat penghakiman komprehensif, untuk mengelakkan kesilapan hanya dengan satu kitaran sahaja.

  2. Menilai turun naik pasaran, dengan kelonggaran yang sesuai untuk menghentikan kerugian apabila turun naiknya lebih besar.

  3. Menambah mekanisme penilaian titik peralihan trend, dan melonggarkan kedudukan tepat pada masanya sebelum peralihan

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan:

  1. Menambah penilaian indikator kitaran lain dan mengoptimumkan trend.

  2. Uji pelbagai seting stop loss ratio dan pilih parameter yang optimum.

  3. Meningkatkan penunjuk kapasiti untuk mengelakkan pemisahan kapasiti yang menyebabkan perdagangan yang salah.

  4. Menambah mekanisme pembalikan trend dan mengoptimumkan titik keluar.

  5. Penilaian untuk meningkatkan nilai Trailing Stop untuk mengurangkan lagi kebarangkalian terhempas.

ringkaskan

Strategi ini berfungsi dengan baik secara keseluruhan, idea yang jelas dan mudah difahami, mempunyai kelebihan penyesuaian dinamik henti rugi, perdagangan yang kerap, dan seterusnya, dapat mengawal risiko dengan berkesan dan mengunci keuntungan, layak untuk diuji dan dioptimumkan lebih lanjut. Tetapi terdapat ruang untuk penambahbaikan, disarankan untuk bermula dari pelbagai sudut penilaian komprehensif, menetapkan parameter yang dioptimumkan, meningkatkan penilaian perubahan trend, dan sebagainya, untuk meningkatkan kestabilan dan kadar pulangan strategi.

Kod sumber 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)