Stratégies de trading des oscillateurs


Date de création: 2023-12-13 14:45:51 Dernière modification: 2023-12-13 14:45:51
Copier: 0 Nombre de clics: 795
1
Suivre
1621
Abonnés

Stratégies de trading des oscillateurs

Aperçu

Il s’agit d’une stratégie de trading inversée basée sur plusieurs indicateurs techniques. Elle combine des indicateurs tels que le CCI, le momentum et le RSI pour identifier les opportunités de trading potentiellement en hausse et en hausse.

Principe de stratégie

Les signaux de négociation de cette stratégie proviennent d’une courbe d’indicateurs personnalisée, la courbe d’achat et de vente de points Edri, qui prend en compte l’intersection de CCI, l’indicateur de momentum et le RSI. La logique spécifique est:

Conditions de signaux multiples:

  1. Le point d’achat et le point de vente de l’indicateur Edri émettent un signal d’achat, c’est-à-dire que le CCI traverse l’axe 0 ou que l’indicateur de dynamique traverse l’axe 0 et que le RSI est inférieur à la ligne de vente excessive.
  2. Le prix est en retrait ou en dessous de 100 cycles EMA.

Conditions du signal de tête vide:

  1. Les points d’achat et de vente de l’indicateur Edri émettent un signal de vente, soit le CCI sur l’axe 0 ou l’indicateur de dynamique sur l’axe 0, et le RSI est supérieur à la ligne de survente.
  2. Le prix est en retrait ou au-dessus de l’EMA de 100 cycles.

La stratégie peut également être configurée pour rechercher des conditions de déviation de la norme, c’est-à-dire que le RSI et le prix sont clairement déviés pour générer un signal de transaction.

Lorsque le signal de négociation est satisfait, le point d’arrêt de la stratégie est le prix d’entrée + 2 ATR et le point d’arrêt est le prix d’entrée + 4 ATR. Cela permet de définir une plage d’arrêt de perte raisonnable en fonction de la volatilité du marché.

Analyse des avantages

  1. L’analyse de plusieurs indicateurs peut aider à éviter les faux signaux d’un seul indicateur.
  2. La méthode de négociation inverse permet de capturer des opportunités de négociation à court terme dans des conditions de choc.
  3. ATR Stop Loss Stop Mode, qui permet de modifier la position en fonction de la volatilité du marché.
  4. Il est possible de trouver des conditions déviantes pour éviter d’ouvrir des positions dans des cas de survente non extrêmes.

Analyse des risques

  1. Une mauvaise configuration des paramètres de l’indicateur peut entraîner des opportunités de trading manquées ou générer trop de signaux erronés.
  2. Le mode inverse de négociation peut entraîner une perte continue de la tendance.
  3. L’ATR est retardé et ne peut pas être mis à jour en temps opportun dans des conditions de changement rapide.

La solution est simple:

  1. Les paramètres de l’indicateur sont testés et optimisés plusieurs fois pour trouver la meilleure combinaison de paramètres.
  2. Il est possible de considérer la possibilité de suspendre l’utilisation de cette stratégie en cas de forte tendance.
  3. En combinaison avec d’autres méthodes de stop loss, telles que le stop loss mobile ou le stop loss contrefait.

Direction d’optimisation

  1. Tester différentes combinaisons de paramètres, tels que le CCI et la dynamique, le RSI, le ATR, etc.
  2. Ajouter d’autres conditions de filtrage auxiliaires, telles que les modèles de prix, les variations de volume, etc.
  3. Modifier la gestion de la position, par exemple en définissant le ratio de position en fonction de la valeur ATR.
  4. Configurer des modèles de paramètres pour différentes variétés et périodes.
  5. Considérer la possibilité de suspendre le trading inverse dans le contexte d’une tendance, combinée à un mécanisme de suivi des tendances.

Résumer

Cette stratégie est principalement utilisée dans les situations de choc, pour obtenir des rendements plus stables en capturant les courts retournements de la ligne médiane. Elle aide à identifier les phénomènes de courte durée des prix et à générer des signaux de négociation basés sur plusieurs indicateurs.

Code source de la stratégie
/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-02 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/
// © MagicStrategies

//@version=5
strategy("Reversal Indicator Strategy", overlay = true)

// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'], tooltip='CCI or Momentum will be the final source of the Entry signal if selected.')
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(true, title='Find Regular Bullish/Bearish Divergence', tooltip='If checked, it will only consider an overbought or oversold condition that has a regular bullish or bearish divergence formed inside that level.')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level', tooltip='Adjusting the level to extremely high may filter out some signals especially when the option to find divergence is checked.')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level', tooltip='Adjusting this level extremely low may filter out some signals especially when the option to find divergence is checked.')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(false, 'Plot Mean Reversion Bands on the chart', tooltip='This function doesn\'t affect the entry of signal but it suggests buying when the price is at the lower band, and then sell it on the next bounce at the higher bands.')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.8, title='Outer Bands Multiplier', tooltip='Multiplier for both upper and lower bands')


// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)

// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought

// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]

// Entry Conditions
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)


// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na


// Plotting
plotshape(longEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(shortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

plot(upperBand, title='Upper Band', color=color.new(color.fuchsia, 0), linewidth=1)
plot(meanReversion, title='Mean', color=color.new(color.gray, 0), linewidth=1)
plot(lowerBand, title='Lower Band', color=color.new(color.blue, 0), linewidth=1)

// Entry signal alerts
alertcondition(longEntryCondition, title='BUY Signal', message='Buy Entry Signal')
alertcondition(shortEntryCondition, title='SELL Signal', message='Sell Entry Signal')
alertcondition(longEntryCondition or shortEntryCondition, title='BUY or SELL Signal', message='Entry Signal')

ema100 = ta.ema(close, 100)
plot(ema100, color=color.red)

// Define trading signals based on the original indicator's entry conditions
// Buy if long condition is met and price has pulled back to or below the 100 EMA
longCondition  = longEntryCondition and close <= ema100
// Sell if short condition is met and price has pulled back to or above the 100 EMA
shortCondition = shortEntryCondition and close >= ema100

// Strategy Entries
if longCondition
    strategy.entry("Buy", strategy.long)
if shortCondition
    strategy.entry("Sell", strategy.short)