3EMA avec stratégie RSI stochastique

Auteur:ChaoZhang est là., Date: 2023-11-15 à 10h47
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi de tendance combinant plusieurs indicateurs. Il utilise trois EMA avec des périodes différentes, le RSI stochastique et l'ATR pour identifier la direction de la tendance et établir des positions.

Principe

La stratégie utilise trois lignes EMA - 8-, 14 et 50 périodes EMA, représentant les tendances des prix sur différentes périodes.

L'indicateur RSI stochastique intègre des calculs RSI et stochastiques pour identifier les conditions de surachat/survente.

ATR représente la fourchette de volatilité récente. La stratégie utilise 3 fois ATR comme distance stop loss et 2 fois ATR comme distance take profit pour verrouiller les bénéfices et contrôler le risque.

Les avantages

  • Les EMA filtrent le bruit dans les données sur les prix et identifient la direction de la tendance
  • L'indicateur stochastique des taux de rebond identifie les opportunités de renversement
  • ATR suit dynamiquement le stop loss/take profit en fonction de la volatilité du marché

Les risques

  • Plusieurs indicateurs peuvent générer des signaux contradictoires
  • Les ratios stop-loss/take profit fixes ne peuvent pas s'adapter à l'évolution des conditions du marché
  • Comptes courts à court terme susceptibles d'être inversés

L'optimisation peut être effectuée en ajustant les périodes EMA pour optimiser la sensibilité.

Amélioration

  • Ajustez les périodes de l'EMA pour optimiser la sensibilité
  • Faire régler les ratios ATR
  • Ajouter d'autres indicateurs pour éviter les faux signaux

Conclusion

La stratégie prend en compte la tendance, les niveaux de surachat / survente et la fourchette de volatilité pour identifier le moment de l'entrée. Les EMA et le RSI stochastique combinés identifient efficacement les tendances, tandis que le stop loss / take profit dynamique de l'ATR aide à contrôler les risques. Avec l'ajustement et l'optimisation des paramètres, la stratégie peut devenir un système de suivi de tendance fiable.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

Plus de