Ide inti dari strategi ini adalah untuk membuat keputusan perdagangan berdasarkan price breakout dari Donchian Channels. Ini termasuk dalam tren berikut jenis strategi kuantitatif. Ini dapat secara otomatis mengidentifikasi saluran harga. Ketika harga menembus rel atas saluran, posisi panjang akan dibuka. Ketika harga jatuh kembali di dekat rel bawah saluran atau titik stop loss, posisi akan ditutup. Strategi ini bertujuan untuk menangkap tren harga jangka menengah hingga panjang dan cocok untuk perdagangan algoritmik derivatif keuangan seperti futures indeks.
Strategi ini didasarkan pada indikator Saluran Donchian. Saluran Donchian adalah saluran yang ditarik oleh harga tertinggi dan terendah selama periode tertentu. Metode perhitungannya adalah:
Upper Rail = Harga tertinggi selama n periode terakhir Lower Rail = Harga terendah selama n periode terakhir
Ketika harga menembus rel atas, dianggap bahwa tren panjang telah dimulai. Ketika harga menembus rel bawah, dianggap bahwa tren pendek telah dimulai. Strategi ini hanya mempertimbangkan kasus ketika rel atas rusak.
Logika perdagangan khusus adalah:
Keuntungan dari strategi ini meliputi:
Ada juga beberapa risiko:
Solusi:
Strategi ini dapat dioptimalkan lebih lanjut di bidang berikut:
Ide keseluruhan strategi ini jelas dan mudah dipahami dan diimplementasikan. Ini memanfaatkan saluran Donchian yang matang untuk secara otomatis mengidentifikasi arah tren. Konfigurasi juga sangat fleksibel untuk memenuhi kebutuhan yang berbeda. Dengan stop loss dan optimasi parameter yang tepat, hasil yang baik dapat dicapai. Kesimpulannya, strategi ini memiliki kurva belajar yang rendah namun efisiensi yang wajar. Ini cocok sebagai strategi perdagangan kuantitatif pemula.
/*backtest start: 2022-12-07 00:00:00 end: 2023-12-07 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/ // © Giovanni_Trombetta // Strategy to capture price channel breakouts //@version=4 strategy("ChannelsBreakout", max_bars_back=50, overlay=true) instrument = input(1, title = "Select 1: Stock/Forex, 2: Future") money = input(10000, title = "Money for each trade") backtest_start = input(2000, "Insert first year to backtest") period = input(50, title = "Period in bars of Donchian Channel") monetary_stoploss = input(1000, title = "Monetary Stop Loss") quantity = if instrument != 1 1 else int(money / close) upBarrier = highest(high,period) downBarrier = lowest(low,period) up = highest(high,period / 4) down = lowest(low,period / 4) plot(upBarrier, color=color.green, linewidth=2) plot(downBarrier, color=color.red, linewidth=2) plot(up, color=color.lime, linewidth=1) plot(down, color=color.orange, linewidth=2) longCondition = crossover(close, upBarrier[1]) and year >= backtest_start if (longCondition) strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0) closeCondition = crossunder(close, down[1]) or down < down[1] if (closeCondition) strategy.close("Long", comment = "Trailing") stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size strategy.exit("StopLoss", from_entry = "Long", stop = stop_level) plot(stop_level, color=color.yellow, linewidth=2) // l = label.new(bar_index, na, // text="PineScript Code", color= color.lime, textcolor = color.white, // style=label.style_labelup, yloc=yloc.belowbar, size=size.normal) // label.delete(l[1])