Stratégie de renversement de la moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-22 10:07:19
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est d'utiliser le croisement des moyennes mobiles rapides et lentes pour juger des tendances du marché et prendre des positions lorsque les moyennes mobiles à court et à long terme s'inversent, de manière à obtenir l'effet de suivi des tendances.

La logique de la stratégie

  1. Résultats de l'évaluation de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée
  2. Lorsque le MA court traverse le MA long, il est déterminé comme un signal d'achat et une barre d'enregistrement depuis mabuy. Le MA long implique qu'une tendance haussière a commencé. Lorsque le MA court traverse en dessous du MA long, il est déterminé comme un signal de vente et une barre d'enregistrement depuis masell. Le MA long implique que la tendance haussière a pris fin.
  3. Comparer les valeurs barsince. Plus il y a de barsince depuis que la courte MA s'est croisée vers le bas, plus la tendance haussière a duré. Plus il y a de barsince depuis que la courte MA s'est croisée vers le haut, plus le signal d'inversion est fort.
  4. Lorsque le barsince du signal de vente est supérieur au barsince du signal d'achat, un signal d'achat est déclenché. Lorsque le barsince du signal d'achat est supérieur au barsince du signal de vente, un signal de vente est déclenché.
  5. Il s'agit essentiellement d'une double stratégie d'inversion de l'AM, utilisant des inversions croisées d'AM rapides et lents pour détecter les points d'inversion de tendance.

Les avantages

  1. Utilise deux MAs pour filtrer les faux signaux.
  2. Barres ajoutées puisque la comparaison évite de fausses ruptures et des renversements de prix rapprochés
  3. Facile à comprendre et à mettre en œuvre
  4. Paramètres d'AM personnalisables adaptés à différentes périodes et marchés

Les risques

  1. Les stratégies de double MA ont tendance à produire des signaux de trading plus fréquents
  2. Un mauvais réglage des paramètres MA peut manquer des tendances plus longues
  3. Le risque de défaillance de l'épargne-investissement est calculé en fonction de la situation de l'entreprise.
  4. Ne peut pas filtrer efficacement les bobines et les oscillations

Directions de renforcement

  1. Ajouter d'autres indicateurs pour éviter les sauts de marée sur les marchés variés
  2. Ajouter des mécanismes de stop loss
  3. Optimiser les combinaisons de paramètres MA
  4. Adaptation dynamique des paramètres de l'AM en fonction du cycle du marché

Résumé

La stratégie complète a une logique claire et facile à comprendre, utilisant des inversions MA rapides et lentes pour détecter les points d'inversion de tendance. En théorie, elle peut effectivement suivre les tendances.


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

//@version=3
strategy("Up Down", "Up Down", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.0, initial_capital = 1000, overlay = true)

buy = close > open and open > close[1]
sell = close < open and open < close[1]

longma = input(77,"Long MA Input")
shortma = input(7,"Short MA Input")
long = sma(close,longma)
short = sma(close, shortma)
mabuy = crossover(short,long) or buy and short > long
masell = crossunder(short,long) or sell and short > long

num_bars_buy = barssince(mabuy)
num_bars_sell = barssince(masell)
//plot(num_bars_buy, color = teal)
//plot(num_bars_sell, color = orange)

xbuy = crossover(num_bars_sell, num_bars_buy)
xsell = crossunder(num_bars_sell, num_bars_buy)
plotshape(xbuy,"Buy Up Arrow", shape.triangleup, location.belowbar, white, size = size.tiny)
plotshape(xsell,"Sell Down Arrow", shape.triangledown, location.abovebar, white, size = size.tiny)
plot(long,"Long MA", fuchsia, 2)

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(7, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

if testPeriod()
    strategy.entry("buy", true, when = xbuy, limit = close)
    strategy.close("buy", when = xsell)


Plus de