Stratégie de négociation à double moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-10-16 15h50: 35
Les étiquettes:

img

Résumé

La stratégie de trading de renversement de moyenne mobile double génère des signaux de trading en calculant des moyennes mobiles simples de deux périodes différentes - à court terme et à long terme.

La logique de la stratégie

Cette stratégie définit deux moyennes mobiles simples avec des durées de période différentes à travers les paramètres d'entrée, avec la courte période MA appelée la ligne rapide et la longue période MA appelée la ligne lente. La ligne rapide réagit plus rapidement aux changements de prix et capte les tendances à court terme, tandis que la ligne lente réagit plus lentement aux changements de prix et filtre le bruit du marché à court terme, capturant la tendance majeure. Lorsque la ligne rapide traverse au-dessus de la ligne lente, elle indique que la tendance haussière se renforce et une position longue est prise. Lorsque la ligne rapide traverse en dessous de la ligne lente, elle indique que la tendance baissière se renforce et une position courte est prise.

Plus précisément, la stratégie calcule les deux MAs en utilisant la fonction sma ((), en affectant le résultat à xSMA (lente ligne) et à la ligne rapide. Les MAs sont calculés en fonction du prix de clôture. Lorsque le prix de clôture dépasse xSMA, une position longue est prise. Lorsque le prix de clôture dépasse xSMA, une position courte est prise. La stratégie fixe également une limite de plage de temps de négociation, de sorte que les signaux de négociation ne sont générés que dans la plage de temps spécifiée.

Les points de prise de profit et de stop-loss sont définis pour chaque transaction, et le profit est pris ou le stop-loss déclenché immédiatement lorsque le prix atteint le niveau de prise de profit ou de stop-loss.

Analyse des avantages

  • L'utilisation d'un système à double MA permet de suivre efficacement les tendances et d'éviter d'être induit en erreur par le bruit du marché à court terme
  • La combinaison de MAs rapides et lents peut améliorer la qualité des signaux de négociation
  • Le risque de prise de profit et de contrôle des points de stop-loss pour chaque transaction
  • La limitation de la plage de temps de négociation évite d' énormes fluctuations autour des événements majeurs
  • Le tracé des signaux de trading sur les barres crée une aide visuelle et améliore l'intuition

Analyse des risques

  • Les systèmes à double MA ont tendance à générer davantage de faux signaux, ce qui augmente la fréquence et les coûts des transactions.
  • Les paramètres de l'AM doivent être fixés de manière raisonnable, sinon l'effet de lissage en souffre ou trop d'opportunités manquées
  • Les systèmes d'AM ont des retards et peuvent manquer les points tournants de la tendance
  • L'établissement doit être en mesure d'évaluer les risques liés à l'utilisation de l'équipement.
  • La limitation de la fourchette de temps de négociation peut faire perdre des opportunités dans d' autres périodes

Le risque peut être réduit en ajustant les paramètres MA, en optimisant la stratégie take profit/stop loss, en supprimant les limitations de temps ou en fixant des périodes de négociation plus raisonnables.

Directions d'optimisation

  • Testez différentes combinaisons de périodes d'AM pour trouver les paramètres optimaux
  • Prendre en compte le paramètre stop-loss/profit dynamique, par exemple basé sur ATR
  • Incorporer d'autres indicateurs tels que MACD, KD, etc. comme signaux de filtre
  • Optimiser la plage de temps de négociation pour saisir plus d'opportunités
  • Combinez avec la stratégie d'évasion, à la recherche de signaux d'évasion autour des MAs
  • Construire des mécanismes de sortie dynamiques, s'arrêtant activement lorsque le prix entre dans la fourchette

Résumé

La stratégie de trading de renversement de moyenne mobile double est généralement une stratégie simple et pratique de suivi des tendances. Elle tire pleinement parti de l'effet de lissage des MA pour identifier la direction de la tendance et utilise des MA rapides / lents pour générer des signaux de trading. La stratégie est facile à mettre en œuvre avec une logique claire, adaptée aux débutants. Cependant, elle peut générer des faux signaux excessifs et des problèmes de retard. Des améliorations peuvent être apportées par l'optimisation des paramètres, l'ajout d'indicateurs auxiliaires, etc. pour rendre la stratégie plus robuste. Si elle est utilisée correctement, cette stratégie peut générer des profits stables et vaut la peine d'être testée et optimisée de manière complète.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Plus de