Stratégie de suivi de tendance haussière Golden Cross


Date de création: 2024-01-03 11:46:44 Dernière modification: 2024-01-03 11:46:44
Copier: 1 Nombre de clics: 352
1
Suivre
1166
Abonnés

Stratégie de suivi de tendance haussière Golden Cross

Aperçu

La stratégie est basée sur le principe de la croix d’or des moyennes mobiles. Plus précisément, elle utilise des moyennes mobiles simples de deux cycles différents, à savoir la ligne de 50 cycles et la ligne de 200 cycles. Elle génère un signal d’achat lorsque la ligne de 50 cycles franchit la ligne de 200 cycles par le bas et un signal de vente lorsque la ligne de 50 cycles franchit la ligne de 200 cycles par le haut.

Principe de stratégie

La stratégie est écrite dans le langage Pine Script, et la logique principale est la suivante:

  1. Calculer deux SMA: un SMA de 50 cycles et un SMA de 200 cycles
  2. Jugez le croisement de l’or: faites plus lorsque vous portez un SMA de 200 cycles sur un SMA de 50 cycles
  3. Jugement de la croix de mort: plafonnement lorsque le SMA de 50 cycles est traversé par le SMA de 200 cycles

L’importance de l’indicateur SMA ici est qu’il est efficace pour filtrer le bruit des données de marché et capturer la tendance à long terme. La ligne SMA rapide traverse la ligne SMA lente, indiquant que l’élan à la hausse à court terme a battu la tendance à la baisse à long terme, générant un signal d’achat.

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. Les principes sont simples et faciles à mettre en œuvre.
  2. Les paramètres sont raisonnables et peuvent être personnalisés avec deux cycles SMA pour s’adapter à différents marchés.
  3. Il est écrit en version stable du langage Pine et fonctionne très bien.
  4. Les paramètres visuels sont très informatifs et faciles à utiliser.

Risques et solutions

Cette stratégie comporte aussi des risques:

  1. Il peut y avoir une fausse rupture, ce qui donne un mauvais signal à la stratégie. Les deux paramètres SMA peuvent être ajustés de manière appropriée pour réduire la probabilité de fausse rupture.

  2. Il ne peut pas répondre aux marchés à court terme et ne convient qu’aux investisseurs à long terme. Le cycle du SMA rapide peut être réduit de manière appropriée.

  3. Les retraits peuvent être plus importants. Des points de rupture peuvent être définis ou la gestion de position peut être ajustée.

Optimiser les idées

Cette stratégie peut être optimisée à partir des dimensions suivantes:

  1. Ajouter des filtres sur d’autres indicateurs, combiner plusieurs conditions d’achat/vente et réduire la probabilité de faux signaux.

  2. Augmentation du mécanisme de stop-loss. Stop-loss forcé lorsque le prix est inférieur à un certain niveau.

  3. Optimiser la gestion des positions. Par exemple, accroître les positions avec la tendance, suivre les arrêts de perte, etc. Contrôler les retraits et rechercher des rendements plus élevés.

  4. Optimisation des paramètres. Évaluation de l’influence des différents paramètres sur le rapport bénéfice-risque.

Résumer

Cette stratégie est généralement une stratégie de suivi de tendance typique. Elle utilise les avantages de la SMA pour capturer facilement et efficacement les tendances en longues lignes.

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

// @version=4
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// www.tradingview.com/u/TradeFab/
// www.tradefab.com
// ___  __        __   __  __       __
//  |  |__)  /\  |  \ |__ |__  /\  |__)
//  |  |  \ /~~\ |__/ |__ |   /~~\ |__)
//
// DISCLAIMER: Futures, stocks and options trading involves substantial risk of loss 
// and is not suitable for every investor. You are responsible for all the risks and 
// financial resources you use and for the chosen trading system.
// Past performance is not indicative for future results. In making an investment decision,
// traders must rely on their own examination of the entity making the trading decisions!
//
// TradeFab's Golden Cross Strategy.
// The strategy goes long when the faster SMA 50 (the simple moving average of the last 50 bars) crosses
// above the SMA 200. Orders are closed when the SMA 50 crosses below SMA 200. The strategy does not short.
//
VERSION = "1.2"
// 1.2 FB 2020-02-09 converted to Pine version 4
// 1.1 FB 2017-01-15 added short trading
// 1.0 FB 2017-01-13 basic version using SMAs
//
strategy(
   title        = "TFs Golden Cross " + VERSION, 
   shorttitle   = "TFs Golden Cross " + VERSION, 
   overlay      = true
   )


///////////////////////////////////////////////////////////
// === INPUTS ===
///////////////////////////////////////////////////////////
inFastSmaPeriod     = input(title="Fast SMA Period", type=input.integer, defval=50, minval=1)
inSlowSmaPeriod     = input(title="Slow SMA Period", type=input.integer, defval=200, minval=1)

// backtest period
testStartYear       = input(title="Backtest Start Year",    type=input.integer, defval=2019, minval=2000)
testStartMonth      = input(title="Backtest Start Month",   type=input.integer, defval=1, minval=1, maxval=12)
testStartDay        = input(title="Backtest Start Day",     type=input.integer, defval=1, minval=1, maxval=31)
testStopYear        = input(title="Backtest Stop Year",     type=input.integer, defval=2099, minval=2000)
testStopMonth       = input(title="Backtest Stop Month",    type=input.integer, defval=12, minval=1, maxval=12)
testStopDay         = input(title="Backtest Stop Day",      type=input.integer, defval=31, minval=1, maxval=31)


///////////////////////////////////////////////////////////
// === LOGIC ===
///////////////////////////////////////////////////////////
smaFast = sma(close, inFastSmaPeriod)
smaSlow = sma(close, inSlowSmaPeriod)

bullishCross = crossover (smaFast, smaSlow)
bearishCross = crossunder(smaFast, smaSlow)

// detect valid backtest period
isTestPeriod() => true


///////////////////////////////////////////////////////////
// === POSITION EXECUTION ===
///////////////////////////////////////////////////////////
strategy.entry("long",  strategy.long,  when=bullishCross)
strategy.entry("short", strategy.short, when=bearishCross)


///////////////////////////////////////////////////////////
// === PLOTTING ===
///////////////////////////////////////////////////////////
// background color
nopColor = color.new(color.gray, 50)
bgcolor(not isTestPeriod() ? nopColor : na)

bartrendcolor = 
   close > smaFast and 
   close > smaSlow and 
   change(smaSlow) > 0 
       ? color.green 
       : close < smaFast and 
         close < smaSlow and 
         change(smaSlow) < 0 
             ? color.red 
             : color.blue
barcolor(bartrendcolor)
plot(smaFast, color=change(smaFast) > 0 ? color.green : color.red, linewidth=2)
plot(smaSlow, color=change(smaSlow) > 0 ? color.green : color.red, linewidth=2)

// label
posColor = color.new(color.green, 75)
negColor = color.new(color.red, 75)
dftColor = color.new(color.blue, 75)
posProfit= (strategy.position_size != 0) ? (close * 100 / strategy.position_avg_price - 100) : 0.0
posDir   = (strategy.position_size  > 0) ? "long" : strategy.position_size < 0 ? "short" : "flat"
posCol   = (posProfit > 0) ? posColor : (posProfit < 0) ? negColor : dftColor

var label lb = na
label.delete(lb)
lb := label.new(bar_index, max(high, highest(5)[1]),
   color=posCol,
   text="Pos: "+ posDir +
      "\nPnL: "+tostring(posProfit, "#.##")+"%" +
      "\nClose: "+tostring(close, "#.##"))