
Ringkasan
Strategi ini adalah strategi pelacakan tren berdasarkan breakout dan frequency filtering, hanya melakukan perdagangan multi head. Gagasan utama strategi ini adalah menggunakan indikator EMA untuk menentukan arah tren saat ini, menghasilkan sinyal multitasking ketika harga mencapai harga tertinggi dalam kisaran tertentu, sementara menggunakan filter frekuensi untuk mengontrol frekuensi perdagangan, menghindari terlalu sering membuka posisi.
Prinsip Strategi
- Perhitungan indikator EMA untuk menentukan arah tren saat ini. Ketika harga close out di atas EMA, maka tren saat ini dianggap berlawanan arah.
- Perhitungan harga tertinggi dalam kisaran tertentu, sebagai kondisi terobosan. Ketika harga close out menembus harga tertinggi dalam periode pengembalian terpendek atau periode pengembalian terpanjang, dan tren saat ini adalah multihead, menghasilkan sinyal melakukan banyak.
- Menggunakan filter frekuensi untuk mengontrol interval minimum untuk membuka posisi secara berturut-turut dan menghindari frekuensi transaksi yang terlalu tinggi.
- Setting Stop Loss Points (setel stop loss point) untuk mengontrol risiko ketika harga turun di bawah Stop Loss.
- Definisi sinyal akhir tren, ketika harga penutupan turun di bawah EMA, dianggap berakhirnya tren, pada saat itu jika memiliki lebih dari satu opsi, maka posisi kosong.
Keunggulan Strategis
- Pelacakan tren: Mengetahui arah tren melalui indikator EMA, dan berdagang sesuai tren, membantu meningkatkan keuntungan strategi.
- Pengakuan terobosan: Menggunakan terobosan harga sebagai sinyal masuk, dapat masuk tepat waktu di awal tren, menangkap lebih banyak ruang keuntungan.
- Kontrol frekuensi: memperkenalkan filter frekuensi, mengontrol interval waktu pembukaan posisi berturut-turut, menghindari terlalu sering berdagang, mengurangi biaya dan risiko perdagangan.
- Perlindungan Stop Loss: Menetapkan titik stop loss yang tepat waktu ketika harga berbalik dan mencapai tingkat tertentu, untuk mengontrol risiko penurunan secara efektif.
- Pelancaran dinamis: Pelancaran dinamis berdasarkan sinyal akhir tren, yang dapat mengunci keuntungan yang sudah ada dan menghindari kerugian akibat pembalikan tren.
Risiko Strategis
- Sensitivitas parameter: kinerja strategi lebih sensitif terhadap pilihan parameter, dan pengaturan parameter yang berbeda dapat menyebabkan perbedaan kinerja strategi yang lebih besar. Perlu dilakukan pengujian dan pengoptimalan parameter yang cukup.
- Penembusan gagal: Penembusan harga tidak menjamin bahwa tren akan terus berlanjut, kemungkinan terjadi kegagalan penembusan, yang menyebabkan strategi mengalami kerugian beruntun.
- Identifikasi tren: Strategi bergantung pada indikator EMA untuk menilai tren, tetapi indikator EMA dapat mengalami keterlambatan atau kesalahan penilaian, yang mempengaruhi akurasi strategi.
- Sering berdagang: Meskipun ada filter frekuensi yang diperkenalkan dalam strategi, sering membuka dan melonggarkan posisi dapat terjadi ketika pasar berfluktuasi besar, meningkatkan biaya transaksi.
- Risiko Stop Loss: Pengaturan titik stop loss mungkin tidak dapat sepenuhnya menghindari penarikan maksimum dari strategi, dan dalam situasi ekstrem masih mungkin terjadi kerugian besar.
Arah optimasi strategi
- Optimasi parameter: Optimasi parameter utama strategi seperti panjang EMA, panjang periode mundur, persentase stop loss, dan lain-lain untuk menemukan kombinasi parameter terbaik dan meningkatkan stabilitas dan keuntungan strategi.
- Sinyal penyaringan: Setelah terjadinya sinyal terobosan, indikator atau kondisi teknis lainnya dapat diperkenalkan untuk konfirmasi kedua terhadap sinyal, meningkatkan kualitas sinyal, mengurangi kesalahan penilaian dan sinyal palsu.
- Pengertian tren: Anda dapat mencoba menggunakan indikator pengertian tren lainnya seperti MACD, DMI, dll, atau menggabungkan beberapa indikator untuk menilai tren, meningkatkan akurasi identifikasi tren.
- Stop loss dinamis: Mengatur stop loss secara dinamis sesuai dengan fluktuasi pasar, misalnya dengan menggunakan indikator ATR untuk menghitung harga stop loss dinamis, atau memperkenalkan strategi stop loss tracking untuk mengendalikan risiko dengan lebih baik.
- Manajemen Posisi: Mengoptimalkan strategi manajemen posisi, menyesuaikan ukuran posisi secara dinamis sesuai dengan fluktuasi pasar dan kondisi dana akun, mengontrol risiko per transaksi, meningkatkan efisiensi penggunaan dana.
Meringkaskan
Strategi ini adalah strategi pelacakan tren berdasarkan breakout dan filter frekuensi, menilai arah tren melalui indikator EMA, menggunakan breakout harga sebagai sinyal masuk, dan memperkenalkan filter frekuensi untuk mengontrol frekuensi perdagangan, dan mengatur risiko pengendalian stop loss. Keunggulan strategi ini terletak pada pelacakan tren, konfirmasi breakout, kontrol frekuensi, perlindungan stop loss, dan posisi datar dinamis, tetapi ada juga risiko potensial seperti sensitivitas parameter, identifikasi tren kegagalan breakout, perdagangan sering, dan risiko stop loss.
Kode Sumber 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)