Turtle Trading Strategy adalah strategi trend following yang melacak momentum breakout. Strategi ini dikembangkan oleh trader terkenal Richard Dennis pada tahun 1980an untuk membuktikan bahwa trader dapat dibesarkan oleh aturan daripada lahir.
Strategi trading penyu menggunakan dua parameter N dan N/2 untuk membangun saluran. Secara khusus, ia menghitung harga tertinggi dan terendah selama N hari dan N/2 hari terakhir. Ketika harga melebihi saluran N hari, posisi panjang ditetapkan. Ketika harga turun di bawah saluran N/2-hari, posisi ditutup. Demikian pula, ketika harga melanggar saluran N hari ke arah menurun, posisi pendek ditetapkan, dan ditutup ketika harga naik di atas saluran N/2-hari. Tujuannya adalah untuk mengikuti tren harga sambil mengendalikan risiko.
Dalam kode, N sesuai denganenter_slow
dan N/2 sesuai denganenter_fast
Harga tertinggi (slowL
danfastL
) dan harga terendah (slowS
danfastS
Posisi panjang dibuka ketika harga melebihi saluran 55 hari (enterL2
) dan ditutup ketika harga jatuh di bawah saluran 20 hari (exitL1
Posisi pendek dibuka ketika harga menembus saluran 55 hari ke bawah (enterS2
) dan ditutup ketika harga naik di atas saluran 20 hari (exitS1
).
Keuntungan terbesar dari strategi perdagangan penyu adalah pengendalian risiko. Dengan menetapkan posisi pada harga yang pecah dan berhenti dengan cepat pada pullbacks, secara efektif mengendalikan kerugian pada perdagangan individu. Penggunaan ukuran posisi pecahan tetap lebih mengurangi risiko.
Keuntungan lain adalah pemilihan parameter yang sederhana. Seluruh strategi hanya memiliki 4 parameter yang mudah dipahami dan disetel. Parameter itu sendiri juga cukup stabil, tanpa perlu sering dioptimalkan.
Risiko terbesar dari Strategi Perdagangan Penyu adalah ketidakmampuan untuk melacak tren jangka panjang. Ini dapat kehilangan peluang masuk ketika tren mulai terbentuk. Juga, dalam lingkungan osilasi harga yang bergolak, strategi akan memicu masuk dan keluar yang sering, meningkatkan biaya transaksi dan risiko tergelincir.
Selain itu, pengaturan parameter tetap dapat bekerja sangat berbeda di antara produk dan rezim pasar, yang membutuhkan penyesuaian manual berdasarkan pengalaman.
Strategi Perdagangan Penyu dapat ditingkatkan dengan beberapa cara:
Tambahkan kemampuan adaptasi ke parameter N dan N/2 berdasarkan volatilitas pasar dan frekuensi sinyal untuk membuat sistem lebih kuat di seluruh skenario.
Masukkan aturan deteksi tren sebelum masuk untuk menghindari masuk ke arah yang salah di pasar yang bergolak.
Mengadopsi pendekatan multi-frame waktu untuk mengkonfirmasi tren pada periode yang lebih tinggi dan melakukan perdagangan pada periode yang lebih rendah.
Mengoptimalkan aturan stop loss dengan trailing stop atau stop berbasis waktu untuk mengurangi drawdown.
Turtle Trading Strategy secara efektif melacak tren dengan sistem breakout yang sederhana. Kontrol risiko adalah kekuatan terbesarnya, berkat stop cepat dan ukuran posisi pecahan tetap. Pada saat yang sama, kita melihat banyak dimensi di mana strategi dapat diperluas dan dioptimalkan agar sesuai dengan lebih banyak instrumen dan kondisi pasar. Secara keseluruhan, ini menyediakan cara yang dikendalikan risiko untuk menangkap tren harga yang merupakan referensi penting untuk perdagangan kuantitatif.
/*backtest start: 2022-12-24 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //oringinally coded by tmr0, modified by timchep //original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100) ////////////////////////////////////////////////////////////////////// // Component Code Start testStartYear = input(2011, "Backtest Start Year") testStartMonth = input(12, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=false) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop ////////////////////////////////////////////////////////////////////// shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true) enter_fast = input(20, minval=1) exit_fast = input(10, minval=1) enter_slow = input(55, minval=1) exit_slow = input(20, minval=1) fastL = highest(enter_fast) fastLC = lowest(exit_fast) fastS = lowest(enter_fast) fastSC = highest(exit_fast) slowL = highest(enter_slow) slowLC = lowest(exit_slow) slowS = lowest(enter_slow) slowSC = highest(exit_slow) enterL1 = high > fastL[1] exitL1 = low <= fastLC[1] enterS1 = low < fastS[1] exitS1 = high >= fastSC[1] enterL2 = high > slowL[1] exitL2 = low <= slowLC[1] enterS2 = low < slowS[1] exitS2 = high >= slowSC[1] if testPeriod() strategy.entry("fast L", strategy.long, when = enterL1) if not enterL1 strategy.entry("slow L", strategy.long, when = enterL2) strategy.close("fast L", when = exitL1) strategy.close("slow L", when = exitL2) if shortingEnabled and testPeriod() strategy.entry("fast S", strategy.short, when = enterS1) if not enterS2 strategy.entry("slow S", strategy.short, when = enterS2) strategy.close("fast S", when = exitS1) strategy.close("slow S", when = exitS2)