Indicateur de dynamique Tendance basée sur la stratégie de négociation

Auteur:ChaoZhang est là., Date: 2023-12-12 14:52:11 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie construit des signaux de trading basés sur l'indicateur de dynamique RSI et les prix (Exponential Moving Average (EMA) et Simple Moving Average (SMA).

Principe de stratégie

La stratégie utilise 3 conditions pour générer des signaux de trading:

  1. RSI > 45: une valeur de RSI supérieure à 45 est considérée comme un bon signal d'achat
  2. EMA ((RSI) > SMA ((RSI): une ligne EMA supérieure à la ligne SMA indique que le RSI s'accélère vers le haut, ce qui est un bon signal de dynamique.
  3. EMA (close) > SMA (close): une ligne EMA supérieure à la ligne SMA indique que la tendance des prix s' accélère à la hausse

Si deux des trois conditions ci-dessus sont remplies, un signal d'achat est généré; si aucun n'est rempli, un signal de vente est généré.

La stratégie prévoit également un mode "acheter toujours" pour tester les performances du système par rapport au grand marché.

Analyse des avantages

  1. L'utilisation de l'indicateur de dynamique RSI pour juger des conditions du marché peut réduire les positions pendant les fluctuations du marché
  2. La combinaison de l'EMA et de l'SMA pour déterminer la direction de la tendance peut permettre de détecter rapidement les tendances des variations de prix
  3. Des règles conditionnelles simples et claires, faciles à comprendre et à optimiser
  4. Fournit le mode acheter toujours pour tester les avantages du système

Analyse des risques

  1. S'appuie sur les paramètres, les paramètres inappropriés entraîneront des transactions fréquentes ou des occasions de négociation manquantes
  2. Les principales nouvelles sur le marché peuvent provoquer une forte volatilité à court terme, ce qui entraînera un stop loss.
  3. La stratégie elle-même ne peut pas juger quand une tendance est sur le point de s'inverser, d'autres indicateurs doivent être utilisés pour déterminer

Directions d'optimisation

  1. Optimiser les paramètres du RSI, de l'EMA et de la SMA pour trouver la meilleure combinaison de paramètres
  2. Augmenter d'autres indicateurs techniques tels que le volume, le MACD, etc. pour enrichir les conditions de la règle
  3. Augmenter les indicateurs d'inversion de tendance afin de réduire la probabilité de pertes

Conclusion

En résumé, cette stratégie appartient à une stratégie de négociation à moyenne fréquence qui vise à capturer les tendances des prix à moyen terme tout en évitant les fluctuations à court terme du marché. Ses avantages et ses points de risque sont assez évidents.


/*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))




Plus de