Momentum Strategie für die Überschneidung von glatten gleitenden Durchschnittslinien und gleitenden Durchschnittslinien

Schriftsteller:ChaoZhang, Datum: 2023-11-27 17:35:09
Tags:

img

Übersicht

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.

Strategieprinzip

Momentum ALMA-Linie

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.

Schnelle und langsame EMA-Kreuzung

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.

Stochastischer RSI

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.

Analyse der Vorteile

Handel nach den Trends

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.

Einstellbare Parameter

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.

Stop-Loss- und Profit-Mechanismus

Die Strategie verfügt über eingebaute Stop-Loss- und Take-Profit-Einstellungen.

Risikoanalyse

Falsches Trendbeurteil

In komplexen Märkten können EMA- und ALMA-Linien falsche Signale geben.

Unzulässige Parameter Einstellungen

Wenn die Parameter nicht richtig eingestellt sind, können die EMA- und ALMA-Linien nicht richtig funktionieren, was das Handelsrisiko erhöht.

Optimierung der Strategie

  1. Testen und optimieren Sie die Parametereinstellungen von EMA und ALMA, um die optimalen Parameter auszuwählen.

  2. Einbeziehen Sie andere Indikatoren, um Signale zu filtern und Verluste durch falsche Signale wie MACD, KDJ usw. zu vermeiden.

  3. Optimieren Sie die Stop-Loss-Größe, um ein Gleichgewicht zwischen Risikokontrolle und Rentabilität zu finden.

  4. Verschiedene Sorten und Zyklusparameter testen, um die Strategie auf mehr Märkte anzuwenden.

Zusammenfassung

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)


Mehr