Ini adalah sistem trend berikut klasik. Ia menggunakan persilangan purata bergerak untuk menentukan arah trend dan memasuki apabila harga keluar dari Saluran Donchian. Parameter Saluran Donchian ditetapkan kepada 50 hari untuk menapis bunyi pasaran jangka pendek. purata bergerak adalah purata bergerak eksponensial 40 hari dan 120 hari, yang dapat menangkap dengan lebih baik trend jangka menengah hingga panjang. Stop loss ditetapkan pada 4x ATR di bawah harga untuk mengawal kerugian secara berkesan pada perdagangan individu.
Strategi ini terutamanya berdasarkan perkara berikut:
Purata bergerak eksponen 40 hari dan 120 hari digunakan untuk membina penunjuk penentuan trend. Apabila garis pantas melintasi di atas garis perlahan dari bawah, ia adalah isyarat salib emas, yang menunjukkan aliran naik. Apabila garis pantas melintasi di bawah garis perlahan dari atas, ia adalah isyarat salib kematian, yang menunjukkan aliran turun.
Parameter Saluran Donchian ditetapkan pada 50 hari untuk menapis bunyi bising pasaran. Pergi panjang hanya apabila harga pecah di atas jalur atas, dan pergi pendek hanya apabila harga pecah di bawah jalur bawah untuk mengelakkan terperangkap.
Stop loss ditetapkan pada 4x ATR di bawah harga. ATR dapat mengukur turun naik pasaran dan risiko dengan berkesan. Menetapkan stop loss pada kelipatannya dapat mengawal kerugian pada perdagangan individu.
Purata bergerak eksponensial lebih sesuai dengan trend harga semasa, sementara purata bergerak mudah terlalu lancar.
Tempoh saluran 50 hari berfungsi dengan baik dengan purata bergerak 40 hari dan 120 hari untuk menyaring penembusan palsu dengan berkesan.
Kelebihan strategi ini termasuk:
Gabungan purata bergerak dapat menentukan arah trend pasaran dengan berkesan. MA 40 hari menangkap trend jangka pendek manakala MA 120 hari menilai trend jangka panjang.
Saluran Donchian menapis bunyi bising dan mengelakkan mengejar puncak dan bawah.
Tetapan stop loss adalah munasabah untuk mengawal kerugian pada perdagangan individu dan mengelakkan ledakan akaun.
Purata bergerak eksponen lebih sesuai dengan kecenderungan perubahan harga, yang membolehkan tempoh penahan yang lebih lama sesuai dengan idea perdagangan trend.
Parameter purata bergerak mencapai keseimbangan antara kepekaan menangkap trend dan kestabilan penapis bunyi.
Risiko strategi ini termasuk:
Risiko tempoh memegang yang panjang: Sebagai strategi trend, kerugian besar boleh berlaku semasa julat sisi yang berpanjangan atau pembalikan trend.
Risiko pecah palsu: Mungkin ada beberapa peratusan pecah palsu apabila harga menyentuh berhampiran jalur saluran, menyebabkan perdagangan yang tidak perlu.
Parameter menetapkan risiko: Tetapan untuk purata bergerak dan saluran adalah subjektif. Pasaran yang berbeza memerlukan kombinasi yang disesuaikan, jika tidak kestabilan sistem terjejas.
Risiko stop loss terlalu ketat: Menetapkan stop loss terlalu ketat boleh mengakibatkan terlalu banyak stop out, yang memberi kesan kepada keuntungan.
Penyelesaian:
Strategi ini boleh dioptimumkan dalam aspek berikut:
Uji kombinasi purata bergerak yang berbeza untuk mencari parameter optimum. Pelbagai purata bergerak Hull yang mudah, eksponensial boleh diuji.
Mengoptimumkan tempoh saluran dan tetapan untuk membuat isyarat pecah lebih berkesan.
Mengoptimumkan strategi stop loss. Mengambil stop trailing semasa tempoh trend dan berhenti tetap selepas trend berakhir.
Tambah penunjuk pengesahan seperti MACD, KD untuk meningkatkan ketepatan isyarat.
Memperkenalkan strategi saiz kedudukan. Piramid semasa tempoh trend untuk mengoptimumkan keuntungan.
Pilih kombinasi parameter mengikut ciri produk yang berbeza untuk menjadikan sistem lebih kukuh.
Secara keseluruhan ini adalah sistem trend berikut yang tipikal dan mudah. Inti terletak pada menggunakan purata bergerak dan penembusan saluran. Strategi stop loss juga klasik dan praktikal. Strategi ini boleh berfungsi sebagai rangka kerja asas untuk pembangunan sistem kuant, dan juga boleh digunakan secara langsung untuk keuntungan yang agak stabil. Pengoptimuman lanjut melalui ujian dapat meningkatkan kestabilan dan keuntungan sistem. Ringkasnya, strategi ini mempunyai kemudahan penggunaan dan fleksibiliti, menjadikannya sesuai sebagai strategi perdagangan kuantitatif asas.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m 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/ // © Robrecht99 //@version=5 strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4) // Backtest Range // Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window") Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window") //Moving Averages // len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs") len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs") src1 = input(close, title="Source Fast MA") src2 = input(close, title="Source Slow MA") maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast") maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow") fast = ta.ema(src1, len1) slow = ta.ema(src2, len2) plot(fast, color=maFast, title="Fast EMA") plot(slow, color=maSlow, title="Slow EMA") // Donchian Channels // Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs") Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs") h1 = ta.highest(high[1], Length1) l1 = ta.lowest(low[1], Length2) fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs") upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper") lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower") u = plot(h1, "Upper", color=upperColor) l = plot(l1, "Lower", color=upperColor) fill(u, l, color=fillColor) strategy.initial_capital = 50000 //ATR and Position Size // length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs") risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs") multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs") atr = ta.atr(length) amount = (risk * strategy.initial_capital / (multiplier * atr)) // Buy and Sell Conditions // entrycondition1 = ta.crossover(fast, slow) entrycondition2 = fast > slow sellcondition1 = ta.crossunder(fast, slow) sellcondition2 = slow > fast // Buy and Sell Signals // if (close > h1 and entrycondition2) strategy.entry("long", strategy.long, qty=amount) stoploss = close - atr * 4 strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss) if (sellcondition1 and sellcondition2) strategy.close(id="long") if (close < l1 and sellcondition2) strategy.entry("short", strategy.short, qty=amount) stoploss = close + atr * 4 strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss) if (entrycondition1 and entrycondition2) strategy.close(id="short")