Stratégie de double poussée basée sur SMA

Auteur:ChaoZhang est là., Date: le 22 janvier 2023
Les étiquettes:

img

Résumé

Cette stratégie construit une stratégie simple de double poussée basée sur l'indicateur SMA. Elle va long lorsque le prix dépasse la SMA la plus élevée de 20 périodes et court lorsque le prix dépasse la SMA la plus basse de 20 périodes. Les sorties de stop loss sont également définies.

La logique de la stratégie

Cette stratégie utilise la SMA de 20 périodes du prix le plus élevé et du prix le plus bas pour déterminer la direction du trading. Lorsque le prix dépasse le plus haut SMA, il est considéré comme une tendance haussière, donc long. Lorsque le prix dépasse le plus bas SMA, il est considéré comme une tendance baissière, donc court.

Plus précisément, la stratégie calcule d'abord la SMA à 20 périodes des prix les plus élevés et les plus bas, et trace les lignes d'indicateur.

Entrée longue: prix de clôture dépasse la plus haute SMA
Sortie longue: prix de clôture dépasse 0,99 * SMA la plus élevée

Entrée courte: prix de clôture dépasse la SMA la plus basse
Sortie courte: prix de clôture dépasse 1,01 * SMA inférieure

Ainsi, une tendance suivant la stratégie de double poussée est construite.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L'utilisation de la SMA pour déterminer la direction de la tendance est simple et pratique
  2. La plus haute SMA et la plus basse SMA agissent comme lignes de support/résistance
  3. Une conception raisonnable de l'arrêt des pertes pour maximiser la protection contre les pertes énormes
  4. Bonne adaptabilité, utilisable sur différents produits et délais

Analyse des risques

Cette stratégie comporte également certains risques:

  1. La SMA a un effet de retard, peut manquer les points tournants de la tendance
  2. Aucune protection contre les événements soudains du marché
  3. Impact sur les coûts de négociation non considéré

Ces risques peuvent être contrôlés et réduits par des moyens tels que la combinaison d'autres indicateurs, le réglage du stop loss, le réglage des paramètres, etc.

Directions d'amélioration

Cette stratégie peut également être améliorée dans les domaines suivants:

  1. Combinez d'autres indicateurs comme MACD, KDJ pour déterminer la tendance
  2. Ajouter une protection contre les événements soudains tels que la suspension, la limitation des prix, etc.
  3. Optimiser les périodes SMA, trouver la meilleure combinaison de paramètres
  4. Trouver les meilleurs paramètres pour différents produits et délais
  5. Évaluer l'impact des coûts de négociation, définir un stop loss optimal et réaliser des bénéfices

Conclusion

La logique générale de cette stratégie est claire et facile à mettre en œuvre. En utilisant SMA pour déterminer la direction de la tendance, et en établissant des règles d'entrée / sortie raisonnables, de bons résultats peuvent être obtenus. Il y a place à une optimisation supplémentaire, et en combinant avec d'autres techniques, il peut devenir une stratégie prometteuse qui vaut le suivi à long terme.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 10m
basePeriod: 1m
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/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()

Plus de