Stratégie de moyenne mobile lissée et de croisement de moyennes mobiles Momentum


Date de création: 2023-11-27 17:35:09 Dernière modification: 2023-11-27 17:35:09
Copier: 0 Nombre de clics: 673
1
Suivre
1617
Abonnés

Stratégie de moyenne mobile lissée et de croisement de moyennes mobiles Momentum

Aperçu

La stratégie utilise une moyenne mobile dynamique lisse (ALMA) et une moyenne mobile indicielle lisse (EMA) avec deux paramètres différents pour générer un signal de négociation. La stratégie est également combinée avec une moyenne mobile lisse indicielle aléatoire (RSI stochastique) pour éviter les achats et les ventes excessifs.

Principe de stratégie

Ligne ALMA de puissance

Les stratégies utilisent ALMA comme indicateur principal pour déterminer les tendances des prix. ALMA a la fonction de lisser les données de prix et peut filtrer les fluctuations aléatoires des prix.

Les lignes de l’EMA se croisent rapidement

La stratégie utilise deux lignes EMA de différentes longueurs. Lorsque la ligne EMA rapide traverse la ligne EMA lente vers le haut, elle génère un signal d’achat. Lorsque la ligne EMA rapide traverse la ligne EMA lente vers le bas, elle génère un signal de vente.

Stochastic RSI

Le rôle de l’indicateur RSI stochastique est d’éviter d’émettre des signaux de négociation dans les zones de survente. Il combine les avantages des deux indicateurs RSI et stochastique pour mieux juger les zones de sommet et de basse vallée.

Analyse des forces stratégiques

La tendance est à l’opposé.

La stratégie exploite pleinement les avantages de l’intersection des EMA pour déterminer la direction de la tendance des prix, en collaboration avec l’indicateur ALMA pour localiser les principales opportunités d’excédent et d’excédent, pour réaliser des transactions en cours.

Paramètres réglables et adaptatifs

Les cycles EMA, les paramètres ALMA, etc. offrent un espace d’ajustement, permettant à l’utilisateur d’optimiser les paramètres en fonction de ses besoins, afin de mieux adapter la stratégie à différents environnements de marché.

Il y a une suspension de dommages.

La stratégie a un paramètre d’arrêt de perte intégré. L’utilisation d’un stop-loss flottant réduit la probabilité que le stop-loss soit poursuivi. Le paramètre de prise de profit permet de verrouiller les bénéfices et d’éviter de les gaspiller.

Analyse des risques

Une mauvaise évaluation des tendances

Dans des situations complexes, les lignes EMA et ALMA peuvent émettre des signaux erronés. Dans ce cas, il faut compter sur le stop-loss pour contrôler les pertes.

Paramètre incorrect

Si les paramètres sont mal configurés, les lignes EMA et ALMA ne peuvent pas fonctionner correctement, ce qui augmente le risque de transaction. Il faut tester et optimiser pour choisir la meilleure combinaison de paramètres.

Orientation de l’optimisation de la stratégie

  1. Tester l’optimisation des paramètres de l’EMA et de l’ALMA, en sélectionnant le paramètre le plus optimal.

  2. Il peut être combiné avec d’autres indicateurs pour filtrer les signaux et éviter les pertes de signaux erronés, tels que MACD, KDJ, etc.

  3. Optimiser la marge de stop loss et trouver un équilibre entre la maîtrise des risques et les gains.

  4. Test des variétés différentes et des paramètres cycliques pour adapter la stratégie à un plus grand nombre de marchés

Résumer

Cette stratégie est une stratégie de suivi de tendance simple et pratique. Elle utilise les EMA pour déterminer la direction de la tendance, les ALMA pour positionner les points de mise et le RSI stochastique pour éviter le risque de survente, tout en définissant des arrêts de perte et des arrêts pour contrôler les risques.

Code source de la stratégie
/*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)