Sumber daya yang dimuat... Pemuatan...

Donchian Breakout Trading Strategy

Penulis:ChaoZhang, Tanggal: 2024-04-29 14:56:35
Tag:

img

Gambaran umum

Donchian Breakout Trading Strategy adalah sistem perdagangan yang didasarkan pada indikator Saluran Donchian. Ide utama dari strategi ini adalah untuk menangkap tren pasar dengan menembus pita atas dan bawah Saluran Donchian, dan untuk menggunakan rasio risiko imbalan (RR) tetap untuk mengambil keuntungan dan stop loss.

Prinsip Strategi

  1. Menghitung Saluran Donchian: Berdasarkan periode Saluran Donchian yang ditetapkan (default 20), hitung harga tertinggi dan terendah dalam periode tersebut sebagai pita atas dan bawah Saluran Donchian masing-masing, dan hitung titik tengah pita atas dan bawah sebagai pita tengah Saluran Donchian.
  2. Menentukan apakah ada kenaikan/rendah baru: Dengan mengelus dan membandingkan band atas dan bawah Saluran Donchian saat ini dengan band atas dan bawah dari beberapa periode sebelumnya, tentukan apakah ada kenaikan atau penurunan baru relatif terhadap periode Saluran Donchian.
  3. Entry Breakout: Ketika harga penutupan menembus band atas Donchian biru, masuk ke posisi panjang; ketika masuk di bawah band bawah Donchian biru, masuk ke posisi pendek.
  4. Mengambil keuntungan dan stop loss: Saat membuka posisi, catat harga masuk dan harga band tengah Saluran Donchian saat ini, dan hitung perbedaan harga antara keduanya. Stop loss ditetapkan pada band tengah Saluran Donchian, dan mengambil keuntungan dihitung berdasarkan Rasio Risiko Penghargaan yang ditetapkan (default 5 kali) dan perbedaan harga.
  5. Posisi close: Ketika harga mencapai harga take profit atau stop loss, posisi ditutup.

Keuntungan Strategi

  1. Cocok untuk pasar tren: Strategi Breakout Donchian memasuki posisi dengan menembus band atas/bawah, mengikuti arah tren pasar, dan berkinerja baik di pasar tren.
  2. Penyaringan tinggi/rendah baru: Strategi ini menyaring beberapa sinyal kebisingan dan kebocoran palsu dengan menentukan apakah ada tinggi/rendah baru yang dibuat dalam periode Saluran Donchian, meningkatkan kualitas sinyal masuk.
  3. Rasio Risiko Pengembalian Tetap: Posisi mengambil keuntungan dan stop loss untuk setiap perdagangan didasarkan pada rasio Risiko Pengembalian yang tetap, membuat risiko terkendali dan kondusif untuk manajemen uang.
  4. Parameter sederhana: Parameter strategi relatif mudah diatur, terutama periode Saluran Donchian dan Risk Reward Ratio, sehingga pengoptimalan dan kontrol lebih mudah.

Risiko Strategi

  1. Magnitude loss: Posisi stop loss dari strategi adalah band tengah Saluran Donchian. Dalam tren yang tidak jelas atau pasar yang berfluktuasi, mungkin ada situasi di mana satu transaksi mengalami kerugian besar.
  2. Perdagangan yang sering: Jika periode Saluran Donchian ditetapkan terlalu pendek, hal itu dapat menyebabkan pembukaan dan penutupan posisi yang sering, meningkatkan biaya transaksi.
  3. Pembalikan tren: Selama pembalikan tren, strategi dapat mengalami beberapa stop loss berturut-turut.
  4. Sensitivitas parameter: Kinerja strategi sensitif terhadap pengaturan parameter dan perlu dioptimalkan berdasarkan karakteristik pasar dan siklus perdagangan yang berbeda.

Arah Optimasi Strategi

  1. Stop loss dinamis: Sesuaikan posisi stop loss secara real time berdasarkan pergerakan harga, volatilitas, dll., seperti menggunakan ATR sebagai referensi stop loss untuk mengurangi risiko transaksi tunggal.
  2. Filter tren: Tambahkan indikator penilaian tren seperti moving average dan hanya buka posisi ketika arah tren jelas untuk meningkatkan kualitas sinyal.
  3. Gabungkan dengan indikator lain: Gabungkan dengan indikator momentum seperti RSI dan MACD untuk mengevaluasi secara komprehensif waktu pembukaan posisi.
  4. Manajemen Posisi: Mengatur secara dinamis ukuran posisi berdasarkan kekuatan tren pasar, volatilitas, dll, untuk mengendalikan risiko keseluruhan.
  5. Adaptasi parameter: Gunakan pembelajaran mesin dan metode lain untuk mengoptimalkan pengaturan parameter secara adaptif.

Ringkasan

Donchian Breakout Trading Strategy adalah sistem perdagangan yang mengikuti tren berdasarkan indikator Donchian Channel klasik. Ini membuka posisi melalui breakout dari band atas dan bawah dari Donchian Channel dan penilaian atas/bawah baru, dengan mengambil keuntungan dan stop loss berdasarkan rasio Risk Reward yang tetap. Strategi ini memiliki logika yang sederhana dan cocok untuk pasar tren. Namun, kinerja buruk di pasar yang berfluktuasi dan sensitif terhadap pengaturan parameter.


/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 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/
// © Dillon_Grech
//---------------------------------------------//

//---------------------------------------------//
// Simple donchian channel break out strategy
// which only enters trades when price closes
// above donchian upper and creates new high 
// (long) or price closes below donchian lower
// and creates new low, relative to the donchian
// length. This is indicated by the donchian
// upper and lower color (blue). Stop loss is
// located at donchian basis and take profit
// is set at Risk Reward (RR) profit target.
//---------------------------------------------//
//@version=5
strategy("Donchian New High/Low Strategy [Dillon Grech]", overlay=true)

//---------------------------------------------//

//---------------------------------------------//
//INDICATOR 1 - Donchian New High Low Price Close
don_length = input.int(20, minval = 1)
don_lower  = ta.lowest(don_length)
don_upper  = ta.highest(don_length)
don_basis  = math.avg(don_upper, don_lower)

//loop
don_lower_upper  = true
don_higher_lower = true
for i = 0 to don_length - 1
    //Check for higher high over don_length
    if don_upper > don_upper[i]
        don_lower_upper := false
    //Check for lower low over don_length
    if don_lower < don_lower[i]
        don_higher_lower := false

//Plot
c_ora = color.orange
c_blu = color.blue
c_gra = color.gray
color_basis = c_ora
color_upper = don_lower_upper  ? c_blu : c_gra
color_lower = don_higher_lower ? c_blu : c_gra
plot(don_basis,     "Don Basis", color_basis, 2)
u = plot(don_upper, "Don Upper", color_upper, 2)
l = plot(don_lower, "Don Lower", color_lower, 2)

//Conditions
Ind_1_L = ta.crossover(close, don_upper[1]) and 
   don_lower_upper[1]
Ind_1_S = ta.crossunder(close,don_lower[1]) and 
   don_higher_lower[1]
//---------------------------------------------//

//---------------------------------------------//
//ENTRY CONDITIONS
entry_long  = strategy.position_size<=0 and
   Ind_1_L
entry_short = strategy.position_size>=0 and
   Ind_1_S

if(entry_long)
    strategy.entry("Long Entry", strategy.long)
if(entry_short)
    strategy.entry("Short Entry", strategy.short)
//---------------------------------------------/

//---------------------------------------------//
//TAKE PROFIT AND STOP LOSS CONDITIONS
profit_RR = input.float(5.0,"RR Profit Target")

//Store Price on new entry signal
entry_price = strategy.opentrades.entry_price(
   strategy.opentrades-1)

//Store Donchain Channel Basis
entry_don_basis = float(0.0)
if entry_long or entry_short
    entry_don_basis := don_basis
else
    entry_don_basis := entry_don_basis[1]

//Get stop loss distance
stop_distance = math.abs(entry_price -
   entry_don_basis)
stop_L   = entry_price - stop_distance
profit_L = entry_price + stop_distance*profit_RR
stop_S   = entry_price + stop_distance
profit_S = entry_price - stop_distance*profit_RR

//Plot TP and SL
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? profit_L : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? stop_L : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na : 
   strategy.position_size < 0 ? profit_S : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size < 0 ? stop_S : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)

//Exit long trades
strategy.exit(id = 'Exit Long', 
   from_entry ='Long Entry', 
   stop = stop_L, limit = profit_L)
strategy.exit(id = 'Exit Short', 
   from_entry ='Short Entry', 
   stop = stop_S, limit = profit_S)
//---------------------------------------------//

Lebih banyak