Эта стратегия использует перекрестное соединение Momentum Smooth Moving Average Line (ALMA) и двух экспоненциальных скользящих средних линий (EMA) с различными параметрами для генерации торговых сигналов.
Стратегия использует ALMA в качестве основного индикатора для оценки ценовой тенденции. ALMA имеет функцию сглаживания ценовых данных и может отфильтровывать случайные колебания цен.
Стратегия использует две линии EMA с разной длиной. Когда быстрая линия EMA пересекает линию EMA сверх медленной линии, генерируется сигнал покупки. Когда быстрая линия EMA пересекает линию EMA ниже медленной линии EMA, генерируется сигнал продажи.
Роль стохастического индикатора RSI заключается в том, чтобы избежать выпуска торговых сигналов в перекупленных и перепроданных зонах. Он сочетает в себе преимущества как RSI, так и стохастических индикаторов и может лучше определять пиковые и понижающие зоны. Когда индикатор Stochastic RSI перекуплен или перепродан, стратегия отменяет существующие длинные или короткие ордера.
Стратегия в полной мере использует кроссовер EMA для определения направления ценовой тенденции в сочетании с индикатором ALMA для определения основных длинных и коротких возможностей для реализации трендовой торговли.
Периоды параметров EMA и ALMA обеспечивают регулируемое пространство. Пользователи могут оптимизировать параметры в соответствии со своими потребностями, чтобы стратегия лучше адаптировалась к различным рыночным условиям.
Использование плавающего стоп-лосса может уменьшить вероятность преследования стоп-лосса; настройки получения прибыли могут блокировать прибыль и избегать выплескивания прибыли.
На сложных рынках линии EMA и ALMA могут выдавать неверные сигналы.
Если параметры установлены неправильно, линии EMA и ALMA не могут работать правильно, что увеличит риски торговли.
Испытать и оптимизировать параметры EMA и ALMA для выбора оптимальных параметров.
Включите другие индикаторы для фильтрации сигналов и избегайте потерь, вызванных неправильными сигналами, такими как MACD, KDJ и т. Д.
Оптимизировать величину стоп-лосса, чтобы найти баланс между контролем риска и рентабельностью.
Испытать различные сорта и параметры цикла для применения стратегии на большем количестве рынков.
В целом, это простая и практичная стратегия отслеживания тренда. Она использует кроссовер EMA для определения направления тренда, индикатор ALMA для определения дополнительных точек, стохастический RSI для предотвращения рисков перекупки и перепродажи, при этом устанавливая стоп-лосс и прибыль для контроля рисков. Благодаря корректировке параметров и оптимизации индикатора эта стратегия может достичь хороших результатов. Она проста в понимании и использовании, а также имеет определенную адаптивность.
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 ////Arranged by @ClassicScott //Strategy Created by @CheatCode1 strategy('ALMA/EMA Strategy', shorttitle='ALMA/EMA Strategy', overlay=true ) ////Source Selection & ALMA Variables //Dominant Momentum ALMA dsource = input.source(close, title='Source', group='Dominant ALMA') dperiod = input.int(title='Period', defval=130, group='Dominant ALMA') doffset = input.float(title='Offset', step=0.025, defval=0.775, group='Dominant ALMA') dsigma = input.float(title='Sigma', step=0.5, defval=4.5, group='Dominant ALMA') dalma = ta.alma(dsource, dperiod, doffset, dsigma) dalma_up_color = input.color(#66bb6a, 'Going Up!', group='Dominant ALMA', inline = '1') dalma_down_color = input.color(#ef5350, 'Going Down :(', group='Dominant ALMA', inline = '1') dcolor = close[1] > dalma ? dalma_up_color : dalma_down_color ////ALMA Plots plot(dalma, color=dcolor, style=plot.style_stepline, linewidth=2, title='Dominant Momentum MA') //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 cheatcode = input.bool(true, '-----------CHEATC0DE1------------', group = 'Strategy Inputs', confirm = true) //Variable Declerations/Plot Assingments inp1 = input.int(49, 'Slow Ema Length', 1, 100, group = 'Strategy Inputs', confirm = true) inp2 = input.int(9, 'Fast Ema Length', 1, 200, group = 'Strategy Inputs', confirm = true) inp3 = int(200) sma1 = ta.sma(close, inp3) ema1 = ta.ema(close, inp1) ema2 = ta.ema(close, inp2) eplot1 = plot(ema1, 'Slow Ema', color.aqua, 1, plot.style_linebr) eplot2 = plot(ema2, 'Fast Ema', color.yellow, 1, plot.style_linebr) splot1 = plot(sma1, 'Long MA', close[1] < sma1 ? color.red:color.green, 1, plot.style_line, display = display.none) cross1 = ta.crossover(ema1, ema2) cross2 = ta.crossunder(ema1, ema2) plotchar(cross1, '', '↑', location.belowbar, close[1] > dalma and dalma > sma1 ? na:color.green, size = size.normal, editable = false) plotchar(cross2, '', '↓', location.abovebar, close[1] < dalma and dalma < sma1 ? na:color.red, size = size.normal, editable = false) bgcolor(cross1 and close[1] > dalma ? color.new(color.green, 80):cross2 and close[1] < dalma ? color.new(color.red, 80):na) valueL = ta.valuewhen(cross1 and close[1] > dalma, close, 0) valueS = ta.valuewhen(cross2 and close[1] < dalma, close, 0) //Entries if cross1 and close[2] > dalma[2] and close[1] > dalma[1] strategy.entry('Long', strategy.long) if cross2 and close[2] < dalma[2] and close[1] < dalma[1] strategy.entry('Short', strategy.short) //StochRsi smoothK = input.int(3, "K", minval=1) smoothD = input.int(15, "D", minval=1) lengthRSI = input.int(14, "RSI Length", minval=1) lengthStoch = input.int(8, "Stochastic Length", minval=1) src = input(close, title="RSI Source") rsi1 = ta.rsi(src, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = ta.sma(k, smoothD) //Cancellations if k > 75 strategy.cancel('Long') if k < 25 strategy.cancel('Short') //Closures if ta.crossunder(k, d) and k > 92 strategy.close('Long') if ta.crossover(k,d) and k < 8 strategy.close('Short') //Exit Percents takeP = input.float(3, title='Take Profit', group = 'Take Profit and Stop Loss') / 100 stopL = input.float(5.49, title = 'Stop Loss', group = 'Take Profit and Stop Loss')/100 // Pre Directionality Stop_L = strategy.position_avg_price * (1 - stopL) Stop_S = strategy.position_avg_price * (1 + stopL) Take_S= strategy.position_avg_price * (1 - takeP) Take_L = strategy.position_avg_price * (1 + takeP) //Post Excecution if strategy.position_size > 0 strategy.exit("Flat", limit=Take_L, stop = Stop_L) if strategy.position_size < 0 strategy.exit("Flat", limit=Take_S, stop = Stop_S)