Стратегия перекрестного использования индикатора импульса - это торговый подход, основанный на сочетании сигналов экспоненциальной скользящей средней (EMA) и индекса относительной силы (RSI).
В основе этой стратегии лежит система перекрестного использования быстрых и медленных линий EMA.ema1
, ema2
иema3
Среди них,ema1
представляет собой краткосрочную тенденцию,ema2
представляет собой среднесрочную тенденцию, иema3
представляет собой долгосрочную тенденцию. Когда краткосрочная тенденция пересекает среднесрочную тенденцию, генерируется сигнал покупки. Когда краткосрочная тенденция падает ниже среднесрочной тенденции, генерируется сигнал продажи.
Для фильтрации ложных сигналов стратегия также определяет два дополнительных условия:bodybar1 > bodybar2
иclose > entrybar
(для сигнала покупки) илиclose < entrybar
Это гарантирует, что последние две свечи соответствуют направлению сигнала, и цена проходит через точку входа, чтобы избежать избыточного входа.
Кроме того, стратегия включает в себя индикатор RSI для оценки условий перекупа и перепродажи. Перекупленная область RSI используется для определения чрезмерных сигналов покупки, в то время как перепроданная область используется для определения чрезмерных сигналов продажи. Это помогает избежать неправильных сигналов на перегретых и переохлажденных рынках.
Преимущества этой стратегии включают:
Риски этой стратегии включают:
Стратегия может быть оптимизирована в следующих аспектах:
Стратегия пересечения индикатора импульса объединяет сильные стороны EMA и RSI и формирует торговые сигналы на основе пересечения индикаторов. Стратегия проста и практична, подходит для новичков, а также может быть расширена и оптимизирована в соответствии с реальными потребностями для улучшения эффективности стратегии. При строгом управлении рисками стратегия обещает стабильные избыточные доходы.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('EMA Crossover Strategy', shorttitle='EMA Crossover', overlay=true) // Define input for position size as a percentage of equity position_size_pct = input(1, title='Position Size (%)') / 100 //Input EMA len1 = input.int(25, minval=1, title='EMA 1') src1 = input(close, title='Source') ema1 = ta.ema(src1, len1) len2 = input.int(100, minval=1, title='EMA 2') src2 = input(close, title='Source') ema2 = ta.ema(src2, len2) len3 = input.int(200, minval=1, title='EMA 3') src3 = input(close, title='Source') ema3 = ta.ema(src3, len3) //End of format //Format RSI lenrsi = input(14, title='RSI length') outrsi = ta.rsi(close,lenrsi) //plot(outrsi, title='RSI', color=color.new(color.blue, 0), linewidth=1) //hline(70, 'Overbought', color=color.red) //hline(30, 'Oversold', color=color.green) //End of format bodybar1 = math.abs(close - open) bodybar2 = math.abs(close[1] - open[1]) // Plot the EMAs plot(ema1, color=color.new(color.blue, 0), title='EMA 1') plot(ema2, color=color.new(color.red, 0), title='EMA 2') //plot(ema3, color=color.new(#ffffff, 0), title='EMA 3') // EMA Crossover conditions emaCrossoverUp = ta.crossover(ema1, ema2) emaCrossoverDown = ta.crossunder(ema1, ema2) var entrybar = close // Initialize entrybar with the current close // Calculate crossovers outside of the if statements emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny) plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny) // Define trading logic with custom position size and RSI conditions if emaCrossoverUp or emaCrossoverUpOccured strategy.entry('Buy', strategy.long) entrybar := close // Update entrybar when entering a new buy position entrybar if emaCrossoverDown or emaCrossoverDownOccured strategy.entry('Sell', strategy.short) entrybar := close // Update entrybar when entering a new sell position entrybar