Strategi Renko untuk Purata Moving Jangka Panjang

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

img

Ringkasan

Strategi ini adalah strategi crossover purata bergerak berdasarkan carta lilin Renko. Ia menggunakan penunjuk TEMA untuk membina isyarat crossover dan menggabungkan purata bergerak jangka panjang untuk penapisan, bertujuan untuk mengenal pasti trend pada carta Renko dan menghasilkan isyarat beli dan jual.

Logika Strategi

Sumber isyarat utama strategi ini berasal dari salib emas dan salib kematian penunjuk TEMA jangka pendek dan penunjuk SMA.

Apabila TEMA jangka pendek melintasi SMA jangka pendek, pergi panjang; apabila TEMA jangka pendek melintasi di bawah SMA jangka pendek, tutup kedudukan.

Di samping itu, strategi juga menetapkan dua parameter pilihan avg_protection dan gain_protection untuk menyesuaikan logik masuk dan henti rugi:

  • Apabila avg_protection>0, hanya membeli apabila harga penutupan lebih rendah daripada harga pegangan purata semasa, yang boleh mengurangkan asas kos;

  • Apabila gain_protection>0, hanya jual apabila harga penutupan melebihi harga kemasukan dengan peratusan tertentu untuk mengunci keuntungan.

Akhirnya, strategi ini juga menggunakan penunjuk SMMA jangka panjang sebagai penapis trend. Hanya apabila harga penutupan di bawah SMMA isyarat panjang akan dicetuskan.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Berdasarkan carta candlestick Renko, ia dapat menapis bunyi bising dengan berkesan dan mengenal pasti trend;
  2. Menggunakan penunjuk TEMA untuk membina isyarat dengan kepekaan tinggi dan keupayaan pengesanan;
  3. Parameter yang boleh diselaraskan kaya untuk mengawal strategi kemasukan;
  4. Gabungan purata bergerak jangka panjang dan jangka pendek boleh menangkap peluang dalam trend.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Renko sendiri mempunyai garis masa yang tidak rata yang tidak boleh mengawal masa selang;
  2. Sensitiviti tinggi TEMA juga membawa kepada lebih banyak isyarat palsu;
  3. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan hilang.

Untuk mengurangkan risiko ini, penyesuaian parameter yang betul, menetapkan kerugian berhenti dan lain-lain boleh diterima pakai.

Arahan pengoptimuman

Arah pengoptimuman utama untuk strategi ini adalah:

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum;
  2. Tambah strategi stop loss seperti trailing stop loss, range stop loss, dan lain-lain untuk mengurangkan DD;
  3. Menggabungkan penunjuk lain untuk penapisan isyarat untuk mengurangkan isyarat palsu;
  4. Kecekapan parameter ujian untuk produk yang berbeza.

Kesimpulan

Secara umum, ini adalah strategi crossover purata bergerak yang asas, mudah tetapi sangat praktikal. Ia terutamanya bergantung pada kesan pengurangan bunyi bising bar Renko yang sangat baik dan kepekaan tinggi penunjuk TEMA untuk menghasilkan isyarat. Sementara itu, kerjasama antara purata bergerak jangka panjang dan jangka pendek juga meningkatkan keupayaan mengikuti trendnya. Dengan penyesuaian parameter dan pengoptimuman yang betul, strategi ini boleh menjadi pilihan yang berkesan 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 lanjut