Stratégie d'action des prix


Date de création: 2023-09-19 11:17:07 Dernière modification: 2023-09-19 11:17:07
Copier: 2 Nombre de clics: 743
1
Suivre
1617
Abonnés

Aperçu

Il s’agit d’une stratégie de négociation basée sur les mouvements de prix, combinée à l’identification de tendances par l’indicateur de la ligne de parité et à l’utilisation de la forme des prix pour l’entrée.

Principe de stratégie

La stratégie est basée sur les éléments suivants:

  1. Lorsque l’EMA de 89 cycles et la Hull MA sont rouges, il est jugé comme une tendance à la baisse, mais seulement à la baisse; lorsque les deux moyennes sont vertes, il est jugé comme une tendance haussière, mais plus; quand une est verte et une est rouge, il est jugé comme une secousse, plus ou moins.

  2. Utilisez des signaux de reconnaissance de formes de prix. Utilisez des stratégies de reconnaissance de plusieurs combinaisons de lignes négatives et positives, telles que des lignes d’entités simples, des formes de fausses ruptures, des lignes mères, etc., pour identifier les points d’entrée potentiels.

  3. La stratégie consiste à intégrer les points de résistance de soutien à l’entrée de la résistance de soutien, afin de vérifier davantage les signaux de tendance des prix et d’éviter les fausses ruptures.

  4. Le MACD aide à la prise de décision. La couleur des lignes colonnadées de l’indicateur MACD permet de vérifier les signaux de forme des prix et d’améliorer le taux de réussite.

  5. Le module de suivi des tendances a été ajouté à la stratégie, ce qui permet de déterminer avec plus de précision les points de basculement des tendances et d’éviter les pics et les pics.

  6. La stratégie a ajouté un module de stop loss et stop loss basé sur les valeurs ATR, ce qui permet de maîtriser le ratio de profit / perte.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Basé sur la tendance des prix, non influencé par les indicateurs. Basé uniquement sur les prix, non influencé par des indicateurs complexes, plus proche de la source du marché.

  2. En utilisant la logique de la tendance, évitez de chercher le haut et le bas. Rejoignez l’EMA et la Hull MA pour identifier la direction de la tendance, opérez uniquement dans la direction de la tendance et évitez d’entrer en jeu en contre-courant.

  3. La combinaison de la forme avec l’indicateur augmente le taux de réussite. La forme du prix et l’indicateur MACD se vérifient mutuellement, permettant de filtrer les faux signaux et d’améliorer la probabilité de réaliser des bénéfices.

  4. Le mécanisme de suivi de tendances permet de saisir les grandes tendances. Le module de suivi de tendances permet de saisir les tendances sur de plus longues périodes de temps, ce qui donne une plus grande marge de profit.

  5. Il y a un mécanisme d’arrêt de perte et un risque contrôlable. Un taux d’arrêt de perte fixe est défini pour aider à maîtriser le ratio de profit et de perte et à contrôler les risques.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Risque de retournement de la tendance à grande période. La stratégie ne convient qu’aux opérations dans des tendances plus claires sur les courts courants moyens. Si une reprise de tendance à grande période se produit, elle est stoppée.

  2. Risque de défaillance des formes de prix. Les formes de prix varient considérablement en fonction de l’environnement du marché. Dans certains cas, les formes de prix ne fonctionnent pas comme prévu, ce qui entraîne un arrêt du système.

  3. Difficulté d’optimisation des paramètres. Les stratégies comportent de nombreux paramètres, et les différentes combinaisons de paramètres ont une grande influence sur les résultats.

  4. L’impossibilité de contrôler efficacement le risque sur une seule transaction. Le paramètre de stop-loss fixe rend difficile la prise en compte de la volatilité de chaque transaction et l’impossibilité de contrôler de manière ciblée le pourcentage de pertes sur une seule transaction. Des algorithmes de stop-loss dynamiques ou des modules de contrôle du risque peuvent être introduits.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. L’introduction de l’apprentissage automatique pour identifier des formes de prix plus complexes. L’utilisation de techniques telles que l’apprentissage en profondeur pour identifier automatiquement des formes plus efficaces.

  2. Augmentation de l’adaptabilité. Mise en place d’un mécanisme d’optimisation des paramètres dynamiques permettant aux paramètres de stratégie de s’adapter au marché en temps réel plutôt qu’à des paramètres statiques.

  3. Ajouter plus de signaux de vérification de facteurs. Ajouter plus de facteurs de tendance des prix, tels que le volume des transactions, les écarts d’une nuit, etc. pour vérifier, réduire le risque d’être piégé.

  4. L’introduction de modules de gestion des vents et des positions. Adaptation automatique de la taille des positions en fonction de la dépréciation, contrôle efficace des pertes ponctuelles et optimisation du ratio de profit / perte.

  5. Optimisation des mécanismes d’admission. Les modules de jugement de tendance peuvent être affinés pour identifier un rythme de tendance plus clair et accéléré afin d’améliorer le taux de réussite des admissions.

Résumer

Dans l’ensemble, le principal avantage de cette stratégie réside dans le fait qu’elle est basée sur les tendances des prix, évitant de s’appuyer sur des indicateurs et reflétant au maximum la nature du marché. La combinaison de tendances et d’indicateurs améliore la probabilité de profit et ajoute des risques de contrôle de stop-loss.

Code source de la stratégie
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",true]]
*/

//@version=2
// strategy(title="Price Action", shorttitle="Price Action", overlay=true,default_qty_value=2000,initial_capital=1000,currency=currency.USD, pyramiding=1,calc_on_every_tick=true)
// EMA //
HiLoLen = 34
pacL = ema(low,HiLoLen)
pacC = ema(close,HiLoLen)
pacH = ema(high,HiLoLen)
signalMA = ema(close,89)
col1=pacC>signalMA?lime:pacC<signalMA?red:yellow
plot(signalMA, color=col1, title="SignalMA")
// 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)
//C=plot(pacC, color=yellow, style = line, linewidth=1, title="Close PAC EMA",transp=0)
//H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
// HullMA //
n=89
//
n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))
//
n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))
//
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
condDown = n2 >= n1
condUp = condDown != true
col =condUp ? lime : condDown ? red : yellow
plot(n1,title="Hull MA", color=col,linewidth=1)
// Macd Barcolor
fastlength = 12
slowlength = 26
MACDLength = 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)))
//Swing high low// 
ktswinghigh=(high<=high[2] and high[1]<=high[2] and high[3]<=high[2] and high[4]<=high[2])// and high<high[1] and high[4]<high[3]) or (high<high[1] and high[1]<high[2] and high[4]<high[2] and high[5]<high[2] and high[3]<high[2]) 
ktswinghigh3=(high<high[1] and high[1]<high[3] and high[5]<high[3] and high[6]<high[5]and high[2]<high[3] and high[4]<high[3]) or(high<high[3] and high[2]<high[3] and high[1]<high[3] and high[4]<high[3] and high[5]<high[4])
sh=ktswinghigh?high[2]:na
swinghigh = fixnan(sh)
colorsh=swinghigh==swinghigh[1]?white:na
plot(swinghigh,color=colorsh,title="Swing High",style=line,offset=-2)

ktswinglow=(low>=low[2] and low[1]>=low[2] and low[3]>=low[2] and low[4]>=low[2])// and low>low[1] and low[4]>low[3]) or (low>low[1] and low[1]>low[2] and low[4]>low[2] and low[5]>low[2] and low[3]>low[2])
ktswinglow3=low>low[1] and low[1]>low[3] and low[5]>low[3] and low[6]>low[5]  and low[2]>low[3] and low[4]>low[3] or (low>low[3] and low[1]>low[3] and low[2]>low[3] and low[4]>low[3] and low[5]>low[4])
sl=ktswinglow?low[2]:na
swinglow = fixnan(sl)
colorsl=swinglow==swinglow[1]?white:na
plot(swinglow,title="Swing Low",color=colorsl,style=line,offset=-2)

// Pinbar FailBreak
ema21=ema(close,13)
beariskpinbar= (close-open<(high-low)/3 and open-close<(high-low)/3)  and ((high>swinghigh and high>high[1] and high>high[2] and high>high[3] and close<swinghigh))// or ((open[2]<ema21[2] or close[2]<ema21[2]) and high>ema21 and low[2]<low[1] and low[3]<low[2] and high>high[1] and high>high[2] and high>high[3]))
bullishpibar=(close-open<(high-low)/3 and open-close<(high-low)/3)  and ((low<swinglow and low<low[1] and low<low[2] and low<low[3] and close>swinglow))// or ((open[2]>ema21[2] or close[2]>ema21[2]) and low<ema21 and high[2]>high[1] and high[3]>high[2] and low<low[1] and low<low[2] and low<low[3]))

//
Inside(position) => high <= high[position] and low >= low[position]
outsidebar = (high >= high[1] and low <= low[1])
barcolor((high <= high[1] and low >= low[1]) ? white : na)
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : hisup==-1 and MACD>0  ? green: orange )
barcolor(bullishpibar or beariskpinbar ?white:na)
secLast = 1
fakey = (high[1] <= high[2] and low[1] >= low[2] and high > high[2] and close >= low[2] and close < high[2]) or (high[2]<=high[3] and low[2]>=low[3] and high[1]>high[2] and close<high[2] and close>low[3] and high-close>0.75*(high-low))// ? red : na
fakey1 = (high[1] <= high[2] and low[1] >= low[2] and low < low[2] and close > low[2] and close <= high[1]) or (high[2]<=high[3] and low[2]>=low[3] and low[1]<low[2] and close>low[2] and close<high[3] and close-low>0.75*(high-low)) //? lime : na
barcolor(fakey or fakey1?white:na)
//plotshape(beariskpinbar and (not fakey or (fakey and outsidebar)) , title= "Pinbar Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="Pinbar",size=size.tiny)
//plotshape(bullishpibar  and (not fakey1 or (fakey1 and outsidebar)), title= "Pinbar Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="Pinbar",size=size.tiny)

//insidebar= Inside(secLast)? #FF9800: na
onewhitesoliderbear=  close<open and high[1]-close>0.5*(high[1]-low[1]) and (open-close)>2/3*(high-low) and (high[1]>ema21[1] or high>ema21) and open[1]<ema21[1] and close-low<(high-close)*0.3 and (open[2]<ema21[2] or close[2]<ema21[2]) and close<ema21 and low[2]<low[1] and low[3]<low[2]
onewwhitesoliderbull=  close>open and close-low[1]>0.5*(high[1]-low[1]) and (close-open)>2/3*(high-low) and (low[1]<ema21[1] or low<ema21) and open[1]>ema21[1] and high-close<(close-low)*0.3  and (open[2]>ema21[2] or close[2]>ema21[2]) and close>ema21 and high[2]>high[1] and high[3]>high[2]
onewhitesoliderbear1=  close<open and high[1]-close>0.5*(high[1]-low[1]) and (open-close)>2/3*(high-low) and (high[1]>pacC[1] or high>pacC) and open[1]<pacC[1] and close-low<(high-close)*0.3 and (open[2]<pacC[2] or close[2]<pacC[2]) and close<pacC and low[2]<low[1] and low[3]<low[2]
onewwhitesoliderbull1=  close>open and close-low[1]>0.5*(high[1]-low[1]) and (close-open)>2/3*(high-low) and (low[1]<pacC[1] or low<pacC) and open[1]>pacC[1] and high-close<(close-low)*0.3  and (open[2]>pacC[2] or close[2]>pacC[2]) and close>pacC and high[2]>high[1] and high[3]>high[2]
onewhitesoliderbear2=  close<open and high[1]-close>0.5*(high[1]-low[1]) and (open-close)>2/3*(high-low) and (high[1]>signalMA[1] or high>signalMA) and open[1]<signalMA[1] and close-low<(high-close)*0.3 and (open[2]<signalMA[2] or close[2]<signalMA[2]) and close<signalMA and low[2]<low[1] and low[3]<low[2]
onewwhitesoliderbull2=  close>open and close-low[1]>0.5*(high[1]-low[1]) and (close-open)>2/3*(high-low) and (low[1]<signalMA[1] or low<signalMA) and open[1]>signalMA[1] and high-close<(close-low)*0.3  and (open[2]>signalMA[2] or close[2]>signalMA[2]) and close>signalMA and high[2]>high[1] and high[3]>high[2]

//plotshape(beariskpinbar and (not fakey or (fakey and outsidebar)) and not onewhitesoliderbear and not onewwhitesoliderbull, title= "Pinbar Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="Pinbar",size=size.tiny)
//plotshape(bullishpibar  and (not fakey1 or (fakey1 and outsidebar)) and not onewwhitesoliderbull and not onewhitesoliderbear, title= "Pinbar Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="Pinbar",size=size.tiny)

//

//pinbar=(open>ema21 and low<ema21 and close-low>2*(high-close)) or (open[1]>ema21[1] and low[1]<ema21[1] and (close-low[1]>2*(high[1]-close) or close-low>2*(high[1]-close)))? green:na
//pinbar2=(open<ema21 and high>ema21 and high-close>2*(close-low)) or (open[1]<ema21[1] and high[1]>ema21[1] and (high[1]-close>2*(close-low[1]) or high-close>2*(close-low[1])))?orange:na
//plot(ema21)
//bgcolor(insidebar, transp=70)
//bgcolor(fakey, transp=80)
//bgcolor(fakey1, transp=80)
//bgcolor(pinbar, transp=70)
//bgcolor(pinbar2, transp=70)

insidebar = ((high[1] <= high[2] and low[1] >= low[2]) and not(outsidebar))
barcolor(outsidebar and high[1]<=high[2] and low[1]>=low[2]?white:na)
bearishibbf=( insidebar and (high > high[1] and close < high[1]))
//barcolor( bearishibbf ? white : na, 0, true, "Bearish Inside Bar Breakout Failure")
//plotshape(bearishibbf and not fakey, title= "Bearish Inside Bar Breakout Failure", location=location.abovebar, color=white, style=shape.arrowdown, text="InsideBar\nFailBreak",size=size.tiny)

bullishibbf=(insidebar and (low < low[1] and close > low[1]))
//barcolor( bullishibbf ? white : na, 0, true, "Bullish Inside Bar Breakout Failure")
//plotshape(bullishibbf and not fakey1, title= "Bullish Inside Bar Breakout Failure", location=location.belowbar, color=white, style=shape.arrowup, text="InsideBar\nFailBreak",size=size.tiny)
//
barcolor((onewwhitesoliderbull or onewhitesoliderbear) and not insidebar?white:na)
//

// Outsidebar follow Insidebar
///plotshape(outsidebar and ((high[1]<=high[2] and low[1]>=low[2] ) ) and close<ema21 and not beariskpinbar and not bullishpibar, title= "OutsideBar Break InsideBar", location=location.abovebar, color=white, style=shape.arrowdown, text="Outside\nBar",size=size.tiny)
//plotshape(outsidebar and ((high[1]<=high[2] and low[1]>=low[2]) ) and close>ema21 and not beariskpinbar and not bullishpibar, title= "OutsideBar Break InsideBar", location=location.belowbar, color=white, style=shape.arrowup, text="Outside\nBar",size=size.tiny)
//
whitesoldierreversal= ((low[1]<low[2] and low[2]<low[3]) or (high[1]<high[2] and high[2]<high[3])) and low[3]<low[8] and low[8]<ema21[8] and high[2]<ema21[2] and high[1]<ema21[1]  and high[3]<ema21[3] and close-low[1]>(high[1]-close) and (open<close[1] or open<open[1]) and close-open>0.3*(high-low) and high-close<0.5*(close-open)
blackcrowreversal= ((high[1]>high[2] and high[2]>high[3]) or (low[1]>low[2] and low[2]>low[3])) and high[3]>high[8] and high[8]>ema21[8] and low[2]>ema21[2] and low[1]>ema21[1] and low[3]>ema21[3] and close-low[1]<(high[1]-close) and (open>close[1] or open>open[1]) and open-close>0.3*(high-low) and close-low<0.5*(open-close)
// Black Crow and White Soldier Reversal
//plotshape(whitesoldierreversal, title= "Piercing Pattern", location=location.belowbar, color=white, style=shape.arrowup, text="Piercing",size=size.tiny)
//plotshape(blackcrowreversal, title= "Dark Cloud Cover", location=location.abovebar, color=white, style=shape.arrowdown, text="Dark\nCloud",size=size.tiny)
barcolor(blackcrowreversal or whitesoldierreversal?white:na)
//
pinbarreversalbull= ((low[1]<low[2] and low[2]<low[3]) or (high[1]<high[2] and high[2]<high[3])) and low[3]<low[8] and low[8]<ema21[8] and high[2]<ema21[2] and high[1]<ema21[1]  and high[3]<ema21[3] and close-open<(high-low)/3 and open-close<(high-low)/3 and high-close<close-low and low<low[1]
pinbarreversalbear= ((high[1]>high[2] and high[2]>high[3])or (low[1]>low[2] and low[2]>low[3])) and high[3]>high[8] and high[8]>ema21[8] and low[2]>ema21[2] and low[1]>ema21[1] and low[3]>ema21[3] and close-open<(high-low)/3 and open-close<(high-low)/3 and high-close>close-low and high>high[1]
// Pinbar Reversal
//plotshape(pinbarreversalbull and not whitesoldierreversal and not fakey1 and not blackcrowreversal and not whitesoldierreversal and not bullishpibar, title= "Bullish Pinbar Reversal", location=location.belowbar, color=white, style=shape.arrowup, text="Pinbar",size=size.tiny)
//plotshape(pinbarreversalbear and not blackcrowreversal and not fakey and not whitesoldierreversal and not blackcrowreversal and not beariskpinbar, title= "Bearisk Pinbar Reversal", location=location.abovebar, color=white, style=shape.arrowdown, text="Pinbar",size=size.tiny)
barcolor(pinbarreversalbear or pinbarreversalbull?white:na)
// Fakey
plotshape(fakey and (not outsidebar or not (high[1]<=high[2] and low[1]>=low[2]) )  and not blackcrowreversal   , title= "Fakey Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="Fakey",size=size.tiny)
plotshape(fakey1 and (not outsidebar or not (high[1]<=high[2] and low[1]>=low[2]) )  and not whitesoldierreversal , title= "Fakey Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="Fakey",size=size.tiny)
// Pinbar Fake Breakout
//plotshape(beariskpinbar and (not fakey or (fakey and outsidebar)) and not onewhitesoliderbear and not onewwhitesoliderbull and not blackcrowreversal and not whitesoldierreversal and not fakey, title= "Pinbar Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="FalseBreak\nPinbar",size=size.tiny)
//plotshape(bullishpibar  and (not fakey1 or (fakey1 and outsidebar)) and not onewwhitesoliderbull and not onewhitesoliderbear and not whitesoldierreversal and not blackcrowreversal and not fakey1, title= "Pinbar Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="FalseBreak\nPinbar",size=size.tiny)
// Black Crow and White Soldier Continuation
//plotshape((onewhitesoliderbear or onewhitesoliderbear1 or onewhitesoliderbear2) and not insidebar and not fakey and not fakey1  and not outsidebar, title= "One solider Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="Black\nCrow",size=size.tiny)
//plotshape((onewwhitesoliderbull or onewwhitesoliderbull1 or onewwhitesoliderbull2)and not insidebar and not fakey and not fakey1  and not outsidebar, title= "One solider Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="White\nSoldier",size=size.tiny)
// Pinbar Continuation
pinbarresistance= (close-open<(high-low)/3 and open-close<(high-low)/3) and high-close>(close-low) and high-open>(open-low) and  ((open[2]<ema21[2] or close[2]<ema21[2]) and high>ema21 and low[2]<low[1] and low[3]<low[2] and high>high[1] and high>high[2] and high>high[3])
pinbarsupport=(close-open<(high-low)/3 and open-close<(high-low)/3) and close-low>(high-close) and open-low>(high-open) and ((open[2]>ema21[2] or close[2]>ema21[2]) and low<ema21 and high[2]>high[1] and high[3]>high[2] and low<low[1] and low<low[2] and low<low[3])
//plotshape(pinbarresistance and (not fakey or (fakey and outsidebar)) and not onewhitesoliderbear and not onewwhitesoliderbull and not blackcrowreversal and not whitesoldierreversal and not fakey and not beariskpinbar, title= "Pinbar Bearisk", location=location.abovebar, color=white, style=shape.arrowdown, text="Pinbar",size=size.tiny)
//plotshape(pinbarsupport  and (not fakey1 or (fakey1 and outsidebar)) and not onewwhitesoliderbull and not onewhitesoliderbear and not whitesoldierreversal and not blackcrowreversal and not fakey1 and not bullishpibar, title= "Pinbar Bullish", location=location.belowbar, color=white, style=shape.arrowup, text="Pinbar",size=size.tiny)
// barcolor

onlybuy=input(false)
onlysell=input(false)//
conmua= hisup==1 and MACD>0?1: (hisdown[1]==1 and MACD[1]<0 and pacC[1]>signalMA[1]) or (n1[2]<n1[3] and pacC[1]>signalMA[1])?-1:nz(conmua[1],1)
conmua1= conmua==1 and (hisdown==1 and MACD<0 and pacC>signalMA) or (n1[1]<n1[2] and pacC>signalMA)?1:(close[1]>n1[1] and pacC[1]>signalMA[1] and open[1]<n1[1] and close[1]>pacC[1]) or crossunder(pacC,signalMA) ?-1:nz(conmua1[1],1)
conmua2=conmua1==1 and hisup==1 and MACD>0 and close>n1?1: high[1]<high[3] and high[2]<high[3]?-1:nz(conmua2[1],1)
conmua3=conmua2==1 and high<high[2] and high[1]<high[2]?1: (close[1]>swinghigh[1] and hisup[1]==1 and MACD[1]>0) or ( MACD<0)?-1:nz(conmua3[1],1)
mua=conmua3==1 and hisup==1 and MACD>0 and conmua2==-1 and conmua1==-1
mua2= conmua1==1 and ( close>n1 and pacC>signalMA and open<n1 and close>pacC) and conmua[1]==-1
//if(mua2 and onlysell==false)
//    strategy.entry("Buy",strategy.long)
conban=hisdown==1 and MACD<0?1:(hisup[1]==1 and MACD[1]>0 and pacC[1]<signalMA[1]) or (n1[2]>n1[3] and pacC[1]<signalMA[1])?-1:nz(conban[1],1)
conban1= conban==1 and (hisup==1 and MACD>0 and pacC<signalMA) or (n1[1]>n1[2] and pacC<signalMA)?1:( close[1]<n1[1] and pacC[1]<signalMA[1] and open[1]>n1[1] and close[1]<pacC[1]) or crossover(pacC,signalMA)?-1:nz(conban1[1],1)
conban2=conban1==1 and hisdown==1 and MACD<0 and close<n1?1: low[1]>low[3] and low[2]>low[3]?-1:nz(conban2[1],1)
conban3=conban2==1 and low[1]>low[2] and low>low[2]?1: (close[1]<swinglow[1] and hisdown[1]==1 and MACD[1]<0) or ( MACD>0)?-1:nz(conban3[1],1)
ban=conban3==1 and hisdown==1 and MACD<0 and conban2==-1 
ban2=conban1==1 and ( close<n1 and pacC<signalMA and open>n1 and close<pacC) and conban[1]==-1
//if(ban2 and onlybuy==false)
//    strategy.entry("Sell",strategy.short)  
plotshape(conmua1==1 and conmua[1]==-1, style= shape.triangleup, color = lime, location = location.bottom,size=size.tiny)
plotshape(conban1==1 and conban[1]==-1, style= shape.triangledown, color = red, location = location.bottom,size=size.tiny)
plotshape(mua2, style= shape.labelup, color = lime, location = location.bottom,size=size.tiny)
plotshape(ban2, style= shape.labeldown, color = red, location = location.bottom,size=size.tiny)
// TP and SL/
SL = input(defval=50.00, title="Chốt lời (Pip)", type=float, step=1)
rr= input(defval=20.00,title="Cắt lỗ (Pip)",type=float, step=1)
useTPandSL = input(defval = true, title = "Sử dụng chốt lời và cắt lỗ?")
Stop = rr*10
Take=SL*10
Q = 100
if(useTPandSL)
    strategy.exit("ExitBuy", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("ExitSell", "Sell", qty_percent=Q, profit= Take, loss=Stop)