Strategi Penembusan Saluran Donchian

Penulis:ChaoZhang, Tanggal: 2024-01-29 11:51:08
Tag:

img

Gambaran umum

Donchian channel breakout strategy adalah strategi yang mengikuti tren. Strategi ini membentuk saluran harga dengan menghitung harga tertinggi dan terendah selama periode waktu tertentu dan menggunakan batas saluran sebagai sinyal beli dan jual. Strategi ini cocok untuk perdagangan cryptocurrency yang sangat volatile.

Logika Strategi

Strategi ini menggunakan indikator Saluran Donchian untuk menentukan tren harga dan menghitung titik masuk dan keluar. Saluran Donchian terdiri dari rel atas, rel bawah dan rel tengah.

Waktu masuk dan keluar dapat dikonfigurasi secara independen. Ketika harga melewati rel bawah ke atas, itu akan panjang. Ketika harga melewati rel atas ke bawah, itu akan pendek. Titik keluar adalah ketika harga menyentuh rel yang sesuai lagi.

Selain itu, strategi juga menetapkan titik take profit. Harga take profit untuk posisi panjang adalah harga masuk dikalikan dengan (1 + persentase take profit), dan sebaliknya untuk posisi pendek. Membuat fitur ini mengunci keuntungan dan mencegah kerugian berkembang.

Singkatnya, saat menilai tren, strategi ini memastikan ruang yang cukup untuk mengatur berhenti dan mengambil keuntungan. Ini membuatnya sangat cocok untuk aset yang sangat volatile seperti cryptocurrency.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Logika sinyal yang jelas dan generasi sinyal yang sederhana/andal.
  2. Indikator Saluran Donchian tidak sensitif terhadap fluktuasi harga, yang membantu menangkap tren.
  3. Parameter saluran yang dapat disesuaikan agar sesuai dengan aset dan kerangka waktu yang berbeda.
  4. Fungsi stop loss/take profit yang dibangun secara efektif mengendalikan risiko.
  5. Potensi keuntungan yang tinggi untuk aset volatile seperti cryptocurrency.

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Tidak dapat sepenuhnya menghindari risiko dari perubahan harga yang besar meskipun stop loss.
  2. Pengaturan parameter yang tidak tepat dapat menyebabkan perdagangan yang berlebihan, meningkatkan biaya.
  3. Tidak sensitif terhadap fluktuasi harga, mungkin kehilangan beberapa peluang perdagangan.

Untuk mengurangi risiko di atas:

  1. Ukuran posisi yang tepat dan diversifikasi di seluruh aset untuk mengendalikan risiko keseluruhan.
  2. Mengoptimalkan parameter untuk menemukan kombinasi terbaik, mungkin menggunakan pembelajaran mesin.
  3. Masukkan indikator tambahan untuk menentukan keandalan sinyal.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam dimensi berikut:

  1. Uji dan optimalkan lebih banyak kombinasi parameter untuk menemukan nilai optimal. parameter kunci termasuk periode saluran, mengambil persentase keuntungan, memungkinkan panjang / pendek dll
  2. Mengintegrasikan model pembelajaran mesin untuk secara otomatis mengidentifikasi parameter optimal, misalnya menggunakan pembelajaran penguatan.
  3. Gabungkan indikator lain seperti moving average dan volume untuk menentukan tren dan keandalan sinyal.
  4. Mengembangkan strategi stop loss yang lebih maju misalnya trailing stop loss, Chandelier Exit dll untuk mengontrol risiko dengan lebih baik.
  5. Memperluas strategi di lebih banyak kelas aset untuk menemukan yang paling cocok.

Kesimpulan

Pada akhirnya, strategi penembusan saluran Donchian memberikan sinyal yang jelas dan risiko yang dapat dikendalikan untuk perdagangan tren. Strategi ini sangat cocok untuk aset volatile seperti cryptocurrency dengan potensi keuntungan yang besar. Ada juga kemungkinan untuk mengoptimalkan parameter lebih lanjut dan menggabungkan indikator lain, yang merupakan jalan untuk peningkatan di masa depan. Dengan inovasi berkelanjutan, strategi ini memiliki potensi untuk menjadi strategi perdagangan algoritmik yang penting untuk cryptocurrency.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
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/
// © algotradingcc
// Strategy testing and optimisation for free trading bot 

//@version=4
strategy("Donchian Channel Strategy [for free bot]", overlay=true )

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()


Lebih banyak