Stratégie de l'oscillateur décentralisé de DiNapoli

Auteur:ChaoZhang est là., Date: 23 février 2023
Les étiquettes:

Résumé

Cette stratégie génère des signaux de négociation basés sur l'oscillateur décentralisé DiNapoli. Il reflète les niveaux de surachat/survente par la différence entre le prix et la moyenne mobile, visant à identifier les opportunités d'inversion. Les signaux sont générés lorsque l'oscillateur franchit un seuil.

La logique de la stratégie

Les éléments clés sont les suivants:

  1. Moyenne mobile: Calcule la ligne de base de la tendance.

  2. Indicateur de différence: prix moins moyenne mobile forme l'oscillateur.

  3. Traverser ce niveau déclenche des signaux.

  4. Signal long: l'oscillateur dépasse le seuil.

  5. Signal court: l'oscillateur dépasse le seuil.

  6. Option inverse: retourne les signaux long/court.

La stratégie vise à capturer les revers à court terme en identifiant les divergences entre le prix et la tendance.

Les avantages

Comparé à d'autres stratégies d'inversion, les avantages sont les suivants:

  1. Une logique simple et intuitive, facile à mettre en œuvre.

  2. Paramètres minimaux, vérification pratique.

  3. Flexibilité dans le réglage des paramètres pour différentes périodes.

  4. Option inverse adaptée à différents marchés.

  5. Éliminer les arrêts et les sorties pour contrôler les risques.

  6. Des tirages relativement faibles, réglables par paramètres.

  7. Le potentiel d'optimisation avec l'apprentissage automatique.

  8. Généralement, un bon profil risque/rendement pour les transactions à court terme.

Les risques

Toutefois, les principaux risques sont les suivants:

  1. Une trop grande dépendance à l'égard de l'optimisation des paramètres risque d'entraîner une suradaptation.

  2. Retard dans la moyenne mobile et l'oscillateur.

  3. Manque de confirmation par d'autres variables.

  4. L'effet du timing peut se dégrader selon les marchés en évolution.

  5. Difficile à générer de façon persistante, nécessite des ajustements fréquents.

  6. Besoin de surveiller les rapports bénéfice/risque et la fluidité de la courbe.

  7. La fréquence élevée des échanges augmente les coûts de transaction.

  8. La robustesse sur les marchés exige une validation.

Améliorations

Sur la base de l'analyse, les améliorations peuvent inclure:

  1. Je teste différents paramètres de moyenne mobile.

  2. J'ajoute une confirmation de volume.

  3. Mettre en place des arrêts et des sorties pour contrôler les risques.

  4. Évaluation de la robustesse sur différents marchés et délais.

  5. Tests antérieurs de fenêtres roulantes pour vérification continue.

  6. J'ajuste le dimensionnement de la position à une fréquence plus basse.

  7. Incorporer l'apprentissage automatique pour de meilleurs paramètres.

  8. Optimiser les stratégies globales de gestion des risques.

  9. Des itérations continues pour s'adapter à l'évolution des marchés.

Conclusion

En résumé, il s'agit d'une idée de stratégie relativement simple d'inversion de la moyenne. Un ajustement correct des paramètres peut donner de bons résultats. Mais prévenir le surajustement et atteindre un succès persistant nécessitent un backtesting, une optimisation et des améliorations continues à partir de plusieurs dimensions.


/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/12/2016
// DiNapoli Detrended Oscillator Strategy
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="DiNapoli Detrended Oscillator Strategy Backtest")
Length = input(14, minval=1)
Trigger = input(0)
reverse = input(true, title="Trade reverse")
hline(Trigger, color=gray, linestyle=line)
xSMA = sma(close, Length)
nRes = close - xSMA
pos = iff(nRes > Trigger, 1,
	   iff(nRes <= Trigger, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
         iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
plot(nRes, color=blue, title="DiNapoli")
barcolor(possig == -1 ? red: possig == 1 ? green : blue )

Plus de