Stratégie de combinaison d'indicateurs multi-momentum


Date de création: 2023-09-24 13:24:47 Dernière modification: 2023-09-24 13:24:47
Copier: 0 Nombre de clics: 823
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie utilise expérimentalement plusieurs combinaisons d’indicateurs de dynamique, tels que l’indicateur de dynamique de Chande, l’indicateur RMI, le triple HMA RSI, le double EVW RSI et le triple EMA RSI, pour déterminer la direction de la tendance et entrer en jeu lorsque tous les indicateurs émettent des signaux simultanément. Il s’agit d’une stratégie expérimentale à facteurs multiples.

Principe de stratégie

  1. Calculer l’indicateur de dynamique de Chande et définir sa ligne d’achat et de vente.

  2. Le RMI, le RSI Triple HMA, le RSI Double EVW et le RSI Triple EMA sont calculés à partir d’une série d’indicateurs.

  3. Définissez une ligne d’achat et une ligne de vente pour chaque indicateur.

  4. Lorsque l’indicateur de la dynamique de Chande se produit en traversant la ligne de vente vers le haut, vérifiez si d’autres indicateurs sont également en dessous de leur ligne de vente respective. Si tous les indicateurs remplissent les conditions en même temps, un signal de vente est généré.

  5. À l’inverse, un signal de vente est généré si Chande dépasse la ligne de vente sous l’indicateur de dynamique et que les autres indicateurs dépassent simultanément leur ligne de vente respective.

Avantages stratégiques

  1. Il existe plusieurs combinaisons d’indicateurs qui peuvent être vérifiés les uns par les autres pour éviter les erreurs de jugement.

  2. L’indicateur de dynamique de Chande est sensible aux changements de tendance et peut capturer efficacement les virages.

  3. L’indicateur RMI peut montrer le niveau de dynamisme pour juger de l’excédent de vente.

  4. Le RSI HMA, le RSI EVW et d’autres indicateurs sont testés de différentes manières pour calculer le RSI.

  5. La combinaison de plusieurs indicateurs permet de tester l’efficacité des indicateurs de manière flexible.

Risque stratégique

  1. La combinaison de plusieurs indicateurs est plus difficile à satisfaire, les signaux sont plus faibles et les opportunités peuvent être manquées.

  2. Il n’y a pas de contrôle des risques comme le stop loss.

  3. L’effet de l’indicateur est dépendant de la période et peut être insensible aux différentes périodes.

  4. Sans optimisation des paramètres, les paramètres de l’indicateur peuvent être mal définis.

  5. Les données de détection sont insuffisantes pour vérifier complètement la stratégie.

La réponse:

  1. Réduire la dépréciation de l’indicateur de manière appropriée pour offrir plus d’opportunités de trading.

  2. Ajouter un stop mobile ou un stop dur pour contrôler les pertes individuelles.

  3. Testé dans différents cycles et variétés, pour trouver les meilleurs paramètres.

  4. L’optimisation des paramètres est réalisée par des méthodes telles que l’apprentissage automatique ou la recherche sur grille.

  5. Les résultats de cette enquête ont été publiés dans le journal Le Monde, qui a publié un article sur le sujet.

Orientation de l’optimisation de la stratégie

  1. Testez différents paramètres de l’indicateur pour trouver la configuration optimale.

  2. Ajout d’une dynamique d’adaptation à plusieurs échelles de temps.

  3. Les investisseurs doivent être en mesure de détecter les tendances et d’éviter les transactions à contre-courant.

  4. L’apprentissage automatique est utilisé pour améliorer la pondération de plusieurs indicateurs.

  5. Le système de lignes uniformes a été introduit pour modifier le choix du moment de l’entrée sur le terrain.

Résumer

Cette stratégie essaie de trouver des points de retournement de tendance plus fiables en combinant plusieurs indicateurs de dynamique. Cette stratégie diversifiée a une forte marge d’expansion et d’optimisation, qui peut être utilisée pour choisir des paramètres, des poids d’indicateurs, des contrôles de risque, etc., afin d’obtenir plus d’opportunités de négociation conformes à la logique du système, en garantissant la qualité du signal.

Code source de la stratégie
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 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/
// © burgercrisis

//@version=4
strategy("RMI + Triple HMRSI + Double EVWRSI + TERSI Strategy")

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////


src = input(close, "Price", type = input.source)
CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length")

//CMO
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, CMOlength)
sm2 = sum(m2, CMOlength)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)




//RMI
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
length3 = input(title="RMI Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI Momentum ", type=input.integer, minval=1, defval=25)
up3 = rma(max(change(src, momentumLength3), 0), length3)
down3 = rma(-min(change(src, momentumLength3), 0), length3)

rmi3 = (down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3)))-50
//
//
// end RMI, end Alex Orekhov copywrite
//
//

lengthMA = input(7)
lengthRSI = input(14)
thrsi = hma(hma(hma(rsi(src, lengthRSI), lengthMA), lengthMA), lengthMA)
thrsi1 = (thrsi-50)*10

lengthMA2 = input(7)
lengthRSI2 = input(14)
devwrsi = ((ema(ema(vwma(rsi(src, lengthRSI2), lengthMA2), lengthMA2), lengthMA2))-50)*5

lengthMA3 = input(7)
lengthRSI3 = input(14)
tersi = ((ema(ema(ema(rsi(src, lengthRSI3), lengthMA3), lengthMA3), lengthMA3))-50)*10

rmirsi = ((thrsi*rmi3/25))

//Boundary Lines

obLevel1 = input(0, title="Chande Sellline")
osLevel1 = input(0, title="Chande Buyline")
hline(obLevel1, color=#0bc4d9)
hline(osLevel1, color=#0bc4d9)

obLevel2 = input(0, title="Triple HMRSI Sellline")
osLevel2 = input(0, title="Triple HMRSI Buyline")
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)

obLevel3 = input(0, title="DEVWRSI Sellline")
osLevel3 = input(0, title="DEVWRSI Buyline")
hline(obLevel3, color=#5a0bd9)
hline(osLevel3, color=#5a0bd9)

obLevel4 = input(0, title="TERSI Sellline")
osLevel4 = input(0, title="TERSI Buyline")
hline(obLevel4, color=#5a0bd9)
hline(osLevel4, color=#5a0bd9)

obLevel5 = input(0, title="RMI Sellline")
osLevel5 = input(0, title="RMI Buyline")
hline(obLevel5, color=#5a0bd9)
hline(osLevel5, color=#5a0bd9)

obLevel6 = input(0, title="RMI*RSI Sellline")
osLevel6 = input(0, title="RMI*RSI Buyline")
hline(obLevel6, color=#5a0bd9)
hline(osLevel6, color=#5a0bd9)

plot((thrsi1), title="THRSI")
plot(devwrsi, color=color.red, title="DEVWRSI")
plot(tersi, color=color.yellow, title="TERSI")
plot(rmirsi, color=color.purple, title="RMI*HMRSI")
plot(rmi3, color=color.orange, title="RMI")




longcondition1 = crossover(chandeMO, osLevel1)
shortcondition1 = crossunder(chandeMO, obLevel1)
longcondition2 = rmirsi<osLevel6 and rmi3<osLevel5 and tersi<osLevel4 and devwrsi<osLevel3 and thrsi1<osLevel2  and longcondition1
shortcondition2 = rmirsi>obLevel6 and rmi3>obLevel5 and tersi>obLevel4 and devwrsi>obLevel3 and thrsi1>obLevel2  and shortcondition1

if testPeriod()
    if longcondition2
        strategy.entry("Buy", strategy.long)
    if shortcondition2
        strategy.entry("Sell", strategy.short)






hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")