Stratégie de négociation croisée de moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-06 16h38 et 22h
Les étiquettes:

img

Résumé

Cette stratégie est basée sur le principe de croisement des moyennes mobiles pour le commerce. Elle utilise deux moyennes mobiles, générant des signaux d'achat lorsque la moyenne mobile à court terme traverse au-dessus de la moyenne mobile à long terme depuis le bas. Les signaux de vente sont générés lorsque le prix dépasse une autre moyenne mobile. Cette stratégie convient aux marchés tendance, capable de filtrer efficacement certains métiers bruyants et de capturer la tendance principale.

La logique de la stratégie

Cette stratégie utilise des périodes de moyennes mobiles à court et à long terme personnalisables par l'utilisateur, des périodes de moyennes mobiles de sortie et des méthodes de calcul de moyennes mobiles.

Lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme située en dessous, un signal d'achat est généré, ce qui indique que la tendance à court terme est passée à la tendance haussière et que nous pouvons acheter.

Lorsque le prix de clôture dépasse la moyenne mobile de sortie, un signal de vente est généré. Cela indique un renversement de tendance, nous devrions donc sortir de la position.

Par conséquent, les signaux de négociation de la stratégie proviennent du croisement des moyennes mobiles à court et à long terme et de la relation entre le prix de clôture et la moyenne mobile de sortie.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Simple et facile à mettre en œuvre.

  2. Les paramètres personnalisables s'adaptent aux différentes conditions du marché.

  3. Les moyennes mobiles filtrent le bruit et capturent la tendance principale.

  4. Peut incorporer d'autres indicateurs techniques comme la tendance, le support/résistance pour optimiser davantage.

  5. Ratio risque-rendement contrôlable, disposant d'un mécanisme de stop loss.

Analyse des risques

Les risques sont les suivants:

  1. Prédisposé à des signaux erronés sur les marchés de consolidation qui ne présentent pas de tendance.

  2. Des paramètres mal réglés peuvent entraîner des tendances manquantes ou trop de transactions invalides.

  3. Un mauvais placement de stop loss pourrait augmenter les pertes.

  4. Une évasion ratée peut entraîner des pertes.

  5. Les paramètres doivent être ajustés en temps opportun pour s'adapter aux changements du marché.

Les solutions comprennent l'optimisation des paramètres, l'incorporation d'autres filtres, l'ajustement des arrêts, l'attente de la confirmation de la tendance avant le trading, etc.

Directions d'optimisation

Cette stratégie peut être améliorée par:

  1. Développer des mécanismes de détermination des tendances et ne négocier qu'après confirmation des tendances.

  2. Ajouter des filtres comme le volume ou la volatilité aux signaux filtrés.

  3. Optimisation dynamique des périodes moyennes mobiles.

  4. Optimisation du mécanisme de stop loss pour utiliser un stop de trailing.

  5. Incorporer des indicateurs de soutien/résistance et d'autres indicateurs pour confirmer davantage les signaux.

  6. Ajustement des paramètres en fonction des différents produits et des délais.

Conclusion

Dans l'ensemble, cette stratégie de croisement moyen mobile est un système de suivi de tendance simple et pratique. Elle peut être ajustée aux conditions du marché en ajustant les paramètres et en capturant la direction de la tendance principale sur les marchés en tendance. Mais des risques tels que l'identification erronée de la tendance doivent être notés et une optimisation constante est nécessaire pour s'adapter aux marchés en évolution. En général, cette stratégie a une bonne viabilité.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()


Plus de