Tempoh Moving Average Crossover Strategi Renko


Tarikh penciptaan: 2024-01-24 10:55:57 Akhirnya diubah suai: 2024-01-24 10:55:57
Salin: 0 Bilangan klik: 717
1
fokus pada
1617
Pengikut

Tempoh Moving Average Crossover Strategi Renko

Gambaran keseluruhan

Strategi ini adalah strategi crossover rata-rata bergerak berdasarkan carta Renko. Ia menggunakan indikator TEMA untuk membina isyarat crossover dan memfilternya dengan garis rata-rata jangka panjang untuk mengenal pasti trend pada carta Renko dan menghantar isyarat membeli dan menjual.

Prinsip Strategi

Sumber isyarat utama strategi ini adalah indeks TEMA jangka pendek dan indeks SMA. Logiknya ialah:

Apabila dalam jangka pendek TEMA melalui jangka pendek SMA, lakukan lebih banyak; apabila dalam jangka pendek TEMA melalui jangka pendek SMA, kosongkan.

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

  • Apabila avg_protection>0, anda hanya akan membeli apabila harga tutup lebih rendah daripada harga purata kedudukan semasa, yang dapat mengurangkan kos pegangan;

  • Apabila gain_protection > 0, hanya apabila harga tutup melebihi peratusan tertentu dari harga kemasukan, penangguhan akan dijual, dan keuntungan akan dikunci.

Akhirnya, strategi ini juga menggunakan indikator SMMA jangka panjang sebagai penapis trend. Isyarat lebih banyak dikeluarkan hanya apabila harga tutup lebih rendah daripada SMMA.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Menggunakan peta Renko, ia boleh menyaring kebisingan dan mengenal pasti trend.
  2. Menerusi indikator TEMA, isyarat dibina dengan sensitiviti tinggi dan mempunyai kesan yang baik;
  3. Ia mempunyai banyak parameter yang boleh disesuaikan untuk mengawal strategi masuk ke dalam permainan.
  4. Dalam kombinasi dengan garis purata jangka panjang dan jangka pendek, peluang dalam trend dapat ditangkap.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Renko sendiri tidak mempunyai garis masa yang seragam dan tidak dapat mengawal masa selang;
  2. TEMA juga lebih sensitif dan lebih mudah menyebabkan isyarat salah.
  3. Pengaturan parameter yang tidak betul boleh menyebabkan kebocoran.

Untuk risiko ini, ia boleh dielakkan dengan cara menyesuaikan parameter yang sesuai, menetapkan kedudukan hentian dan sebagainya.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum;
  2. Meningkatkan strategi penangguhan kerugian, seperti penangguhan bergerak, penangguhan selang, dan lain-lain, untuk mengurangkan DD;
  3. Menapis isyarat dalam kombinasi dengan petunjuk lain untuk mengurangkan isyarat palsu;
  4. Uji kesan parameter pelbagai jenis.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi persilangan garis purata bergerak yang sederhana tetapi sangat praktikal. Ia bergantung terutamanya pada kesan penghapusan bunyi yang sangat baik dari Renko K line dan kepekaan yang tinggi dalam penunjuk TEMA untuk menghasilkan isyarat.

Kod sumber strategi
/*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))