Strategi Perdagangan Penyu Berdasarkan Saluran Donchian

Penulis:ChaoZhang, Tanggal: 2024-02-26 14:35:02
Tag:

img

Gambaran umum

Tang Anqi Turtle Trading Strategy adalah versi yang sangat disederhanakan dari Strategi Trading Turtle asli. Strategi ini sangat berbeda dari strategi Turtle asli. Strategi ini menggunakan dua Saluran Donchian, saluran cepat dan saluran lambat. Periode saluran ditetapkan oleh pengguna, dengan nilai default 20 bar untuk saluran cepat dan 50 bar untuk saluran lambat. Strategi ini menggunakan band atas dan bawah saluran lambat untuk masuk perdagangan dan band tengah saluran cepat untuk mengatur stop loss.

Logika Strategi

Logika inti dari strategi ini adalah:

  1. Hitung Saluran Donchian yang cepat: Band atas adalah tertinggi tertinggi dari bar cepat sebelumnya, band bawah adalah terendah terendah, dan band tengah adalah rata-rata dari band atas dan bawah.

  2. Hitung Saluran Donchian lambat: Band atas adalah tertinggi atas bar lambat yang lalu, band bawah adalah terendah terendah.

  3. Ketika tidak ada posisi, sinyal panjang dipicu ketika harga menyentuh band atas saluran lambat, dan sinyal pendek dipicu ketika harga menyentuh band bawah saluran lambat.

  4. Setelah membuka posisi, band tengah saluran cepat digunakan sebagai stop loss.

  5. Tutup posisi ketika ada sinyal yang berlawanan dengan sinyal pembukaan selama periode ditahan.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Donchian Channel dan stop loss bergerak mudah dipahami, cocok untuk pemula.

  2. Pengguna dapat menyesuaikan parameter berdasarkan produk perdagangan dan kerangka waktu untuk beradaptasi dengan lingkungan pasar yang berbeda.

  3. Hanya mengandalkan price breakout dari saluran band, menghindari sinyal palsu dari indikator umum.

  4. Pengelolaan stop loss otomatis. Stop loss bergerak berdasarkan jalur tengah saluran cepat dapat membatasi kerugian pada perdagangan tunggal.

Analisis Risiko

Risiko yang dihadapi strategi ini meliputi:

  1. Lebih banyak stop loss ketika tren tidak jelas. Ini mempengaruhi profitabilitas strategi.

  2. Jika tren berbalik, keuntungan yang mengambang di arah tren sebelumnya akan berubah menjadi kerugian.

  3. Pengaturan parameter yang tidak benar menyebabkan terlalu agresif atau terlalu konservatif. Nilai yang tepat perlu ditemukan melalui pengujian backtesting berulang.

  4. Stabilitas server penting untuk menghindari pengecualian yang menyebabkan kegagalan dalam perdagangan otomatis.

Untuk mengurangi risiko di atas, parameter dapat dioptimalkan, ukuran posisi dapat dibatasi dengan tepat, dan modul manajemen risiko dapat ditambahkan.

Arahan Optimasi

Strategi dapat ditingkatkan dalam aspek berikut:

  1. Tambahkan filter untuk sinyal masuk untuk menghindari menangkap sinyal pembalikan tren. Misalnya, gunakan indikator tren untuk menentukan arah tren.

  2. Mengoptimalkan parameter seperti periode saluran dan ukuran posisi untuk lebih sesuai dengan instrumen perdagangan yang berbeda.

  3. Tambahkan modul manajemen risiko seperti batas maksimum penarikan dan batas kerugian harian untuk mencegah kerugian yang berlebihan dalam peristiwa ekstrem.

  4. Meningkatkan strategi stop loss. Misalnya, mengadopsi stop loss trailing untuk membuat stop lebih beradaptasi dengan tren pasar.

Kesimpulan

Singkatnya, Tang Anqi Turtle Trading Strategy adalah sistem yang sederhana mengikuti tren. Keuntungannya terletak pada kemudahan pengertian dan otomatisasi. Tetapi juga membawa risiko tertentu, dan pengoptimalan lebih lanjut pada parameter dan manajemen risiko diperlukan untuk membuatnya lebih praktis. Dengan langkah-langkah seperti penyesuaian parameter, menambahkan filter, dan modul kontrol risiko, strategi dapat mencapai hasil yang lebih baik dalam perdagangan langsung.


/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
sizelong  = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
fast      = input(20, minval=1)
slow      = input(50, minval=1)
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(false, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
fromyear  = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear    = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth   = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday   = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today     = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

Lebih banyak