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

Stratégie de négociation quantitative basée sur la décomposition du mode empirique

Auteur:ChaoZhang est là., Date: 2023-12-22 14:41:34 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est basée sur la méthode de décomposition en mode empirique (EMD) pour décomposer les séries de prix et extraire des caractéristiques de différentes bandes de fréquences, combinée à la moyenne pour générer des signaux de négociation.

La logique de la stratégie

  1. Utiliser la méthode EMD pour filtrer le prix et extraire les fluctuations de prix
  2. Calculer la moyenne mobile des séquences de pics et de creux
  3. Générer des signaux de négociation lorsque la ligne moyenne dépasse un certain pourcentage des lignes de pic et de creux
  4. Longue ou courte en fonction des signaux de négociation

Analyse des avantages

  1. La méthode EMD peut décomposer efficacement les séries de prix et extraire des caractéristiques utiles
  2. Les lignes de pic et de creux contrôlent la stratégie de négociation uniquement lorsque la fluctuation des prix est supérieure à une certaine amplitude
  3. Combiné avec la ligne moyenne, il peut filtrer efficacement les fausses éruptions

Analyse des risques

  1. Une mauvaise sélection des paramètres de la méthode EMD peut entraîner un surmonté
  2. Il faut un long cycle pour former un signal de transaction et ne peut pas s'adapter au trading à haute fréquence
  3. Incapable de faire face aux conditions du marché avec des fluctuations spectaculaires des prix

Directions d'optimisation

  1. Optimiser les paramètres du modèle EMD pour améliorer l'adaptabilité au marché
  2. Combiner d'autres indicateurs comme les signaux stop loss et take profit
  3. Essayez différentes séries de prix comme entrée de stratégie

Résumé

Cette stratégie utilise la méthode de décomposition du mode empirique pour extraire des caractéristiques de la série de prix et génère des signaux de trading basés sur les caractéristiques extraites, réalisant une stratégie de trading stable à moyen et long terme.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2017
// The related article is copyrighted material from Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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="Empirical Mode Decomposition")
Length = input(20, minval=1)
Delta = input(0.5)
Fraction = input(0.1)
reverse = input(false, title="Trade reverse")
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
xPeak =  iff (xBandpassFilter[1] > xBandpassFilter and xBandpassFilter[1] > xBandpassFilter[2], xBandpassFilter[1], nz(xPeak[1])) 
xValley =  iff (xBandpassFilter[1] < xBandpassFilter and xBandpassFilter[1] < xBandpassFilter[2], xBandpassFilter[1], nz(xValley[1])) 
xAvrPeak = sma(xPeak, 50)
xAvrValley = sma(xValley, 50)
nAvrPeak = Fraction * xAvrPeak
nAvrValley = Fraction * xAvrValley
pos = iff(xMean > nAvrPeak and xMean > nAvrValley, 1,
	     iff(xMean < nAvrPeak and xMean < nAvrValley, -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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xMean, color=red, title="Mean")
plot(nAvrPeak, color=blue, title="Peak")
plot(nAvrValley, color=blue, title="Valley")

Plus de