Stratégie de trading quantitative basée sur des indicateurs de double EMA et de volatilité des prix


Date de création: 2023-12-18 11:26:49 Dernière modification: 2023-12-18 11:26:49
Copier: 0 Nombre de clics: 651
1
Suivre
1621
Abonnés

Stratégie de trading quantitative basée sur des indicateurs de double EMA et de volatilité des prix

Aperçu

Cette stratégie est appelée stratégie de combinaison de l’indicateur de la ligne moyenne d’inclinaison et de la volatilité des prix. Elle combine une moyenne mobile à double exponentiel (DEMA) et un indicateur de la volatilité des prix pour générer un signal de négociation intégré.

Principe de stratégie

La stratégie est composée de deux volets:

  1. L’indicateur DEMA, qui calcule les moyennes mobiles indicielles du 20e et du 2e jour, génère un signal de transaction lorsque le prix franchit la ligne du 2e jour de haut en bas ou la ligne du 20e jour de bas en haut.

  2. L’indicateur reflète l’ampleur des fluctuations des prix au cours d’un cycle. Ici, nous calculons une moyenne mobile simple de 16 jours des indicateurs de fluctuation des 20 dernières lignes K, qui génère un signal de transaction lorsque la fluctuation de la ligne K actuelle est supérieure ou inférieure à cette moyenne.

La combinaison des deux ensembles de signaux, si le DEMA et l’indicateur de volatilité émettent un signal simultané, génère une instruction finale de négociation de plusieurs têtes ou de têtes vides.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La combinaison de plusieurs indicateurs permet de réduire les faux signaux et d’améliorer la fiabilité des signaux.

  2. La ligne 20 permet d’identifier efficacement les tendances à moyen et long terme, la ligne 2 capte les fluctuations à court terme, et l’utilisation combinée permet de faire face à différentes conditions de marché.

  3. L’indicateur de volatilité permet de refléter efficacement la volatilité du marché et les opportunités de négociation.

  4. En ajustant les paramètres, il est possible de s’adapter à différents types de marché et à différents cycles.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Dans les marchés tendanciels où la volatilité est faible, l’indicateur de volatilité peut générer de faux signaux. Le filtrage peut être effectué en combinaison avec d’autres indicateurs de liquidité.

  2. Dans un mouvement unilatéral rapide, une double EMA peut entraîner un retard. Les paramètres peuvent être raccourcis de manière appropriée ou combinés avec d’autres indicateurs.

  3. La combinaison de plusieurs indicateurs augmente la complexité de la stratégie et augmente le risque de sur-optimisation. Un retour complet et des tests de stabilité des paramètres sont nécessaires.

Direction d’optimisation

La stratégie peut également être optimisée pour:

  1. L’augmentation des mécanismes d’arrêt des pertes permet de contrôler efficacement chaque perte.

  2. Les paramètres sont optimisés en fonction des variétés et des périodes, ce qui les rend plus adaptables.

  3. Augmentation de la fluidité et de l’indicateur de volatilité en combinaison pour améliorer la qualité du signal.

  4. L’ajout d’algorithmes d’apprentissage automatique, de paramètres dynamiques et d’ajustement de poids.

Résumer

La stratégie, combinant une double EMA et des indicateurs de volatilité, permet d’obtenir de bonnes performances de négociation dans les marchés en tendance et en tremblement. Il existe également un certain risque qui nécessite une optimisation et une amélioration supplémentaires. Mais dans l’ensemble, la stratégie est claire et a une valeur opérationnelle réelle.

Code source de la stratégie
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//  This histogram displays (high-low)/close
//  Can be applied to any time frame.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


HLCH(input_barsback,input_percentorprice,input_smalength) =>
    pos = 0.0
    xPrice = (high-low)/close
    xPriceHL = (high-low)
    xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL
    xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength)
    pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 :
    	     xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0)
    pos

strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ (H-L)/C Histogram  ═════●'
input_barsback = input(20, title="Look Back", group=I2)
input_percentorprice = input(false, title="% change", group=I2)
input_smalength = input(16, title="SMA Length", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength)
iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosHLCH == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)