Cette stratégie évalue la tendance des prix en calculant la moyenne mobile rapide, la moyenne mobile lente et l'indicateur MACD, et construit les signaux de trading de croix dorée et de croix morte.
Cette stratégie repose principalement sur trois indicateurs.
Il calcule la moyenne mobile rapide et deux moyennes mobiles lentes. Lorsque la moyenne mobile rapide dépasse les deux moyennes mobiles lentes, un signal d'achat est généré. Lorsque la moyenne mobile rapide dépasse les deux moyennes mobiles lentes, un signal de vente est généré. Cela juge la relation entre les tendances à court et à long terme pour réaliser le trading en croisement doré et en croisement mort.
Deuxièmement, il calcule l'indicateur MACD, y compris la ligne MACD, la ligne de signal et l'histogramme. Lorsque l'histogramme MACD est supérieur à 0, il s'agit d'un indicateur haussier; lorsque l'histogramme MACD est inférieur à 0, il s'agit d'un indicateur baissier. Cela aide à juger de la fiabilité des signaux de croix dorée et de croix morte.
Enfin, il intègre les mécanismes de prise de profit, d'arrêt de perte et d'arrêt de perte.
Les avantages de cette stratégie sont les suivants:
Il y a aussi des risques:
Les solutions sont les suivantes:
La stratégie peut également être optimisée par les aspects suivants:
En résumé, il s'agit d'une stratégie simple mais efficace qui utilise la croix dorée, la croix morte et le MACD pour juger de la tendance et réaliser le stop loss. Les avantages sont le suivi de la tendance et le verrouillage des bénéfices avec une grande personnalisation. C'est une stratégie d'optimisation de paramètres universelle adaptée à différents instruments de trading. Il y a encore des risques et un espace d'optimisation, mais dans l'ensemble, c'est une stratégie de trading fiable et pratique.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy('The Puria Method', shorttitle = 'Puria',overlay = true) //=== GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 5, title = "Fast MA Period", minval = 1) // long ma 1 maSlow1Source = input(defval = low, title = "Slow MA1 Source") maSlow1Length = input(defval = 85, title = "Slow MA Period", minval = 1) // long ma 2 maSlow2Source = input(defval = low, title = "Slow MA2 Source") maSlow2Length = input(defval = 75, title = "Slow MA Period", minval = 1) //macd macdFastLength = input(defval = 12, title = "Fast MACD Period", minval = 1) macdSlowLength = input(defval = 26, title = "Slow MACD Period", minval = 1) macdSmaLength = input(defval = 9, title = "SMA MACD Period", minval = 1) // the risk management inputs inpTakeProfit = input(defval = 30, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 10, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 5, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === SERIES SETUP === maFast = ema(maFastSource, maFastLength) maSlow1 = wma(maSlow1Source, maSlow1Length) maSlow2 = wma(maSlow2Source, maSlow2Length) [_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50) slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0 signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0 // ===STRATEGY=== strategy.entry(id = "Long", long = true, when = signalUp) strategy.entry(id = "Short", long = false, when = signalDown) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)