Stratégie de rupture des moyennes mobiles multiples

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

img

Résumé

Cette stratégie génère des signaux de trading basés sur la percée et le callback de plusieurs lignes moyennes mobiles.

La logique de la stratégie

Le code utilise 4 lignes moyennes mobiles avec des périodes différentes - 21 jours, 50 jours, 100 jours et 200 jours. Il entre dans des positions longues lorsque le prix traverse ces lignes MA et entre dans des positions courtes lorsque le prix tombe en dessous de ces lignes MA. En outre, les niveaux de stop loss et de take profit sont définis dans la stratégie. Plus précisément, le stop loss est défini près du point le plus bas de la bougie précédente, et le profit est défini à 3 fois la distance entre le point le plus bas et le point le plus élevé de la bougie précédente.

L'idée de base de cette stratégie est de juger de la tendance en utilisant des moyennes mobiles. Lorsque le prix traverse les lignes MA ascendantes, cela indique une tendance à la hausse, donc devrait aller long. Lorsque le prix tombe en dessous des lignes MA descendantes, cela indique une tendance à la baisse, donc devrait aller court. L'utilisation de plusieurs lignes MA avec différentes périodes peut juger de la tendance plus précisément et également vérifier les signaux de trading grâce à la cohérence de la tendance.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L'utilisation de plusieurs MAs peut filtrer efficacement les faux signaux
  2. La mise en place d'un stop loss et d'un take profit peut limiter les pertes uniques
  3. Facile à mettre en œuvre

Analyse des risques

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

  1. Les stratégies d'AM sont sujettes à des désalignements, ce qui fait manquer des points d'inversion des prix
  2. Les faux signaux de rupture peuvent causer des pertes
  3. Des paramètres de stop loss et de prise de bénéfice inappropriés peuvent amplifier les pertes

Ces risques peuvent être réduits en ajustant les paramètres de l'AM et en optimisant le stop loss et le take profit.

Optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Testez plus de combinaisons MA pour trouver les paramètres optimaux
  2. Ajouter d'autres indicateurs pour éviter les fausses ruptures
  3. Optimiser le stop loss et le take profit pour un meilleur rapport risque/rendement
  4. Adapter les paramètres aux différentes conditions du marché afin de renforcer la solidité de la stratégie

Résumé

En général, il s'agit d'une tendance typique suivant la stratégie. Les avantages sont une logique claire et facile à comprendre et à mettre en œuvre. L'inconvénient est qu'il est sujet à de faux signaux. La stratégie peut être améliorée en ajustant les paramètres et en ajoutant d'autres indicateurs.


/*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=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Plus de