Diese Strategie verwendet die Überschneidung der Momentum Smooth Moving Average Line (ALMA) und zweier Exponential Moving Average Lines (EMA) mit unterschiedlichen Parameter-Einstellungen, um Handelssignale zu generieren.
Die Strategie verwendet ALMA als Hauptindikator, um den Preistrend zu beurteilen. ALMA hat die Funktion, Preisdaten zu glätten und zufällige Preisschwankungen auszufiltern. Durch Anpassung der Periode, des Offset-Wertes und der Sigma-Parameter von ALMA kann es empfindlicher oder stabiler gemacht werden. Wenn die Preise steigen, zeigt ALMA grün, und wenn die Preise fallen, zeigt ALMA rot.
Die Strategie verwendet zwei EMA-Linien mit unterschiedlichen Längen. Wenn die schnelle EMA-Linie über die langsame EMA-Linie kreuzt, wird ein Kaufsignal generiert. Wenn die schnelle EMA-Linie unter die langsame EMA kreuzt, wird ein Verkaufssignal generiert. Der EMA-Crossover hat eine gute Trendbeurteilung. Die Perioden der schnellen und langsamen EMAs können durch Parameter angepasst werden, um sich an verschiedene Handelsvarianten und Zyklen anzupassen.
Die Rolle des Stochastischen RSI-Indikators besteht darin, Handelssignale in überkauften und überverkauften Bereichen zu vermeiden. Er kombiniert die Vorteile sowohl des RSI als auch der Stochastischen Indikatoren und kann Spitzen- und Tiefbereiche besser bestimmen. Wenn der Stochastische RSI-Indikator überkauft oder überverkauft ist, wird die Strategie bestehende Long- oder Short-Orders stornieren.
Die Strategie nutzt den EMA-Crossover zur Bestimmung der Kursentwicklungsrichtung und kombiniert ihn mit dem ALMA-Indikator, um wichtige lange und kurze Chancen für den Trendhandel zu ermitteln.
Die Perioden der EMA- und ALMA-Parameter bieten einen anpassbaren Raum. Die Benutzer können die Parameter entsprechend ihren Bedürfnissen optimieren, um die Strategie besser an verschiedene Marktumgebungen anzupassen.
Die Strategie verfügt über eingebaute Stop-Loss- und Take-Profit-Einstellungen.
In komplexen Märkten können EMA- und ALMA-Linien falsche Signale geben.
Wenn die Parameter nicht richtig eingestellt sind, können die EMA- und ALMA-Linien nicht richtig funktionieren, was das Handelsrisiko erhöht.
Testen und optimieren Sie die Parametereinstellungen von EMA und ALMA, um die optimalen Parameter auszuwählen.
Einbeziehen Sie andere Indikatoren, um Signale zu filtern und Verluste durch falsche Signale wie MACD, KDJ usw. zu vermeiden.
Optimieren Sie die Stop-Loss-Größe, um ein Gleichgewicht zwischen Risikokontrolle und Rentabilität zu finden.
Verschiedene Sorten und Zyklusparameter testen, um die Strategie auf mehr Märkte anzuwenden.
Insgesamt ist dies eine einfache und praktische Trendverfolgungsstrategie. Sie verwendet EMA-Crossover, um die Trendrichtung zu bestimmen, ALMA-Indikator, um Add-on-Punkte zu lokalisieren, Stochastic RSI, um Risiken von Überkauf und Überverkauf zu vermeiden, während Sie Stop-Loss und Take-Profit setzen, um Risiken zu kontrollieren. Durch Parameteranpassung und Indikatoroptimierung kann diese Strategie gute Ergebnisse erzielen. Sie ist einfach zu verstehen und zu verwenden und hat auch eine gewisse Anpassungsfähigkeit.
/*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)