Keuntungan Moving Average Breakout Trend Following System

Penulis:ChaoZhang, Tanggal: 2023-11-15 11:00:25
Tag:

img

Gambaran umum

Ini adalah sistem trend-following klasik. Ini menggunakan crossover rata-rata bergerak untuk menentukan arah tren dan masuk saat harga keluar dari Saluran Donchian. Parameter Saluran Donchian diatur menjadi 50 hari untuk menyaring kebisingan pasar jangka pendek. Rata-rata bergerak adalah rata-rata bergerak eksponensial 40 hari dan 120 hari, yang dapat lebih baik menangkap tren jangka menengah hingga panjang. Stop loss ditetapkan pada 4x ATR di bawah harga untuk secara efektif mengendalikan kerugian pada perdagangan individu.

Logika Strategi

Strategi ini terutama didasarkan pada poin-poin berikut:

  1. Rata-rata bergerak eksponensial 40 hari dan 120 hari digunakan untuk membangun indikator penentuan tren. Ketika garis cepat melintasi di atas garis lambat dari bawah, itu adalah sinyal salib emas, yang menunjukkan tren naik. Ketika garis cepat melintasi di bawah garis lambat dari atas, itu adalah sinyal salib kematian, yang menunjukkan tren turun.

  2. Parameter Saluran Donchian diatur menjadi 50 hari untuk menyaring kebisingan pasar. Pergi panjang hanya ketika harga pecah di atas band atas, dan pergi pendek hanya ketika harga pecah di bawah band bawah untuk menghindari terjebak.

  3. Stop loss ditetapkan pada 4x ATR di bawah harga. ATR dapat secara efektif mengukur volatilitas pasar dan risiko. Mengatur stop loss pada kelipatan dari itu dapat mengontrol kerugian pada perdagangan individu.

  4. Rata-rata bergerak eksponensial lebih sesuai dengan tren harga saat ini, sementara rata-rata bergerak sederhana terlalu halus.

  5. Periode saluran 50 hari bekerja dengan baik dengan rata-rata bergerak 40 hari dan 120 hari untuk secara efektif menyaring pecah palsu.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Kombinasi rata-rata bergerak dapat secara efektif menentukan arah tren pasar. MA 40 hari menangkap tren jangka pendek sementara MA 120 hari menilai tren jangka panjang.

  2. Saluran Donchian menyaring kebisingan dan menghindari mengejar atas dan bawah.

  3. Pengaturan stop loss wajar untuk mengendalikan kerugian pada perdagangan individu dan menghindari ledakan akun.

  4. Rata-rata bergerak eksponensial lebih sesuai dengan tren perubahan harga, memungkinkan periode pemegang yang lebih lama sesuai dengan ide perdagangan tren.

  5. Parameter rata-rata bergerak mencapai keseimbangan antara sensitivitas penangkapan tren dan stabilitas filter kebisingan.

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Risiko periode kepemilikan yang panjang: Sebagai strategi tren, kerugian besar dapat terjadi selama rentang sisi yang berkepanjangan atau pembalikan tren.

  2. Risiko pecah palsu: Mungkin ada beberapa persentase pecah palsu ketika harga menyentuh dekat band saluran, menyebabkan perdagangan yang tidak perlu.

  3. Parameter pengaturan risiko: Pengaturan untuk rata-rata bergerak dan saluran bersifat subjektif. Pasar yang berbeda membutuhkan kombinasi yang disesuaikan, jika tidak stabilitas sistem terpengaruh.

  4. Risiko stop loss terlalu ketat: Mengatur stop loss terlalu ketat dapat mengakibatkan terlalu banyak stop out, yang berdampak pada profitabilitas.

Solusi:

  1. Tentukan periode penahanan dengan hati-hati untuk menghindari risiko periode penahanan yang panjang.
  2. Mengoptimalkan parameter untuk membuat sinyal breakout lebih stabil dan andal.
  3. Uji data dari pasar yang berbeda dan optimalkan kombinasi parameter.
  4. Lepaskan stop secara wajar untuk mencegah stop out yang terlalu sering.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji kombinasi rata-rata bergerak yang berbeda untuk menemukan parameter yang optimal.

  2. Mengoptimalkan periode saluran dan pengaturan untuk membuat sinyal breakout lebih efektif.

  3. Mengoptimalkan strategi stop loss. Mengadopsi trailing stop selama periode tren dan stop tetap setelah tren berakhir.

  4. Tambahkan indikator konfirmasi seperti MACD, KD untuk meningkatkan akurasi sinyal.

  5. Memperkenalkan strategi ukuran posisi. Piramida selama periode tren untuk mengoptimalkan keuntungan.

  6. Pilih kombinasi parameter sesuai dengan karakteristik produk yang berbeda untuk membuat sistem lebih kuat.

Kesimpulan

Secara keseluruhan ini adalah sistem trend berikut yang tipikal dan sederhana. Inti terletak pada penggunaan moving average dan channel breakout. Strategi stop loss juga klasik dan praktis. Strategi dapat berfungsi sebagai kerangka dasar untuk pengembangan sistem kuantum, dan juga dapat langsung digunakan untuk keuntungan yang relatif stabil. Optimasi lebih lanjut melalui pengujian dapat meningkatkan stabilitas dan profitabilitas sistem. Singkatnya, strategi ini memiliki kemudahan penggunaan dan fleksibilitas, menjadikannya cocok sebagai strategi perdagangan kuantitatif mendasar.


/*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")

Lebih banyak