
Cette stratégie permet de déterminer la tendance des prix en calculant des moyennes mobiles rapides, des moyennes mobiles lentes et des indicateurs MACD, de construire des signaux de négociation de fourchettes dorées et de bloquer les bénéfices en combinant le stop-loss et le stop-loss tracking pour permettre un suivi continu de la tendance.
La stratégie est basée sur trois principaux indicateurs:
Tout d’abord, calculer une moyenne mobile rapide et deux moyennes mobiles lentes. Générer un signal d’achat lorsque la moyenne mobile rapide est traversée par deux moyennes mobiles lentes. Générer un signal de vente lorsque la moyenne mobile rapide est traversée par deux moyennes mobiles lentes.
Ensuite, on calcule l’indicateur MACD, comprenant les lignes MACD, les lignes de signal et le plan rectangle. Il s’agit d’un indicateur à plusieurs têtes lorsque le plan rectangle MACD est supérieur à 0 et d’un indicateur à tête vide lorsque le plan rectangle MACD est inférieur à 0.
Enfin, le stop loss est associé au stop loss tracking. Les points d’arrêt et les points d’arrêt sont utilisés pour verrouiller les bénéfices et contrôler les risques. Le stop loss tracking est utilisé pour suivre les bénéfices.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Les solutions pour faire face aux risques:
La stratégie peut également être optimisée dans les domaines suivants:
Cette stratégie est une stratégie simple et efficace pour suivre les pertes en utilisant les indicateurs MACD et les fourches dorées pour déterminer les tendances. L’avantage est que le suivi des tendances et le blocage des bénéfices sont réalisés.
/*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)