Strategi stop loss dinamis berdasarkan ATR


Tanggal Pembuatan: 2023-10-10 10:50:21 Akhirnya memodifikasi: 2023-10-10 10:50:21
menyalin: 4 Jumlah klik: 936
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menggunakan indikator ATR untuk menetapkan titik stop loss yang dinamis, menyesuaikan posisi stop loss sesuai dengan amplitudo fluktuasi harga, untuk mencapai kontrol risiko. Strategi ini terutama melalui 5 hari EMA dan 20 hari EMA untuk membentuk garpu emas untuk melakukan beberapa masuk, lalu menggunakan indikator ATR untuk mengatur posisi stop loss dan posisi stop loss.

Prinsip Strategi

Strategi ini pertama-tama memutuskan untuk melakukan over entry ketika EMA 5 hari melewati EMA 20 hari untuk membentuk garpu emas. Setelah masuk, gunakan indikator ATR untuk menghitung kelipatan ATR dari jarak harga masuk dari harga saat ini, dan tetapkan posisi stop loss 1.5 ATR di bawah harga masuk. Kemudian, seiring kenaikan harga, angkat posisi stop loss secara bertahap, jika kenaikan harga melebihi harga masuk 3 ATR, maka sebagian berhenti.

Secara khusus, kebijakan akan mendefinisikan variabel-variabel berikut:

  • entry_price: harga masuk
  • stop_price: harga berhenti
  • take_profit_price: harga stop loss
  • atr_down: garis ATR bawah
  • atr_up: baris ATR atas
  • atr_current: garis ATR saat ini
  • atr_ref: Nilai ATR

Setelah masuk, at_ref akan dihitung sebagai nilai ATR saat ini, at_div sebagai ATR kali dari harga masuk ke harga saat ini. Kemudian, sesuai dengan at_div, at_down, at_current, dan at_up akan diatur.

Ketika harga naik, dengan membandingkan harga saat ini avg dan atr_up, jika avg dikenakan atr_up, perhitungkan kembali posisi yang sesuai dengan atr_div dan atr, sehingga stop loss line akan naik secara bertahap, meningkatkan keuntungan memegang posisi.

Jika harga melebihi harga masuk 3ATR, maka akan terjadinya penutupan sebagian posisi untuk mengunci keuntungan, saat ini tanda tookProfit ditempatkan sebagai true. Setelah itu jika harga terus naik, akan terus mengangkat posisi stop loss. Jika triggered stop loss, maka akan diadili tookProfit, jika sebelumnya telah terjadinya penutupan sebagian, maka hanya terjadinya penutupan posisi yang tersisa, jika tidak seluruh posisi terjadinya.

Keunggulan Strategis

  1. Dengan menggunakan indikator ATR untuk menyesuaikan posisi stop loss secara dinamis, Anda dapat mengatur jarak stop loss yang masuk akal sesuai dengan tingkat fluktuasi pasar.

  2. Dalam kasus kerugian terbatas, mengikuti tren untuk memotong keuntungan. Stop loss line akan meningkat secara bertahap, sehingga keuntungan terus terakumulasi.

  3. Mekanisme stop-loss dapat mengunci sebagian dari keuntungan, mengurangi risiko. Kemudian posisi stop-loss terus naik, sehingga keuntungan terus berjalan.

Risiko Strategis

  1. Indikator ATR tidak sensitif terhadap terobosan yang tidak biasa dan tidak dapat menangani risiko yang ditimbulkan oleh gaps.

  2. Indikator EMA tidak dapat menentukan apakah tren berbalik, dan mungkin masuk ke posisi baru jika tren berbalik.

  3. Kemungkinan besar kerugian akan berbalik setelah berhenti sebagian.

  4. Parameter tidak dioptimalkan, 1.5 ATR stop loss dan 3 ATR stop loss perlu disesuaikan dengan varietas yang berbeda.

Optimasi Strategi

  1. Penambahan indikator stop loss lainnya, seperti saluran Donchian, dapat dipertimbangkan untuk mencegah keterlambatan indikator ATR.

  2. Anda dapat menguji berbagai indikator garis rata-rata, atau menambahkan MACD untuk menilai pembalikan tren.

  3. Rasio dan frekuensi penghentian sebagian dapat dioptimalkan, dengan pengaturan yang berbeda untuk varietas yang berbeda.

  4. Menambahkan parameter optimasi, menguji efek stop loss dari berbagai ATR multiplier. Menambahkan langkah stop loss fungsi.

  5. Uji kinerja pada saat tren lemah, pertimbangkan untuk mengaktifkan strategi ini hanya pada saat tren kuat.

Meringkaskan

Strategi ini secara keseluruhan ide yang jelas dan mudah dimengerti, menggunakan ATR indikator dinamis penyesuaian stop loss untuk mencapai kontrol risiko perdagangan adalah keunggulan terbesar. Namun, ATR indikator sendiri ada keterlambatan, dan parameter pengaturan perlu dioptimalkan. Menambahkan stop loss dan indikator trend penilaian lainnya akan menjadi arah perbaikan. Selain itu, beberapa mekanisme penutupan juga perlu dilakukan pengujian optimasi sesuai dengan varietas yang berbeda.

Kode Sumber Strategi
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 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/
// © ekinbasarkomur

//@version=5
strategy("[EKIN] ATR Exit Strategy", overlay=true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = true)

// Simple EMA tracking
fastEMA = ta.ema(close, 5)
slowEMA = ta.ema (close, 20)
atr = ta.atr(14)

// We define entry price for future reference
var float entry_price = na
// We define stop and take profit for future calculations
var float stop_price = na
var float take_profit_price = na

// We define atr limtim its here
var float atr_down = na
var float atr_up = na
var float atr_current = na
var float atr_ref = na

avg = (low + high) / 2

// Conditions
enterCondition = ta.crossover(fastEMA, slowEMA)
var bool tookProfit = false
timePeriod = time >= timestamp(syminfo.timezone, 2021, 12, 15, 0, 0)
InTrade = strategy.position_size > 0

// Go long if conditions are met
if (enterCondition and timePeriod and not InTrade)
    // Calculate and update variables
    entry_price := avg
    atr_ref := atr
    atr_div = int((avg - entry_price) / atr_ref)
    atr_down := entry_price + (atr_ref * (atr_div - 1.5))
    atr_up := entry_price + (atr_ref * (atr_div + 1))
    atr_current := entry_price + (atr_ref * atr_div) 
    stop_price := (entry_price - (atr_ref * 1.5))
    take_profit_price := (entry_price + (atr_ref * 3))
    strategy.order("buy", strategy.long, qty = 2)

// Enter here if in position
if InTrade or tookProfit
    stopCondition = avg < stop_price
    takeProfitCondition = avg > take_profit_price

    if avg < atr_down
        stopCondition := true

    // Move stop price and exit price if price for each atr price increase
    if avg > atr_up
        if tookProfit
            atr_ref := atr
        atr_div = int((avg - entry_price) / atr_ref)
        atr_down := entry_price + (atr_ref * (atr_div - 1))
        atr_up := entry_price + (atr_ref * (atr_div + 1))
        atr_current := entry_price + (atr_ref * atr_div) 

    // Take half of the investment if current price is 3 atr higher than entry price
    if (takeProfitCondition and timePeriod and InTrade and not tookProfit)
        strategy.order("take_half_profit", strategy.short, qty = 1)
        tookProfit := true

    // Exit position if conditions are met and reset the variables
    if (stopCondition and timePeriod and InTrade)
        if tookProfit
            strategy.order("exit", strategy.short, qty = 1)
        else
            strategy.order("stop_loss", strategy.short, qty = 2)

        tookProfit := false

// Plot EMA's
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.yellow)

// Plot ATR Limit/Stop positions
profit_plot = plot(series = InTrade?atr_up:na, title = "profit", color = color.green, style=plot.style_linebr)
close_plot = plot(series = InTrade?atr_current:na, title = "close", color = color.white, style=plot.style_linebr)
stop_plot = plot(series = InTrade?atr_down:na, title = "stop_loss", color = color.red, style=plot.style_linebr)
fill(profit_plot, close_plot, color = color.new(color.green, 80))
fill(close_plot, stop_plot, color =color.new(color.red,80))