Stratégie de négociation combinée basée sur la double EMA et le filtre à bande passante

Auteur:ChaoZhang est là., Date: 2024-01-17 11h22h30
Les étiquettes:

img

Résumé

Cette stratégie combine les indicateurs de la moyenne mobile exponentielle double (DEMA) et du filtre à dépassement de bande (BPF) pour mettre en œuvre un double filtrage des achats de rupture et des surachats de survente, formant des signaux de négociation stables et poursuivant une rentabilité maximale.

Principe de stratégie

La stratégie est composée de deux sous-stratégies:

  1. Stratégie de la DEMA

    Il utilise les moyennes mobiles exponentielles doubles de 2 jours et de 20 jours pour générer des signaux d'achat croisé doré et de vente croisée morte.

  2. Stratégie du BPF

    L'indicateur BPF combine des transformations mathématiques pour détecter les composantes cycliques des prix et forme des zones de surachat-survente dans une certaine période pour générer des signaux de trading.

La combinaison des deux fournit une vérification plus solide de la tendance et des facteurs cycliques lorsque des signaux d'achat/vente simultanés émergent.

Analyse des avantages

Le plus grand avantage de cette stratégie est le double filtre d'indicateur qui rend les signaux plus stables et fiables. DEMA aplatit les prix et identifie les directions de tendance; BPF reconnaît les caractéristiques cycliques et détermine les zones de surachat-survente. La validation croisée entre les deux peut réduire considérablement les faux signaux causés par le bruit des prix et les ajustements cycliques.

En outre, la stratégie elle-même a une fréquence de négociation peu fréquente, évitant ainsi des coûts de capital et de commission excessifs dus à une surtrading.

Analyse des risques

Le plus grand risque de cette stratégie est de mal juger l'état du marché. Elle est sujette à des signaux erronés dans les marchés variés et pourrait subir de gros stops-loss lorsque les tendances s'inversent. De plus, les paramètres peuvent également avoir un impact considérable sur la performance de la stratégie.

Pour faire face à ces risques, des méthodes telles que l'optimisation des paramètres de l'indicateur, la définition d'arrêt des pertes / prise de bénéfices, la combinaison d'autres indicateurs, etc. peuvent être adoptées pour le contrôle et l'amélioration.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimisation du cycle de temps: tester différents paramètres DEMA et BPF pour déterminer les combinaisons optimales de périodes.

  2. Ajoutez des paramètres stop loss/take profit. Réglez raisonnablement les amplitudes de stop loss pour éviter l'agrandissement des pertes; prenez des profits de manière appropriée pour verrouiller les gains partiels.

  3. Ajoutez d'autres filtres d'indicateur tels que le volume, le MACD, etc. pour éviter les signaux trompeurs du déblocage de volume élevé et du renversement de position.

  4. Optimisation adaptative des paramètres. Rendre les paramètres DEMA et BPF adaptables en fonction des dernières conditions du marché pour maintenir la rapidité des indicateurs.

Conclusion

La stratégie intègre les forces des deux indicateurs EMA et BPF avec un double filtrage pour améliorer la qualité du signal et poursuivre des bénéfices stables à moyen et long terme. Les risques proviennent principalement d'erreurs de jugement sur les conditions du marché et d'un réglage inadéquat des paramètres. Des méthodes telles que la validation multi-indicateur et l'optimisation dynamique des paramètres peuvent rendre la stratégie plus élastique et adaptable pour une plus grande rentabilité.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/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
// The related article is copyrighted material from
// Stocks & Commodities Mar 2010
//
//
// 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


BPF(Length,Delta,SellZone,BuyZone) =>
    pos = 0.0
    xPrice = hl2
    beta = math.cos(3.14 * (360 / Length) / 180)
    gamma = 1 / math.cos(3.14 * (720 * Delta / Length) / 180)
    alpha = gamma - math.sqrt(gamma * gamma - 1)
    BP = 0.0
    BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
    pos:= BP > SellZone ? 1 :
    	   BP <= BuyZone? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bandpass Filter', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Bandpass Filter  ═════●'
LengthBPF = input.int(20, minval=1, group=I2)
Delta = input(0.5, group=I2)
SellZone = input.float(5, step = 0.01, group=I2)
BuyZone = input.float(-5, step = 0.01, 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)
prePosBPF = BPF(LengthBPF,Delta,SellZone,BuyZone)
iff_1 = posEMA20 == -1 and prePosBPF == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBPF == 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)

Plus de