
Gagasan inti dari strategi ini adalah untuk melakukan perdagangan berdasarkan terobosan harga di saluran Dongxian, yang termasuk dalam jenis strategi kuantitatif untuk mengikuti tren. Strategi ini dapat secara otomatis mengidentifikasi saluran harga, membuka posisi tinggi ketika harga melintasi saluran, dan posisi rendah ketika harga kembali ke dekat atau titik berhenti di bawah saluran. Strategi ini dirancang untuk menangkap tren harga garis tengah dan panjang, yang berlaku untuk perdagangan derivatif keuangan seperti indeks saham.
Strategi ini didasarkan pada indikator saluran Dongxian, saluran Dongxian adalah area saluran yang digambar melalui harga tertinggi dan terendah dalam periode tertentu. Metode penghitungannya adalah:
Uptrend = harga tertinggi dalam hampir n siklus Jalur bawah = harga terendah dalam hampir n siklus
Ketika harga menembus tren naik dianggap memasuki tren multihead, ketika harga jatuh dari tren turun dianggap memasuki tren kosong. Strategi ini hanya mempertimbangkan situasi menembus tren naik.
Logika transaksi adalah sebagai berikut:
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Solusi yang sesuai:
Strategi ini juga dapat dioptimalkan dengan:
Strategi ini memiliki ide yang jelas, mudah dipahami dan diterapkan, menggunakan indikator yang sudah mapan untuk mengidentifikasi arah tren secara otomatis. Selain itu, konfigurasi yang lebih fleksibel, dapat disesuaikan sesuai dengan kebutuhan yang sebenarnya. Dengan stop loss dan optimasi parameter, efek yang lebih baik dapat dicapai.
/*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])