Sumber daya yang dimuat... Pemuatan...

Trend Following dengan Breakout dan Filter Frekuensi (Hanya Panjang)

Penulis:ChaoZhang, Tanggal: 2024-05-28 14:00:24
Tag:EMAAO

img

Gambaran umum

Strategi ini adalah strategi mengikuti tren berdasarkan penyaringan perputaran dan frekuensi, hanya mengambil posisi panjang. Ide utama dari strategi ini adalah menggunakan indikator EMA untuk menentukan arah tren saat ini, menghasilkan sinyal panjang ketika harga keluar dari harga tertinggi dalam kisaran tertentu, dan menggunakan filter frekuensi untuk mengontrol frekuensi perdagangan untuk menghindari membuka posisi terlalu sering. Strategi ini juga menetapkan titik stop loss untuk mengendalikan risiko dan menutup posisi ketika tren berakhir.

Prinsip Strategi

  1. Menghitung indikator EMA untuk menentukan arah tren saat ini.
  2. Saat harga penutupan keluar dari harga tertinggi dalam periode lookback terpendek atau terpanjang dan tren saat ini bullish, sinyal panjang dihasilkan.
  3. Masukkan filter frekuensi untuk mengontrol waktu interval minimum antara pembukaan posisi berturut-turut untuk menghindari frekuensi perdagangan yang berlebihan.
  4. Saat harga turun di bawah harga stop loss, tutup posisi untuk mengendalikan risiko.
  5. Tentukan sinyal akhir tren. Ketika harga penutupan jatuh di bawah EMA, tren dianggap telah berakhir. Jika posisi panjang dipegang pada saat ini, tutup posisi.

Keuntungan Strategi

  1. Mengikuti tren: Dengan menggunakan indikator EMA untuk menentukan arah tren dan berdagang sesuai dengan tren, indikator ini membantu meningkatkan hasil strategi.
  2. Konfirmasi Breakout: Menggunakan price breakout sebagai sinyal masuk memungkinkan untuk masuk tepat waktu di awal tren, menangkap potensi keuntungan yang lebih besar.
  3. Pengendalian frekuensi: Memperkenalkan filter frekuensi untuk mengontrol interval waktu antara pembukaan posisi berturut-turut menghindari perdagangan yang berlebihan dan mengurangi biaya dan risiko perdagangan.
  4. Perlindungan Stop Loss: Menetapkan titik stop loss untuk segera menghentikan kerugian ketika harga bergerak ke arah yang berlawanan dengan magnitudo tertentu secara efektif mengendalikan risiko penurunan.
  5. Penutupan posisi dinamis: Penutupan posisi secara dinamis berdasarkan sinyal akhir tren memungkinkan untuk mengunci keuntungan yang ada tepat waktu dan menghindari kerugian yang disebabkan oleh pembalikan tren.

Risiko Strategi

  1. Sensitivitas parameter: Kinerja strategi relatif sensitif terhadap pemilihan parameter, dan pengaturan parameter yang berbeda dapat menyebabkan perbedaan signifikan dalam kinerja strategi.
  2. Kegagalan penembusan: Penembusan harga tidak menjamin bahwa tren pasti akan berlanjut, dan mungkin ada kasus kegagalan penembusan, yang mengakibatkan kerugian berturut-turut untuk strategi.
  3. Pengakuan tren: Strategi bergantung pada indikator EMA untuk menilai tren, tetapi indikator EMA dapat mengalami lag atau penilaian yang salah, yang mempengaruhi keakuratan strategi.
  4. Perdagangan sering: Meskipun strategi memperkenalkan filter frekuensi, pembukaan dan penutupan posisi sering masih dapat terjadi ketika volatilitas pasar tinggi, meningkatkan biaya perdagangan.
  5. Risiko stop loss: Pengaturan titik stop loss mungkin tidak sepenuhnya menghindari penarikan maksimum dari strategi, dan kerugian besar masih dapat terjadi dalam kondisi pasar yang ekstrim.

Arah Optimasi Strategi

  1. Optimasi parameter: Optimalkan parameter kunci strategi, seperti panjang EMA, panjang periode lookback, persentase stop loss, dll., Untuk menemukan kombinasi parameter yang optimal dan meningkatkan stabilitas dan profitabilitas strategi.
  2. Penyaringan sinyal: Setelah sinyal pecah dihasilkan, indikator atau kondisi teknis lainnya dapat diperkenalkan untuk mengkonfirmasi sinyal untuk kedua kalinya, meningkatkan kualitas sinyal dan mengurangi penilaian yang salah dan sinyal palsu.
  3. Penghakiman tren: Cobalah menggunakan indikator penilaian tren lainnya seperti MACD, DMI, dll, atau gabungkan beberapa indikator untuk secara bersama-sama menilai tren dan meningkatkan keakuratan pengenalan tren.
  4. Stop loss dinamis: Sesuaikan titik stop loss secara dinamis sesuai dengan kondisi volatilitas pasar, seperti menggunakan indikator ATR untuk menghitung harga stop loss dinamis atau memperkenalkan strategi stop loss trailing untuk mengontrol risiko dengan lebih baik.
  5. Manajemen Posisi: Mengoptimalkan strategi manajemen posisi, secara dinamis menyesuaikan ukuran posisi sesuai dengan volatilitas pasar dan kondisi modal akun, mengendalikan paparan risiko dari satu transaksi, dan meningkatkan efisiensi pemanfaatan modal.

Ringkasan

Strategi ini menggunakan indikator EMA untuk menentukan arah tren, menggunakan price breakout sebagai sinyal masuk, memperkenalkan filter frekuensi untuk mengontrol frekuensi perdagangan, dan menetapkan titik stop loss untuk mengendalikan risiko. Keuntungan dari strategi ini terletak pada trend following, konfirmasi breakout, kontrol frekuensi, perlindungan stop loss, dan penutupan posisi dinamis, tetapi juga memiliki risiko potensial seperti sensitivitas parameter, kegagalan breakout, pengenalan tren, perdagangan sering, dan risiko stop loss. Untuk lebih mengoptimalkan strategi, kita dapat memulai dari aspek seperti optimasi parameter, penyaringan sinyal, penilaian tren, stop loss dinamis, dan manajemen posisi untuk meningkatkan stabilitas dan profitabilitas strategi.


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following with Breakout and Frequency Filter (Long Only)", overlay=true)

// 输入参数
emaLength = input.int(50, title="EMA长度")
lookbackPeriodMin = input.int(80, title="最短回溯期")
lookbackPeriodMax = input.int(120, title="最长回溯期")
stopLossPct = input.float(2, title="止损百分比") / 100  // 止损百分比
minHoldBars = input.int(10, title="最小持仓K线数量")  // 最小持仓K线数量

// 计算EMA
ema = ta.ema(close, emaLength)

// 计算最高价和最低价
highestHigh = ta.highest(high, lookbackPeriodMax)
lowestLow = ta.lowest(low, lookbackPeriodMax)

// 定义趋势方向
isBullish = close > ema

// 定义突破信号
breakoutCondition = (ta.crossover(close, highestHigh[lookbackPeriodMin]) or ta.crossover(close, highestHigh[lookbackPeriodMax])) and isBullish

// 计算止损点
stopLossLevelLong = close * (1 - stopLossPct)

// 绘制EMA
plot(ema, title="EMA", color=color.blue)

// 记录上次开仓时间
var float lastEntryTime = na

// 策略执行并标注信号
if (breakoutCondition and (na(lastEntryTime) or (time - lastEntryTime) > minHoldBars * timeframe.multiplier))
    strategy.entry("做多", strategy.long)
    label.new(bar_index, high, text="买入", style=label.style_label_up, color=color.green, textcolor=color.white)
    strategy.exit("止损", from_entry="做多", stop=stopLossLevelLong)
    lastEntryTime := time

// 定义趋势结束信号
exitCondition = close < ema

if (exitCondition and (strategy.position_size > 0) and (time - lastEntryTime) > minHoldBars * timeframe.multiplier)
    strategy.close("做多")
    label.new(bar_index, low, text="卖出", style=label.style_label_down, color=color.red, textcolor=color.white)

Berkaitan

Lebih banyak