Cette stratégie expérimentale combine le momentum de Chande, le RMI, le triple HMA RSI, le double EVW RSI, le triple EMA RSI et d'autres indicateurs de momentum, en entrant dans des positions lorsque tous les indicateurs donnent des signaux alignés.
Calculer l'élan de Chande et définir ses lignes d'achat et de vente.
Le montant de l'indemnité de dépôt est calculé en fonction de la valeur de l'indemnité.
Définir des lignes d'achat et de vente pour chaque indicateur.
Lorsque le momentum de changement dépasse sa ligne d'achat, vérifiez si d'autres indicateurs sont également en dessous de leurs lignes d'achat respectives.
À l'inverse, lorsque la dynamique de Chande traverse la ligne de vente, tandis que d'autres indicateurs dépassent leurs lignes de vente, ils génèrent un signal court.
La combinaison d'indicateurs permet une validation mutuelle, évitant ainsi de faux signaux.
Chande Momentum capte avec sensibilité les changements de tendance.
L'indicateur RMI indique les niveaux de dynamique pour identifier les niveaux de surachat/survente.
Test de différents calculs du RSI avec le RSI HMA, le RSI EVW, etc.
Une combinaison flexible de plusieurs indicateurs permet de tester l'efficacité des indicateurs.
Les exigences pour les combinaisons multi-indicateurs sont plus difficiles à satisfaire, moins de transactions, des opportunités manquées.
Aucun mécanisme de contrôle des risques comme le stop loss.
Les performances des indicateurs dépendent des délais et peuvent ne pas fonctionner sur toutes les périodes.
Pas d'optimisation des paramètres, un mauvais réglage des paramètres possible.
Des données insuffisantes pour valider pleinement la stratégie.
Des solutions possibles:
Réduire les seuils d'indicateur pour plus de transactions.
Pour limiter les pertes, intégrer un retard ou un arrêt dur.
Testez sur différents produits et délais pour trouver les paramètres optimaux.
Utilisez l'apprentissage automatique ou la recherche en grille pour optimiser les paramètres.
Des tests de retour sur plus de marchés pour assurer la robustesse.
Testez différents ensembles de paramètres pour trouver la configuration optimale.
Ajouter des indicateurs de momentum adaptatifs à échelle temporelle multiple.
Incorporer la détection de tendance pour éviter les transactions contre-tendance.
Utiliser l'apprentissage automatique pour améliorer la pondération multi-indicateurs.
Combinez avec le système de moyenne mobile pour améliorer les entrées.
Cette stratégie tente d'identifier des tournants de tendance plus fiables en combinant plusieurs indicateurs de dynamique. La logique diversifiée a une grande extensibilité et un potentiel d'optimisation dans des domaines tels que la sélection de paramètres, la pondération des indicateurs, le contrôle des risques, etc., afin d'acquérir plus de signaux de qualité tout en assurant la robustesse, mais des risques tels que l'ajustement de la courbe doivent être gérés.
/*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")