
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.
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.
Strategi ini mempunyai kelebihan utama:
Strategi ini mempunyai beberapa risiko:
Untuk risiko ini, ia boleh dielakkan dengan cara menyesuaikan parameter yang sesuai, menetapkan kedudukan hentian dan sebagainya.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
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.
/*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))