Stratégie de croisement des moyennes mobiles longues et courtes


Date de création: 2023-10-24 11:02:52 Dernière modification: 2023-10-24 11:02:52
Copier: 0 Nombre de clics: 607
1
Suivre
1617
Abonnés

Stratégie de croisement des moyennes mobiles longues et courtes

Aperçu

Cette stratégie utilise principalement la fourche dorée de la moyenne mobile et la ligne K pour la prise de décision à plusieurs niveaux. Faites plus lorsque la moyenne mobile à court terme est plus élevée que la moyenne mobile à long terme et faites moins lorsque la moyenne mobile à court terme est plus basse que la moyenne mobile à long terme.

Principe de stratégie

  1. Calculer les moyennes mobiles EMA1 et EMA2 pour deux périodes différentes.

  2. Déterminez si EMA1 est en EMA2 et si oui, faites-en plus.

  3. Détermine si l’EMA1 porte l’EMA2 et, si oui, déposez-le.

  4. Pour déterminer si le cours de clôture a dépassé l’EMA1, un signal d’entrée est utilisé.

  5. Mécanisme de sortie de stop-loss: définir un point de stop-loss fixe ou un stop-loss via le canal Donchian.

Les fonctions suivantes sont principalement utilisées:

  • ema ((): calcul de la moyenne mobile de l’indice
  • crossover: déterminer si l’EMA1 est surmonté par l’EMA2
  • crossunder: détermine si EMA1 est en dessous de EMA2
  • rising () /falling (): déterminer si le prix est en hausse ou en baisse
  • valuewhen(): renvoie une valeur différente selon la condition

Analyse des avantages

  1. La stratégie est simple, facile à comprendre et à mettre en œuvre.

  2. Le suivi des tendances est effectué en utilisant les caractéristiques de suivi des tendances du système linéaire moyen.

  3. La rupture combinée à la clôture de la ligne K peut servir d’occasion d’entrée pour éviter une fausse rupture.

  4. Une combinaison linéaire flexible de différents paramètres, adaptée à différents cycles.

  5. Un mécanisme de contrôle des pertes peut être mis en place.

Analyse des risques

  1. Lorsque le marché est en situation de choc, la ligne moyenne génère des signaux fréquents de forcage doré et de forcage mort, qui peuvent être facilement interrompus.

  2. Les points de stop-loss fixes peuvent être trop rigides et ne peuvent pas être ajustés en fonction des variations du marché.

  3. Le système de ligne moyenne est plus retardé et peut facilement manquer un signal de retour au moment d’un revirement de tendance.

  4. Il est nécessaire de déterminer avec précision la pente de l’équilibre pour filtrer les fausses percées.

  5. Les paramètres doivent être choisis avec soin, car des combinaisons de paramètres trop fréquentes ou en retard peuvent nuire à l’efficacité de la stratégie.

Direction d’optimisation

  1. Le croisement des axes zéro de l’indicateur MACD peut être utilisé pour déterminer la tendance et filtrer les oscillations.

  2. Le canal Donchian peut être ajouté pour définir des lignes de stop-loss dynamiques et améliorer les problèmes de stop-loss fixes.

  3. Les indicateurs de la ceinture de Brin peuvent être ajoutés pour évaluer les tendances fortes et faibles et éviter les transactions inefficaces dans les marchés en crise.

  4. Optimiser les combinaisons de paramètres de la moyenne et tester l’efficacité réelle des différentes stratégies de cycle.

  5. L’ajout d’une moyenne mobile fixe pourrait être envisagé pour éviter le retard.

Résumer

L’idée générale de cette stratégie est simple et claire. Elle utilise les stratégies de trading standard standard de la ligne d’équilibre et de la ligne K pour filtrer efficacement les faux signaux. L’espace d’optimisation réside dans l’utilisation d’autres indicateurs pour déterminer la force de la tendance, la mise en place d’un arrêt dynamique, etc.

Code source de la stratégie
/*backtest
start: 2023-09-01 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='Mega crypto bot strategy', shorttitle='megacryptobot_Strategy', overlay=true, pyramiding=0, initial_capital=10000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
period = input('720')
ch1 = request.security(syminfo.tickerid, period, open)
ch2 = request.security(syminfo.tickerid, period, close)
longCondition = crossover(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////