Les ressources ont été chargées... Je charge...

Stratégie de négociation adaptative à la double EMA et à la force relative

Auteur:ChaoZhang est là., Date: 2024-12-04 15h29 et 05h
Les étiquettes:Le taux d'intérêtIndice de résistanceRS

img

Résumé

Cette stratégie est un système de trading complet qui combine un double système EMA, l'indice de force relative (RSI) et l'analyse de la force relative (RS). La stratégie confirme les tendances grâce au croisement des moyennes mobiles exponentielles (EMA) de 13 et 21 jours tout en utilisant les valeurs RSI et RS par rapport à un indice de référence pour la confirmation du signal, en mettant en œuvre un mécanisme de décision de trading multidimensionnel. Elle comprend également des mécanismes de contrôle des risques basés sur les sommets de 52 semaines et les jugements de la condition de réentrée.

Principes de stratégie

La stratégie utilise un mécanisme de confirmation de signaux multiples:

  1. Les signaux d'entrée doivent satisfaire aux conditions suivantes:
    • Le cours de l'EMA13 dépasse le cours de l'EMA21 ou le prix dépasse le cours de l'EMA13
    • RSI supérieur à 60
    • Résistance relative positive (RS)
  2. Les conditions de sortie comprennent:
    • Le prix tombe en dessous de l'EMA21
    • RSI inférieur à 50
    • RS devient négatif
  3. Conditions de réentrée:
    • Les prix se croisent au-dessus de l'EMA13 et de l'EMA13 au-dessus de l'EMA21
    • RS reste positif
    • Ou les prix dépassent le sommet de la semaine dernière.

Les avantages de la stratégie

  1. La confirmation de plusieurs signaux réduit les risques de fausse rupture
  2. L'intégration de l'analyse de la force relative filtre efficacement les performances élevées
  3. Adopte un mécanisme d'ajustement adaptatif des délais
  4. Système complet de contrôle des risques
  5. Mécanisme de rentrée intelligent
  6. Visualisation en temps réel de l'état des transactions

Risques stratégiques

  1. Opérations fréquentes potentielles sur des marchés instables
  2. Plusieurs indicateurs peuvent entraîner des signaux de retard
  3. Les seuils fixes de l'IRR peuvent ne pas convenir à toutes les conditions du marché
  4. Le calcul du RS dépend de l'exactitude de l'indice de référence
  5. Le taux de stop-loss élevé de 52 semaines pourrait être trop faible.

Directions d'optimisation de la stratégie

  1. L'introduction de seuils d'indice de résistance adaptatif
  2. Optimisation de la logique des conditions de réentrée
  3. Ajout de la dimension d'analyse du volume
  4. Amélioration des mécanismes de prise de profit et de stop-loss
  5. Mise en œuvre de filtres de volatilité
  6. Optimisation des périodes de calcul de la résistance relative

Résumé

La stratégie est basée sur la combinaison de l'analyse technique et de l'analyse de la force relative pour créer un système de trading complet. Son mécanisme de confirmation de signaux multiples et son système de contrôle des risques le rendent très pratique.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-03 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA 13 & 21 Entry Exit", overlay=true)

// Define the EMAs
ema13 = ta.ema(close, 13)
ema21 = ta.ema(close, 21)

// Define the RSI
rsi = ta.rsi(close, 14)

// Calculate the closing price relative to Nifty 50
//nifty50 = request.security("NSE:NIFTY", timeframe.period, close)
//closeRelative = close / nifty50

// Define a base period (e.g., 123) and adjust it based on the timeframe
//basePeriod = 123

// Calculate the effective period based on the timeframe
//effectivePeriod = basePeriod * (timeframe.isintraday ? (60 / timeframe.multiplier) : 1)

// Calculate the EMA
//rs = ta.ema(closeRelative, effectivePeriod)

// Define the Relative Strength with respect to NIFTY 50
nifty50 = request.security("swap", "D", close)
rs = ta.ema(close / nifty50, 55 )

// Define the previous 2-week low and last week's high
twoWeekLow = ta.lowest(low, 10)  // 10 trading days roughly equal to 2 weeks
lastWeekHigh = ta.highest(high, 5)  // 5 trading days roughly equal to 1 week
fiftytwoWeekhigh = ta.highest(high, 52*5) // 252 tradingdays roughly equal to 52 week.

// Long condition: EMA 21 crossing above EMA 55, price above EMA 21, RSI > 50, and RS > 0
longCondition = ta.crossover(ema13, ema21) or close > ema13 and rsi > 60 and rs > 0

// Exit condition: Price closing below EMA 55 or below the previous 2-week low
exitCondition = close < ema21 or rsi < 50 or rs < 0 //or close < fiftytwoWeekhigh*0.80

// Re-entry condition: Price crossing above EMA 21 after an exit, EMA 21 > EMA 55, and RS > 1
reEntryCondition = ta.crossover(close, ema13) and ema13 > ema21 and rs > 0

// Re-entry condition if trailing stop loss is hit: Price crossing above last week's high
reEntryAfterSL = ta.crossover(close, lastWeekHigh)

// Plot the EMAs
plot(ema13 ,color=color.green, title="EMA 13",linewidth = 2)
plot(ema21, color=color.red, title="EMA 21",linewidth = 2)


// Plot buy and sell signals
plotshape(series=longCondition, location=location.abovebar, color=color.rgb(50, 243, 130), style=shape.flag, title="Buy Signal")
plotshape(series=exitCondition, location=location.belowbar, color=color.red, style=shape.xcross, title="Sell Signal")
plotshape(series=reEntryCondition or reEntryAfterSL, location=location.belowbar, color=color.blue, style=shape.labelup, title="Re-entry Signal")
//plotshape(series = fiftytwoWeekhigh,location=location.abovebar, color=color.blue,style=shape.flag, title="52WH")

// Plot background color for RS > 0
//bgcolor(rs > 0 ? color.new(color.green, 90) : na, title="RS Positive Background")
// Plot the previous 2-week low and last week's high
// plot(twoWeekLow, color=color.orange, title="2-Week Low")
// plot(lastWeekHigh, color=color.purple, title="Last Week High")

// Strategy logic
if (longCondition or reEntryCondition or reEntryAfterSL)
    strategy.entry("Long", strategy.long)

if (exitCondition)
    strategy.close("Long")

 // Calculate Stop Loss (SL) and Profit
var float entryPrice = na
var float stopLoss = na
var float profit = na

if (strategy.opentrades > 0)
    entryPrice := strategy.opentrades.entry_price(strategy.opentrades - 1)
    stopLoss := fiftytwoWeekhigh * 0.80
    profit := (close - entryPrice) / entryPrice * 100

// Display the strategy table
var table strategyTable = table.new(position.top_right, 4, 2, border_width = 1)

// Make the table movable
tableX = input.int(0, title="Table X Position")
tableY = input.int(0, title="Table Y Position")

// Add size options for the table
tableSize = input.string("small", title="Table Size", options=["tiny", "small", "large"])

// Adjust table size based on user input
tableWidth = tableSize == "tiny" ? 2 : tableSize == "small" ? 4 : 6
tableHeight = tableSize == "tiny" ? 1 : tableSize == "small" ? 2 : 3

// Create the table with the specified size
//table = table.new(position.top_right, tableWidth, tableHeight, border_width = 1)

// Position the table based on user input
// table.cell(strategyTable, tableX, tableY, "Entry Price",  bgcolor=#18eef9)
// table.cell(strategyTable, tableX, tableY + 1, str.tostring(entryPrice, format.mintick), bgcolor=#18eef9)
// table.cell(strategyTable, tableX + 1, tableY, "Stop Loss (20%)", bgcolor=color.red)
// table.cell(strategyTable, tableX + 1, tableY + 1, str.tostring(stopLoss, format.mintick), bgcolor=color.red)
// table.cell(strategyTable, tableX + 2, tableY, "Profit (%)", bgcolor=color.green)
// table.cell(strategyTable, tableX + 2, tableY + 1, str.tostring(profit, format.percent), bgcolor=color.green)


Relationnée

Plus de