
Ini adalah strategi perdagangan terobosan momentum berdasarkan Saluran Donchian, yang menggabungkan dua kondisi utama: terobosan harga dan konfirmasi volume. Strategi ini menangkap tren naik pasar dengan mengamati apakah harga menembus kisaran harga yang telah ditentukan dan memerlukan dukungan volume. Strategi ini menggunakan parameter histeresis untuk meningkatkan stabilitas saluran dan menyediakan pemilihan kondisi keluar yang fleksibel.
Logika inti dari strategi ini mencakup bagian-bagian utama berikut:
Ini adalah strategi mengikuti tren yang dirancang dengan baik dan jelas secara logis. Dengan menggabungkan terobosan harga dan konfirmasi volume, strategi ini mempertahankan fleksibilitas sekaligus memastikan keandalan. Desain strategi yang parametrik membuatnya sangat mudah beradaptasi, tetapi juga mengharuskan investor untuk mengoptimalkan dan menyesuaikannya menurut kondisi pasar tertentu. Secara keseluruhan, ini adalah kerangka kerja strategis yang layak untuk dioptimalkan dan dipraktikkan lebih lanjut.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("Breakout Strategy", overlay=true, calc_on_every_tick=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1, fill_orders_on_standard_ohlc=true)
// Input Parameters
start_date = input(timestamp("2018-01-01 00:00"), "Start Date")
end_date = input(timestamp("2060-01-01 00:00"), "End Date")
in_time_range = true
length = input.int(27, title="Donchian Channel Length", minval=1, tooltip="Number of bars used to calculate the Donchian channel.")
lag = input.int(10, title="Donchian Channel Offset", minval=1, tooltip = "Offset to delay the Donchian channel, enhancing stability.")
volume_mult = input.float(1.4, title="Volume Multiplier", minval=0.1, step=0.1, tooltip="Multiplier for the average volume to filter breakout conditions.")
closing_condition = input.string("Mid", title="Trade Closing Band", options= ["Upper","Lower","Mid"], tooltip = "Donchian Channel Band to use for exiting trades: Upper, Lower, or Middle.") //
// Donchian Channel (Lagged for Stability)
upper_band = ta.highest(high[lag], length)
lower_band = ta.lowest(low[lag], length)
middle_band = (upper_band + lower_band) / 2
plot(upper_band, color=color.blue, title="Upper Band (Lagged)")
plot(middle_band, color=color.orange, title="Middle Band")
plot(lower_band, color=color.blue, title="Lower Band (Lagged)")
// Volume Filter
avg_volume = ta.sma(volume, length)
volume_condition = volume > avg_volume * volume_mult
// Long Breakout Condition
long_condition = close > upper_band and volume_condition
bool reverse_exit_condition = false
// Exit Condition (Close below the middle line)
if closing_condition == "Lower"
reverse_exit_condition := close < lower_band
else if closing_condition == "Upper"
reverse_exit_condition := close < upper_band
else
reverse_exit_condition := close < middle_band
// Long Strategy: Entry and Exit
if in_time_range and long_condition
strategy.entry("Breakout Long", strategy.long)
// Exit on Reverse Signal
if in_time_range and reverse_exit_condition
strategy.close("Breakout Long", comment="Reverse Exit")