Stratégie de trading basée sur un indicateur de momentum et suivant les tendances


Date de création: 2023-12-12 14:52:11 Dernière modification: 2023-12-12 14:52:11
Copier: 0 Nombre de clics: 559
1
Suivre
1621
Abonnés

Stratégie de trading basée sur un indicateur de momentum et suivant les tendances

Aperçu

Cette stratégie construit un signal de négociation basé sur l’indicateur dynamique RSI et les prix de l’Exponential Moving Average (EMA) et de la Simple Moving Average (SMA).

Principe de stratégie

La stratégie utilise trois conditions pour générer un signal de transaction:

  1. RSI > 45: un RSI supérieur à 45 est considéré comme un bon signe d’achat
  2. EMA ((RSI) > SMA ((RSI): une ligne EMA plus grande que la ligne SMA indique que le RSI est en train de s’accélérer vers le haut et appartient à un bon signal de dynamique
  3. EMA (prix de clôture) > SMA (prix de clôture): La ligne EMA est plus grande que la ligne SMA indiquant que la tendance des prix s’accélère vers le haut

Si deux des trois conditions ci-dessus sont remplies, un signal d’achat est généré; si toutes les conditions ne sont pas remplies, un signal de vente est généré.

Cette stratégie offre également un mode “acheter toujours” pour tester la performance du système lui-même par rapport au grand marché.

Analyse des forces stratégiques

  1. L’utilisation de l’indicateur de dynamique RSI pour évaluer les tendances du marché peut réduire les positions de négociation pendant les périodes de turbulences du marché
  2. La combinaison de l’EMA et de la SMA pour déterminer la direction de la tendance permet de saisir les tendances de changement de prix en temps opportun
  3. Les règles de conditionnalité sont simples, claires, faciles à comprendre et à optimiser
  4. Les avantages d’un système de vérification des modes de livraison de l’aluminium

Analyse stratégique des risques

  1. Les paramètres dépendent de la configuration, les paramètres incorrects entraîneront des transactions fréquentes ou des opportunités de transactions manquées
  2. Les prix à court terme peuvent fluctuer considérablement en cas de nouvelles importantes, ce qui entraînera un arrêt des pertes.
  3. Les stratégies ne peuvent pas déterminer à elles seules le moment où la tendance est sur le point de s’inverser et doivent être combinées avec d’autres indicateurs.

Direction d’optimisation

  1. Optimiser les paramètres RSI, EMA et SMA pour trouver la meilleure combinaison de paramètres
  2. Ajout de règles de jugement pour les autres indicateurs techniques tels que le volume, le MACD
  3. Augmentation des indicateurs de rétrogradation et réduction de la probabilité de pertes

Résumer

Cette stratégie est une stratégie de négociation de moyenne fréquence, visant à capturer les tendances des prix à moyen terme, tout en évitant les fluctuations de marché à court terme. Ses avantages et ses points de risque sont évidents.

Code source de la stratégie
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))