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

Auteur:ChaoZhang est là., Date: 2024-01-03 11:46:44 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est conçue sur la base du principe de la croix d'or des moyennes mobiles. Plus précisément, elle utilise deux moyennes mobiles simples de différentes périodes, à savoir la ligne de 50 périodes et la ligne de 200 périodes. Lorsque la ligne de 50 périodes traverse la ligne de 200 périodes depuis le bas, un signal d'achat est généré. Lorsque la ligne de 50 périodes traverse la ligne de 200 périodes depuis le haut, un signal de vente est généré.

La logique de la stratégie

La stratégie est écrite en langage Pine Script, avec la logique principale suivante:

  1. Calculer deux SMA: une SMA à 50 périodes et une SMA à 200 périodes
  2. Déterminer la croix d'or: lorsque la SMA à 50 périodes dépasse la SMA à 200 périodes, aller long
  3. Déterminer la valeur de l'opération de clôture: lorsque la SMA à 50 périodes dépasse la SMA à 200 périodes, position close

L'importance de l'utilisation de l'indicateur SMA ici est qu'il peut filtrer efficacement le bruit du marché et capturer les tendances à long terme.

Les avantages

La stratégie présente les avantages suivants:

  1. Principe simple et facile à comprendre, facile à mettre en œuvre.
  2. Paramètres raisonnables, deux périodes SMA personnalisables, adaptés à différents marchés.
  3. Écrit dans une version stable de la langue Pine, fonctionne efficacement.
  4. Des réglages visuels riches, faciles à utiliser.

Risques et solutions

La stratégie comporte également certains risques:

  1. Une fausse rupture peut se produire, générant des signaux erronés.

  2. Ne peut pas répondre au marché à court terme, ne convient qu'aux investisseurs à long terme.

  3. Le retrait peut être important, peut régler le stop loss ou ajuster correctement la gestion de la position.

Directions d'optimisation

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

  1. Ajouter d'autres indicateurs de filtrage, combinant plusieurs conditions d'achat/de vente pour réduire les faux signaux.

  2. Ajouter un mécanisme de stop loss obligatoire lorsque le prix dépasse un certain niveau.

  3. Optimiser la gestion des positions, comme la pyramide le long de la tendance, le suivi du stop loss, etc. pour contrôler le retrait et rechercher un rendement plus élevé.

  4. Optimisation des paramètres: évaluer l'impact des différents paramètres sur le rapport rendement/risque.

Conclusion

En général, il s'agit d'une stratégie de suivi des tendances typique. Il utilise l'avantage de SMA pour capturer simplement et efficacement les tendances à long terme. Peut personnaliser en fonction de son style et de son espace de réglage.


/*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, "#.##"))
  

Plus de