
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.
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:
L’histogramme MACD est retourné en rouge.
Entrée vide lorsque le prix est proche du bas du canal et que le MACD est sous l’axe zéro
Le prix est proche du sommet du canal et le MACD est au-dessus de l’axe zéro
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.
Vérification combinée multi-indicateurs pour éviter les fausses percées
Une combinaison d’indicateurs de différentes périodes permet de mieux évaluer les tendances
Introduction d’un mécanisme d’arrêt des pertes afin de contrôler efficacement les pertes individuelles
L’espace d’optimisation des paramètres est limité et facile à optimiser
Le paramètre de la passerelle de prix est trop bas, ce qui entraîne une perte importante.
Le point de rupture est trop petit et entraîne des pertes plus importantes.
La solution est simple:
Utilisez la méthode de marche en avant pour éviter les paramètres d’optimisation
Configurer le paramètre de canal de prix comme paramètre d’adaptation
Introduction d’un arrêt de fluctuation pour ajuster dynamiquement la distance d’arrêt
Optimiser la combinaison de paramètres MACD
Calcul des paramètres d’optimisation des canaux de prix
Ajout d’autres conditions de filtrage pour éviter les fausses percées et augmenter l’efficacité
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.
/*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)