Strategi ini menggunakan tiga garis EMA dengan periode yang berbeda (144 hari, 34 hari, dan 76 hari) untuk menangkap tren pasar jangka menengah hingga jangka panjang. Ini juga menggabungkan garis EMA harga tertinggi dan harga terendah 30 hari sebagai sinyal jangka pendek panjang dan pendek. Ketika harga penutupan melanggar sinyal panjang jangka pendek, ia membuka posisi panjang; ketika harga penutupan melanggar di bawah sinyal pendek jangka pendek, ia menutup posisi. Pendekatan ini memungkinkan manajemen posisi yang fleksibel sambil memahami tren pasar utama.
Strategi EMA Crossover with Short-Term Signals menangkap tren pasar melalui garis EMA multi-periode dan mencapai manajemen posisi yang fleksibel menggunakan sinyal harga jangka pendek. Ini adalah metode yang menggabungkan pelacakan tren dengan perdagangan swing. Namun, strategi ini juga memiliki masalah seperti lag, perdagangan sering, dan kurangnya kontrol risiko, yang membutuhkan optimalisasi lebih lanjut untuk meningkatkan ketahanan dan profitabilitasnya. Dengan memperkenalkan lebih banyak dimensi penilaian tren, menyesuaikan parameter sinyal secara dinamis, menggabungkan mekanisme stop-loss dan take-profit yang wajar, dan metode lainnya, strategi ini dapat dibuat lebih lengkap dan dapat diandalkan.
/*backtest start: 2023-05-17 00:00:00 end: 2024-05-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with Short-term Signals", overlay=true) // 定义EMA shortest = ta.ema(close, 144) short = ta.ema(close, 34) longer = ta.ema(close, 76) // 绘制EMA plot(shortest, color=color.new(color.yellow, 0)) plot(short, color=color.new(color.orange, 0)) plot(longer, color=color.new(color.red, 0)) // 定义短线多空信号的EMA stLong = ta.ema(high, 30) stShort = ta.ema(low, 30) stLongPlot = plot(stLong, '短线多', color.new(color.aqua, 0)) stShortPlot = plot(stShort, '短线空', color.new(color.green, 0)) // 绘制短线多空信号 clr = close > stLong ? color.green : color.aqua fill(stLongPlot, stShortPlot, color=clr, transp=90) // 交易信号 if (close > stLong) strategy.entry("Buy", strategy.long) if (close < stShort) strategy.close("Buy") // 显示买卖信号 plotshape(series=close > stLong, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=close < stShort, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")