Stratégie de trading multi-périodes basée sur les canaux de prix et le MACD


Date de création: 2023-12-08 15:15:37 Dernière modification: 2023-12-08 15:15:37
Copier: 0 Nombre de clics: 616
1
Suivre
1621
Abonnés

Stratégie de trading multi-périodes basée sur les canaux de prix et le MACD

Aperçu

La stratégie combine l’indicateur de la chaîne de prix et l’indicateur MACD pour permettre le suivi de la tendance et le jugement de l’excédent d’achat et de vente sur plusieurs périodes de temps, afin de prendre des décisions d’achat et de vente. La stratégie est également associée à un stop-loss pour gérer les risques.

Principe de stratégie

L’indicateur de canal de prix construit un canal de prix sur la base de la moyenne EMA des prix les plus élevés et les plus bas, en jugeant la tendance par la rupture du canal de prix; l’indicateur MACD juge la tendance à la pluralité d’air, au-dessus de l’axe zéro pour le marché à plusieurs têtes, ci-dessous pour le marché vide.

Les signaux de transaction de cette stratégie proviennent des aspects suivants:

  1. L’histogramme MACD est retourné en rouge.

  2. Entrée vide lorsque le prix est proche du bas du canal et que le MACD est sous l’axe zéro

  3. Le prix est proche du sommet du canal et le MACD est au-dessus de l’axe zéro

  4. Le MACD est en tête-à-tête en haut de l’axe zéro et en bas de l’axe zéro.

Le signal d’exit provient du réglage du stop-loss.

Avantages stratégiques

  1. Vérification combinée multi-indicateurs pour éviter les fausses percées

  2. Une combinaison d’indicateurs de différentes périodes permet de mieux évaluer les tendances

  3. Introduction d’un mécanisme d’arrêt des pertes afin de contrôler efficacement les pertes individuelles

Risque stratégique

  1. L’espace d’optimisation des paramètres est limité et facile à optimiser

  2. Le paramètre de la passerelle de prix est trop bas, ce qui entraîne une perte importante.

  3. Le point de rupture est trop petit et entraîne des pertes plus importantes.

La solution est simple:

  1. Utilisez la méthode de marche en avant pour éviter les paramètres d’optimisation

  2. Configurer le paramètre de canal de prix comme paramètre d’adaptation

  3. Introduction d’un arrêt de fluctuation pour ajuster dynamiquement la distance d’arrêt

Orientation de l’optimisation de la stratégie

  1. Optimiser la combinaison de paramètres MACD

  2. Calcul des paramètres d’optimisation des canaux de prix

  3. Ajout d’autres conditions de filtrage pour éviter les fausses percées et augmenter l’efficacité

Résumer

Cette stratégie intègre les avantages de l’indicateur de canal de prix et de l’indicateur MACD, un espace de paramétrage et d’optimisation raisonnable, une meilleure efficacité dans le jugement de la tendance et le jugement de surachat et de survente, le mécanisme de stop-loss contrôle le risque de perte unique, une stratégie de négociation plus stable. Les améliorations ultérieures peuvent être apportées par l’optimisation des paramètres, l’ajout de conditions de filtrage et l’optimisation du mécanisme de stop-loss.

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

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.00, title="Stop Loss Point", type=float, step=1)
rr= input(defval=0.1,title="Reward/Risk",type=float)
useTPandSL = input(defval = false, title = "Use exit order strategy?")
Stop = SL
Take=SL*rr
Q = 100
if(useTPandSL)
    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)