Stratégie de rupture de la moyenne mobile croisée

Auteur:ChaoZhang est là., Date: 2024-02-06 15:02:33 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise trois moyennes mobiles de différentes périodes pour identifier la direction de la tendance du marché. Elle entre dans une position lorsque les trois moyennes mobiles se déplacent dans la même direction. En même temps, combinée au prix le plus élevé ou le plus bas des N bougies les plus récentes, elle définit un stop loss et un profit.

La logique de la stratégie

  1. Calculer les trois moyennes mobiles à long terme, à moyen terme et à court terme. Les utilisateurs peuvent définir les périodes par eux-mêmes.

  2. Comparez les directions des trois moyennes mobiles. Lorsque la moyenne mobile à court terme dépasse celle à moyen terme et que la moyenne à moyen terme dépasse celle à long terme, elle est jugée comme un marché haussier. Lorsque la moyenne à court terme dépasse celle à moyen terme et que la moyenne à moyen terme dépasse celle à long terme, elle est jugée comme un marché baissier.

  3. Dans un marché haussier, si le prix dépasse le prix le plus élevé des N bougies les plus récentes, passez long; dans un marché baissier, si le prix dépasse le prix le plus bas des N bougies les plus récentes, passez court.

  4. Après avoir entré dans une position, définissez un stop-loss et un profit.

Analyse des avantages

Cette stratégie combine l'indicateur de moyenne mobile et les graphiques de chandeliers, ce qui permet de mieux déterminer la tendance du marché.

Cette stratégie utilise trois moyennes mobiles pour juger de la tendance du marché de manière plus fiable. Pendant ce temps, entrer dans une position lors de la rupture du prix le plus élevé ou le plus bas des bougies N les plus récentes est une stratégie de rupture commune.

Analyse des risques

Les principaux risques potentiels de cette stratégie sont les suivants:

  1. La probabilité d'un jugement erroné sur la direction des trois moyennes mobiles. Si les moyennes mobiles à moyen et court terme provoquent de mauvais signaux, des pertes inutiles peuvent être causées.

  2. Une mauvaise sélection du moment de l'entrée dans la position, dans laquelle il est facile d'être pris au piège.

  3. L'extension de la distance d'arrêt-perte permet de laisser plus de marge de manœuvre pour le prix.

Directions d'optimisation

Les orientations pour optimiser cette stratégie sont les suivantes:

  1. Ajouter d'autres indicateurs de filtration pour assurer la fiabilité des signaux de moyenne mobile.

  2. Optimiser les périodes de moyenne mobile pour mieux les adapter aux différents produits.

  3. Ajoutez des algorithmes d'apprentissage automatique pour obtenir une optimisation automatique des paramètres.

  4. Testez l'efficacité de cette stratégie sur les données haute fréquence.

Résumé

Cette stratégie est relativement simple et universelle. L'idée est claire avec une forte faisabilité. En tant qu'exemple d'un système de croisement de moyenne mobile, c'est un choix courant pour les débutants. Grâce à une optimisation appropriée, le système peut être appliqué à plus de produits et de délais pour obtenir des rendements stables.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hobbiecode

//@version=5
strategy("Cross Breakout - Hobbiecode", shorttitle="Cross - HOBBIE", overlay=true)

// User-defined input for moving averages
long_period = input(20, title="Long Period")
medium_period =  input(10, title = "Medium Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])
candles_back = input(10, title = "Candles Back")
bars_valid = input(3, title = "Bars to Exit")

// Calculating moving averages
long_ma = 0.0
medium_ma = 0.0
short_ma = 0.0

if type_ma == "SMA"
    long_ma := ta.sma(close, long_period)
    medium_ma := ta.sma(close, medium_period)
    short_ma := ta.sma(close, short_period)
else
    long_ma := ta.ema(close, long_period)
    medium_ma := ta.ema(close, medium_period)
    short_ma := ta.ema(close, short_period)

// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(medium_ma, title = "Medium Moving Average", color = color.yellow)
plot(short_ma, title="Short Moving Average", color=color.green)

// Check last min/max
last_min = ta.lowest(candles_back)
last_max = ta.highest(candles_back)

// Strategy logic for crossing of moving averages
longCondition = short_ma > medium_ma and medium_ma > long_ma and high == last_max
shortCondition = short_ma < medium_ma and medium_ma < long_ma and low == last_min

longCondition_entry = longCondition and strategy.position_size == 0
shortCondition_entry = shortCondition and strategy.position_size == 0

// Check last min/max for operation
last_min_op = ta.lowest(candles_back)[1]
last_max_op = ta.highest(candles_back)[1]

// Plot lines
var line r1Line = na

// Entry orders
// if (longCondition)
//     from_line = chart.point.now(high)
//     to_line = chart.point.from_index(bar_index + candles_back, high)
//     r1Line := line.new(from_line, to_line, color = color.green, width = 2)

if longCondition_entry and ta.crossover(close,last_max_op)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=low)

// if (shortCondition)
//     from_line = chart.point.now(low)
//     to_line = chart.point.from_index(bar_index + candles_back, low)
//     r1Line := line.new(from_line, to_line, color = color.red, width = 2)

if shortCondition_entry and ta.crossunder(close,last_min_op)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=high)

if ta.barssince(longCondition_entry) >= bars_valid
    strategy.close("Long")

if ta.barssince(shortCondition_entry) >= bars_valid
    strategy.close("Short")

Plus de