Strategi Penembusan Saluran Donchian

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

img

Ringkasan

Strategi penembusan saluran Donchian adalah strategi yang mengikuti trend. Ia membentuk saluran harga dengan mengira harga tertinggi dan terendah dalam jangka masa tertentu dan menggunakan sempadan saluran sebagai isyarat beli dan jual. Ia pergi pendek apabila harga memecahkan rel atas dan pergi panjang apabila harga memecahkan rel bawah. Strategi ini sesuai untuk perdagangan cryptocurrency yang sangat tidak menentu.

Logika Strategi

Strategi ini menggunakan penunjuk Saluran Donchian untuk menentukan trend harga dan mengira titik masuk dan keluar. Saluran Donchian terdiri daripada rel atas, rel bawah dan rel tengah.

Jangka masa masuk dan keluar boleh dikonfigurasikan secara bebas. Apabila harga menembusi rel bawah ke atas, ia akan panjang. Apabila harga menembusi rel atas ke bawah, ia akan pendek. Titik keluar adalah apabila harga menyentuh rel yang sepadan lagi. Rel tengah juga boleh digunakan sebagai garis stop loss.

Di samping itu, strategi ini juga menetapkan titik mengambil keuntungan. Harga mengambil keuntungan untuk kedudukan panjang adalah harga kemasukan dikalikan dengan (1 + mengambil peratusan keuntungan), dan sebaliknya untuk kedudukan pendek. Membolehkan ciri ini mengunci keuntungan dan menghalang kerugian daripada berkembang.

Ringkasnya, ketika menilai trend, strategi ini memastikan ruang yang mencukupi untuk menetapkan berhenti dan mengambil keuntungan. Ini menjadikannya sangat sesuai untuk aset yang sangat tidak menentu seperti cryptocurrency.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Logik isyarat yang jelas dan penjanaan isyarat yang mudah / boleh dipercayai.
  2. Penunjuk Saluran Donchian tidak sensitif terhadap turun naik harga, yang membantu menangkap trend.
  3. Parameter saluran yang boleh disesuaikan untuk memenuhi aset dan jangka masa yang berbeza.
  4. Fungsi Stop Loss / Take Profit yang terbina dalam mengawal risiko dengan berkesan.
  5. Potensi keuntungan yang tinggi untuk aset yang tidak menentu seperti cryptocurrency.

Analisis Risiko

Risiko strategi ini termasuk:

  1. Tidak dapat sepenuhnya mengelakkan risiko dari perubahan harga yang besar walaupun stop loss.
  2. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan, meningkatkan kos.
  3. Tidak sensitif terhadap turun naik harga, mungkin terlepas beberapa peluang perdagangan.

Untuk mengurangkan risiko di atas:

  1. Saiz kedudukan yang sesuai dan mempelbagaikan di seluruh aset untuk mengawal risiko keseluruhan.
  2. Mengoptimumkan parameter untuk mencari kombinasi terbaik, mungkin menggunakan pembelajaran mesin.
  3. Masukkan penunjuk tambahan untuk menentukan kebolehpercayaan isyarat.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam dimensi berikut:

  1. Uji dan optimumkan lebih banyak kombinasi parameter untuk mencari nilai optimum. Parameter utama termasuk tempoh saluran, mengambil peratusan keuntungan, membenarkan panjang / pendek dan lain-lain.
  2. Menggabungkan model pembelajaran mesin untuk mengenal pasti parameter optimum secara automatik, contohnya menggunakan pembelajaran penguat.
  3. Gabungkan penunjuk lain seperti purata bergerak dan jumlah untuk menentukan trend dan kebolehpercayaan isyarat.
  4. Membangunkan strategi stop loss yang lebih maju seperti trailing stop loss, Chandelier Exit dan lain-lain untuk mengawal risiko dengan lebih baik.
  5. Memperluas strategi ke lebih banyak kelas aset untuk mencari yang paling sesuai.

Kesimpulan

Kesimpulannya, strategi penembusan saluran Donchian memberikan isyarat yang jelas dan risiko yang boleh dikawal untuk perdagangan trend. Ia sangat sesuai untuk aset yang tidak menentu seperti mata wang kripto dengan potensi keuntungan yang besar. Terdapat juga kemungkinan untuk mengoptimumkan parameter lebih lanjut dan menggabungkan penunjuk lain, yang merupakan jalan untuk peningkatan masa depan. Dengan inovasi berterusan, strategi ini berpotensi menjadi strategi perdagangan algoritma yang penting untuk mata wang kripto.


/*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 lanjut