Stratégie de négociation sur plusieurs délais basée sur le canal de prix et le MACD

Auteur:ChaoZhang est là., Date: 2023-12-08 15:15:37 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur de canal de prix et l'indicateur MACD pour suivre les tendances et identifier les niveaux de surachat et de survente sur plusieurs délais, prenant ainsi des décisions d'achat et de vente.

La logique de la stratégie

L'indicateur de canal de prix construit un canal de prix basé sur les lignes EMA des prix les plus élevés et les plus bas pour déterminer les tendances lorsque le prix sort du canal.

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

  1. Entrez long lorsque l'histogramme MACD tourne en rouge. Entrez court lorsque l'histogramme MACD tourne en vert.

  2. Entrez en short lorsque le prix se rapproche du bas du canal et que le MACD est en dessous de la ligne zéro.

  3. Entrez long lorsque le prix s'approche du haut du canal et que le MACD est au-dessus de la ligne zéro.

  4. Entrez long lorsque le MACD dépasse la ligne zéro. Entrez court lorsque le MACD dépasse la ligne zéro.

Les sorties sont déclenchées par le stop loss et le take profit.

Les avantages de la stratégie

  1. Une combinaison d'indicateurs empêche une fausse rupture.

  2. La combinaison d'indicateurs à travers les délais assure une détection fiable des tendances.

  3. L'incorporation de contrôles de stop loss et de profit par perte de transaction.

Risques liés à la stratégie

  1. L'espace d'optimisation limité conduit à une sur-optimisation.

  2. Un prix bas sur le canal échappe à des mouvements plus importants.

  3. Un stop loss serré entraîne des pertes plus importantes.

Les solutions:

  1. Adopter l'optimisation de marche vers l'avant pour éviter une suroptimisation.

  2. Mettre en place des paramètres adaptatifs pour le canal de prix.

  3. Introduire un stop loss basé sur la volatilité pour un ajustement dynamique de la distance d'arrêt.

Directions de l'optimisation

  1. Optimiser la combinaison des paramètres du MACD.

  2. Optimiser le calcul adaptatif des paramètres des canaux de prix.

  3. Ajouter plus de filtres pour prévenir les fausses fuites et améliorer l'efficacité.

Résumé

Cette stratégie combine les atouts du canal de prix et du MACD par des paramètres raisonnables et un grand espace d'optimisation. Elle fonctionne bien dans la détection de tendance et l'identification des surachats / survente. Le mécanisme de stop loss / take profit contrôle la perte par transaction. À l'avenir, des améliorations peuvent être apportées en optimisant les paramètres, en ajoutant des filtres et en optimisant le mécanisme de stop loss.


/*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)

Plus de