Stratégie de grille de position variable suivant la tendance

Auteur:ChaoZhang est là., Date: 2024-03-29 15h23 et 23h23
Les étiquettes:Le taux d'intérêtIndice de résistanceLe MACDATRADX

img

Résumé

Cette stratégie est une stratégie de grille de position variable qui suit la tendance et qui utilise principalement les modèles EMA, RSI et engulfing pour déterminer la direction de la tendance et le moment de l'entrée.

Principes de stratégie

La stratégie utilise une EMA de 200 périodes pour déterminer la direction générale de la tendance. Lorsque le prix est au-dessus de l'EMA, il est considéré comme une tendance haussière, et lorsqu'il est en dessous de l'EMA, il est considéré comme une tendance baissière. Un RSI de 9 périodes est utilisé pour mesurer la dynamique, avec un RSI supérieur à 50 indiquant une dynamique haussière plus forte et inférieur à 50 indiquant une dynamique baissière plus forte.

Les positions stop-loss et take-profit sont déterminées en fonction de la taille du corps du schéma d'engorgement. Le stop-loss est défini à deux fois la taille du corps d'engorgement, avec un pourcentage de stop-loss minimum de 0,3% du prix d'entrée pour éviter les stop-out fréquents en raison de petites distances de stop-loss. La position take-profit est définie en multipliant la distance stop-loss par un ratio risque-rendement prédéfini pour assurer un ratio risque-rendement fixe. En outre, la stratégie offre la possibilité d'utiliser le MACD comme filtre de tendance, en tenant compte d'une tendance haussière plus forte lorsque la ligne MACD est au-dessus de la ligne de signal et d'une tendance baissière plus forte lorsque la ligne MACD est en dessous de la ligne de signal.

Les avantages de la stratégie

  1. Suivi de tendance: La stratégie utilise plusieurs indicateurs pour déterminer la tendance, ce qui permet d'entrer dans les premiers stades de la formation d'une tendance et de saisir les mouvements de tendance.

  2. Stop-loss et take-profit dynamiques: en ajustant les positions stop-loss et take-profit en fonction de la taille du corps du schéma d'engorgement, la stratégie élargit la plage de take-profit lorsque la tendance est forte et réduit la plage de stop-loss lorsque la tendance est faible, ce qui permet une gestion flexible des positions.

  3. Les utilisateurs peuvent personnaliser la direction du trading, les préférences de risque et d'autres paramètres pour répondre aux différents besoins des utilisateurs.

  4. L'option d'utiliser le MACD comme filtre de tendance confirme davantage la force de la tendance et améliore la précision de l'entrée.

Risques stratégiques

  1. Identification incorrecte de la tendance: bien que la stratégie utilise plusieurs indicateurs pour déterminer la tendance, il peut encore y avoir des cas où la tendance est incorrectement identifiée, entraînant des pertes.

  2. Rétrécissement de la fourchette: si le corps du schéma d'engloutissement est petit, les distances de stop-loss et de take-profit seront très proches, ce qui entraînera une détérioration du rapport risque/rendement.

  3. Optimisation des paramètres: les paramètres optimaux peuvent varier considérablement selon les instruments et les délais, ce qui oblige les utilisateurs à tester et à optimiser en permanence.

Directions d'optimisation de la stratégie

  1. Identification des tendances: envisager l'introduction d'outils supplémentaires de confirmation des tendances tels que les bandes de Bollinger, l'indice de direction moyen (ADX) etc., afin d'améliorer la précision de l'identification des tendances.

  2. Optimisation du stop-loss et du take-profit: envisager l'intégration d'indicateurs liés à la volatilité tels que l'ATR pour ajuster dynamiquement les distances de stop-loss et de take-profit, réduisant ainsi le risque associé aux petites fourchettes.

  3. Taille des positions: ajuster dynamiquement la taille des positions en fonction de la force de la tendance, de la rentabilité du compte, etc., augmenter la taille des positions lorsque la tendance est forte et toujours rentable et réduire le coût des transactions fréquentes.

  4. Coordination multi-échéanciers et multi-instruments: valider les signaux de tendance sur tous les échéanciers et instruments afin d'améliorer la précision de l'identification des tendances tout en diversifiant le risque d'un seul instrument ou d'un seul échéancier.

Résumé

Cette stratégie de grille de position variable qui suit les tendances fonctionne bien sur les marchés en tendance en utilisant plusieurs indicateurs pour déterminer la direction et la force de la tendance, en ajustant dynamiquement le stop-loss, le take-profit et la taille de la position pour capturer les tendances et obtenir des rendements excédentaires. Cependant, la performance de la stratégie est moyenne sur des marchés peu clairs ou souvent fluctuants. Par conséquent, lors de l'utilisation de cette stratégie, il est crucial de se concentrer sur la sélection d'instruments de tendance et l'ajustement des paramètres à mesure que les conditions du marché changent.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")

Relationnée

Plus de