Strategi Renko untuk Rata-rata Gerak jangka panjang

Penulis:ChaoZhang, Tanggal: 2024-01-24 10:55:57
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator TEMA untuk membangun sinyal crossover dan menggabungkan rata-rata bergerak jangka panjang untuk penyaringan, bertujuan untuk mengidentifikasi tren pada grafik Renko dan menghasilkan sinyal beli dan jual.

Logika Strategi

Sumber sinyal utama dari strategi ini berasal dari salib emas dan salib kematian dari indikator TEMA jangka pendek dan indikator SMA.

Ketika TEMA jangka pendek melintasi SMA jangka pendek, pergi panjang; ketika TEMA jangka pendek melintasi SMA jangka pendek, tutup posisi.

Selain itu, strategi juga menetapkan dua parameter opsional avg_protection dan gain_protection untuk menyesuaikan masuk dan stop loss logika:

  • Bila avg_protection>0, hanya membeli ketika harga penutupan lebih rendah dari harga rata-rata kepemilikan saat ini, yang dapat mengurangi basis biaya;

  • Ketika gain_protection>0, hanya menjual ketika harga penutupan melebihi harga masuk dengan persentase tertentu untuk mengunci keuntungan.

Akhirnya, strategi ini juga menggunakan indikator SMMA jangka panjang sebagai filter tren. Hanya ketika harga penutupan berada di bawah SMMA sinyal panjang akan dipicu.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Berdasarkan grafik candlestick Renko, dapat secara efektif menyaring kebisingan dan mengidentifikasi tren;
  2. Menggunakan indikator TEMA untuk membangun sinyal dengan sensitivitas tinggi dan kemampuan pelacakan;
  3. Parameter yang dapat disesuaikan kaya untuk mengontrol strategi masuk;
  4. Kombinasi dari rata-rata bergerak jangka panjang dan jangka pendek dapat menangkap peluang dalam tren.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Renko sendiri memiliki garis waktu yang tidak rata yang tidak dapat mengontrol waktu interval;
  2. Sensitivitas tinggi TEMA juga menyebabkan lebih banyak sinyal palsu;
  3. Pengaturan parameter yang tidak benar dapat menyebabkan perdagangan yang hilang.

Untuk mengurangi risiko ini, penyesuaian parameter yang tepat, pengaturan stop loss dll dapat diadopsi.

Arahan Optimasi

Arah utama optimasi untuk strategi ini adalah:

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal;
  2. Tambahkan strategi stop loss seperti trailing stop loss, range stop loss, dll untuk mengurangi DD;
  3. Menggabungkan indikator lain untuk penyaringan sinyal untuk mengurangi sinyal palsu;
  4. Efektivitas parameter uji di berbagai produk.

Kesimpulan

Secara umum, ini adalah strategi crossover rata-rata bergerak yang sederhana, tetapi sangat praktis. Ini terutama bergantung pada efek pengurangan kebisingan yang sangat baik dari batang Renko dan kepekaan tinggi dari indikator TEMA untuk menghasilkan sinyal. Sementara itu, kolaborasi antara rata-rata bergerak jangka panjang dan jangka pendek juga meningkatkan kemampuan mengikuti tren. Dengan penyesuaian parameter dan optimasi yang tepat, strategi ini dapat menjadi pilihan yang efektif untuk perdagangan kuantitatif.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TEMA Cross", overlay = true)

tema(src, len) =>
    3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len)

smma(src, len) =>
    sa = 0.0
    sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len
    sa

temaLength = input(5)
smaLength = input(3)
smmaLength = input(30)
tema1 = tema(close, temaLength)
sma1 = sma(tema1, smaLength)
smma1 = smma(close,smmaLength)


plot(tema1, color = green, title = "TEMA")
plot(sma1, color = orange, title = "SMA")
plot(smma1, color = red, title = "SMMA")
minGainPercent = input(2)
gainMultiplier = minGainPercent * 0.01 + 1

avg_protection = input(1)
gain_protection = input(1)

longCondition = crossover(tema1, sma1) and tema1 < smma1
shortCondition = crossunder(tema1, sma1)

strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Lebih banyak