Stratégie de trading du système de moyenne mobile


Date de création: 2024-01-05 15:36:00 Dernière modification: 2024-01-05 15:36:00
Copier: 1 Nombre de clics: 683
1
Suivre
1617
Abonnés

Stratégie de trading du système de moyenne mobile

Aperçu

Le présent article traite d’une stratégie de trading basée sur une moyenne mobile simple. Cette stratégie utilise une moyenne mobile de longueur 17 pour comparer avec le prix de clôture, en faisant plus lorsque le prix de clôture traverse la moyenne mobile et en faisant moins lorsque le prix de clôture traverse.

Principe de stratégie

Calcul de la moyenne mobile

La stratégie utilise les paramètres suivants pour calculer la moyenne mobile:

  • MA source: moyenne par défaut de l’OHLC ((OHCL4))
  • Type de MA: moyenne mobile simple par défaut (SMA)
  • Durée du MA: 17 par défaut

En fonction de ces paramètres, la fonction getMAType () est appelée pour calculer le prix de clôture SMA de 17 cycles.

Signal de transaction généré

Le prix de clôture est ensuite comparé à la moyenne mobile:

  • Le prix de clôture > Moyenne mobile: signaux de position longue
  • Coût de clôture < Moyenne mobile: signal de réserve

Les signaux de plus sont générés lorsque le prix de clôture traverse la moyenne mobile par le bas et par le haut; les signaux de moins sont générés lorsque le prix de clôture traverse la moyenne mobile par le haut.

Exécution de la transaction

Pendant le cycle de retracement, les positions sont ouvertes en cas de signal de plus ou de moins.

Analyse des avantages

Le plus grand avantage de cette stratégie est que l’idée est très simple et claire. Il n’y a qu’un seul indicateur pour juger de la variation de la tendance en changeant de direction. La stratégie est facile à comprendre, facile à mettre en œuvre et convient aux débutants.

En outre, les moyennes mobiles sont des indicateurs de suivi de tendance, qui permettent de suivre efficacement les changements de tendance et d’éviter d’être perturbés par le bruit à court terme du marché.

Il est possible de s’adapter à différents cycles et variétés en ajustant les paramètres.

Analyse des risques

Tout d’abord, la stratégie est basée sur un seul indicateur, un seul critère de jugement, ce qui peut générer plus de faux signaux.

En outre, la stratégie est un système de suivi des tendances qui ne peut pas fonctionner correctement dans un marché de consolidation et de volatilité.

De plus, il n’y a pas de stop loss, ce qui entraîne un risque d’augmentation des pertes.

La solution est de combiner d’autres indicateurs, d’optimiser les combinaisons de paramètres et de réduire les signaux erronés.

Direction d’optimisation

Les aspects suivants peuvent être utilisés comme stratégies d’optimisation:

  1. Ajuster les paramètres de la moyenne mobile, optimiser le nombre de cycles. Par exemple, changer de 30 cycles ou de 50 cycles, etc.

  2. Essayez différents types de moyennes mobiles comme les EMA, les VIDYA, etc. Elles sont sensibles à des variations de prix différentes.

  3. Ajout d’autres indicateurs combinés. Par exemple, une combinaison avec le MACD, qui permet de juger de la force et de la faiblesse. Ou une combinaison avec le RSI, qui réduit les signaux erronés.

  4. Augmentation des mécanismes de stop-loss. Définition de stop-loss mobiles à pourcentage fixe ou ATR. Contrôle des pertes simples.

  5. Augmentation du mécanisme de freinage. Définition du pourcentage de profit cible. Maximisation des bénéfices.

Ces optimisations permettent de stabiliser les performances de la stratégie et d’éviter des retraits excessifs.

Résumer

Cet article analyse une stratégie de trading simple basée sur une moyenne mobile à 17 cycles. La source du signal de la stratégie est simple, facile à comprendre et à mettre en œuvre, et appartient au système de suivi de tendance typique. En analysant en profondeur la stratégie, en analysant ses avantages et ses risques, et en donnant une idée d’optimisation à plusieurs dimensions.

Code source de la stratégie
/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Simple 17 BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

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

testPeriod() => true

///////////// Moving Average /////////////
source = input(title="MA Source", defval=ohlc4)
maType = input(title="MA Type", defval="sma", options=["sma", "ema", "swma", "wma", "vwma", "rma"])
length = input(title="MA Length", defval=17)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    if maType == "vwma"
        res := vwma(sourceType, maLen)
    if maType == "rma"
        res := rma(sourceType, maLen)
    res
    
MA = getMAType(maType, source, length)

/////////////// Strategy ///////////////
long = close > MA
short = close < MA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("L", strategy.long, when=long_signal)
    strategy.entry("S", strategy.short, when=short_signal)

/////////////// Plotting /////////////// 
p1 = plot(MA, color = long ? color.lime : color.red, linewidth=2)
p2 = plot(close, linewidth=2)
fill(p1, p2, color=strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)