Système de gestion de l'argent basé sur la dynamique RSI et la force de la tendance ADX

RSI ADX ATR EMA TP
Date de création: 2024-12-20 14:24:34 Dernière modification: 2024-12-20 14:24:34
Copier: 0 Nombre de clics: 397
1
Suivre
1617
Abonnés

Système de gestion de l’argent basé sur la dynamique RSI et la force de la tendance ADX

Aperçu

La stratégie est un système de stratégie hybride combinant le suivi de la tendance et les transactions de choc, permettant des transactions solides grâce à la sélection de multiples indicateurs techniques et à une gestion rigoureuse des fonds. La stratégie utilise un arrêt par étapes pour bloquer les bénéfices, tout en réglant le contrôle de retrait maximal et en contrôlant les risques tout en garantissant les gains. Le système utilise l’indicateur de dynamique RSI et l’indicateur de force de tendance ADX comme principaux conditions de déclenchement de signaux de négociation, et en combinaison avec le volume de transactions, les filtres multiples tels que ATR et EMA pour assurer l’efficacité des transactions.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Les conditions d’entrée sont remplies à la fois: le volume de transactions est supérieur à 1 million, l’ADX est supérieur à 25 pour indiquer une tendance évidente, le RSI est supérieur à 60 pour indiquer une dynamique forte, l’ATR est supérieur à 2 pour assurer une marge de fluctuation suffisante, le prix est maintenu à la hausse au-dessus de la moyenne journalière de 200.
  2. Conception d’arrêt par étapes: le premier arrêt est à 15% de la position, la liquidation de 50% de la position; le deuxième arrêt est à 30% et la liquidation de la position restante. Cette conception permet de bloquer une partie des bénéfices plus tôt et de ne pas manquer la grande tendance.
  3. Contrôle des pertes: mise en place d’un fonds de protection contre les pertes de 15%, tout en se libérant lorsque le RSI est inférieur à 50 ou lorsque le prix tombe en dessous de la ligne médiane de 200.
  4. Gestion des retraits: suivi en temps réel de la valeur nette de la stratégie, déclenchement d’un système de contrôle du vent lorsque les retraits dépassent 30%, évacuation de tous les portefeuilles.

Avantages stratégiques

  1. Plusieurs indicateurs techniques se valident de manière croisée pour améliorer la fiabilité des signaux de trading
  2. La conception de la barre d’étape tient compte à la fois de la nécessité de réaliser des bénéfices à court terme et de la nécessité de saisir les grandes tendances
  3. Système de contrôle des risques bien conçu, comprenant des arrêts de perte individuels et des contrôles systématiques des risques
  4. Les conditions de transaction sont strictes et permettent de filtrer efficacement les faux signaux.
  5. La logique de la stratégie est claire et permet d’ajuster les paramètres en fonction des conditions du marché

Risque stratégique

  1. Le filtrage sur plusieurs indicateurs peut entraîner la perte de certaines opportunités de trading
  2. Les stop loss peuvent être déclenchés fréquemment sur des marchés volatils
  3. Les paramètres de stop loss et de stop-loss à pourcentage fixe peuvent ne pas être adaptés à tous les environnements de marché
  4. Les stratégies reposent sur des indicateurs techniques et peuvent être insuffisantes en cas d’urgence fondamentale.
  5. Les besoins en capital sont plus importants pour répondre aux besoins en volume de transactions.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un mécanisme d’arrêt-stop adaptatif qui s’adapte à la dynamique de la volatilité du marché
  2. Ajout d’un module de jugement de l’environnement de marché, avec différents paramètres de réglage dans différentes conditions de marché
  3. Optimiser la méthode de calcul de l’ADX en considérant le cycle d’adaptation
  4. Ajout de coûts de transaction et optimisation du système de gestion des positions
  5. Développement d’un mécanisme de filtrage des signaux basé sur l’apprentissage automatique

Résumer

La stratégie est un système de négociation complet qui permet des transactions solides grâce à de multiples indicateurs techniques et à une gestion rigoureuse des fonds. Le principal avantage de la stratégie réside dans son système de contrôle des risques et son mécanisme de freinage par étapes, mais il faut également faire attention à l’ajustement des paramètres en fonction de la situation du marché dans les applications réelles. La possibilité d’optimiser davantage la stratégie réside principalement dans l’adaptation dynamique des paramètres et l’amélioration du mécanisme de filtrage des signaux.

Code source de la stratégie
/*backtest
start: 2023-12-20 00:00:00
end: 2024-12-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Swing Strategy (<30% DD)", shorttitle="SwingStratDD", overlay=true)

//-----------------------------------------------------
// Example Indicators and Logic
//-----------------------------------------------------
emaLen   = input.int(200, "EMA Length", minval=1)
emaValue = ta.ema(close, emaLen)

plot(emaValue, color=color.yellow, linewidth=2, title="EMA 200")


//-----------------------------------------------------
// User Inputs
//-----------------------------------------------------
adxLen           = input.int(14,  "ADX Length",      minval=1)
rsiLen           = input.int(14,  "RSI Length",      minval=1)
atrLen           = input.int(14,  "ATR Length",      minval=1)

rsiBuyThresh     = input.float(60, "RSI Buy Threshold",     minval=1, maxval=100)
adxThresh        = input.float(25, "ADX Threshold (Trend)", minval=1, maxval=100)
minVolume        = input.float(1e6,"Minimum Volume",         minval=1)
minATR           = input.float(2,  "Minimum ATR(14)",        minval=0.1, step=0.1)

stopLossPerc     = input.float(15, "Stop-Loss %",            minval=0.1, step=0.1)
// We’ll do two partial take-profit levels to aim for consistent cashflow:
takeProfit1Perc  = input.float(15, "Take-Profit1 %",         minval=0.1, step=0.1)
takeProfit2Perc  = input.float(30, "Take-Profit2 %",         minval=0.1, step=0.1)

ddLimit          = input.float(30, "Max Drawdown %",         minval=0.1, step=0.1)

//-----------------------------------------------------
// Indicators
//-----------------------------------------------------

rsiValue = ta.rsi(close, rsiLen)
atrValue = ta.atr(atrLen)

//--- Fully Manual ADX Calculation ---
upMove      = high - high[1]
downMove    = low[1] - low
plusDM      = (upMove > downMove and upMove > 0) ? upMove : 0.0
minusDM     = (downMove > upMove and downMove > 0) ? downMove : 0.0
smPlusDM    = ta.rma(plusDM, adxLen)
smMinusDM   = ta.rma(minusDM, adxLen)
smTR        = ta.rma(ta.tr, adxLen)
plusDI      = (smPlusDM / smTR) * 100
minusDI     = (smMinusDM / smTR) * 100
dx          = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adxValue    = ta.rma(dx, adxLen)

//-----------------------------------------------------
// Screener-Like Conditions (Technical Only)
//-----------------------------------------------------
volumeCondition   = volume > minVolume
adxCondition      = adxValue > adxThresh
rsiCondition      = rsiValue > rsiBuyThresh
atrCondition      = atrValue > minATR
aboveEmaCondition = close > emaValue

longCondition = volumeCondition and adxCondition and rsiCondition and atrCondition and aboveEmaCondition

//-----------------------------------------------------
// Strategy Entry / Exit Logic
//-----------------------------------------------------
var bool inTrade = false

// Entry
if longCondition and not inTrade
    strategy.entry("Long", strategy.long)

// Basic Exit Condition: RSI < 50 or Price < EMA
exitCondition = (rsiValue < 50) or (close < emaValue)
if inTrade and exitCondition
    strategy.close("Long")

// Update inTrade status
inTrade := strategy.position_size > 0

//-----------------------------------------------------
// Multi-Level Stop-Loss & Partial Profits
//-----------------------------------------------------
if inTrade
    float entryPrice = strategy.position_avg_price

    // Stop-Loss
    float stopPrice     = entryPrice * (1 - stopLossPerc / 100)

    // Two partial take-profit levels
    float tp1Price      = entryPrice * (1 + takeProfit1Perc / 100)
    float tp2Price      = entryPrice * (1 + takeProfit2Perc / 100)

    // Example approach: exit half at TP1, half at TP2
    strategy.exit("TP1/SL",     from_entry="Long", stop=stopPrice,    limit=tp1Price, qty_percent=50)
    strategy.exit("TP2",        from_entry="Long", limit=tp2Price,    qty_percent=50)

//-----------------------------------------------------
// Dynamic Drawdown Handling
//-----------------------------------------------------
var float peakEquity = strategy.equity
peakEquity := math.max(peakEquity, strategy.equity)

currentDrawdownPerc = (peakEquity - strategy.equity) / peakEquity * 100
if currentDrawdownPerc > ddLimit
    strategy.close_all("Max Drawdown Exceeded")

//-----------------------------------------------------
// Plotting
//-----------------------------------------------------
plot(emaValue, title="EMA 200", color=color.yellow, linewidth=2)
plotchar(rsiValue, title="RSI", char='●', location=location.bottom, color=color.new(color.teal, 50))
plot(adxValue, title="Manual ADX", color=color.orange)