Idea utama strategi ini adalah untuk membuat keputusan perdagangan berdasarkan penembusan harga Saluran Donchian. Ia tergolong dalam trend berikut jenis strategi kuantitatif. Ia boleh mengenal pasti saluran harga secara automatik. Apabila harga menembusi rel atas saluran, kedudukan panjang akan dibuka. Apabila harga jatuh kembali berhampiran rel bawah saluran atau titik stop loss, kedudukan akan ditutup. Strategi ini bertujuan untuk menangkap trend harga jangka menengah hingga panjang dan sesuai untuk perdagangan algoritma derivatif kewangan seperti niaga hadapan indeks.
Strategi ini berdasarkan kepada penunjuk Saluran Donchian. Saluran Donchian adalah saluran yang diambil oleh harga tertinggi dan terendah dalam tempoh tertentu. Kaedah penghitungannya adalah:
Upper Rail = Harga tertinggi sepanjang n tempoh terakhir Lower Rail = Harga terendah dalam n tempoh terakhir
Apabila harga memecahkan rel atas, ia dianggap bahawa trend panjang telah bermula. Apabila harga memecahkan rel bawah, ia dianggap bahawa trend pendek telah bermula. Strategi ini hanya mempertimbangkan kes apabila rel atas terputus.
Logik perdagangan khusus adalah:
Kelebihan strategi ini termasuk:
Terdapat juga beberapa risiko:
Penyelesaian:
Strategi ini boleh dioptimumkan lagi dalam bidang berikut:
Idea keseluruhan strategi ini jelas dan mudah difahami dan dilaksanakan. Ia menggunakan Saluran Donchian yang matang untuk mengenal pasti arah trend secara automatik. Konfigurasi juga sangat fleksibel untuk memenuhi keperluan yang berbeza. Dengan kerugian berhenti yang betul dan pengoptimuman parameter, hasil yang baik dapat dicapai. Kesimpulannya, strategi ini mempunyai kurva pembelajaran yang rendah namun kecekapan yang munasabah. Ia sesuai sebagai strategi perdagangan kuantitatif permulaan.
/*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])