Il s'agit d'une stratégie de négociation basée sur l'action des prix, combinée à des moyennes mobiles pour identifier les tendances et utiliser des modèles de prix pour l'entrée.
La stratégie repose principalement sur les aspects suivants:
Utilisation de l'EMA pour juger des tendances. Lorsque l'EMA à 89 périodes et l'EMA de Hull sont tous deux rouges, il est jugé comme une tendance baissière, aller court uniquement; lorsque les deux sont verts, il est jugé comme une tendance haussière, aller long uniquement; lorsque l'un est vert et l'autre est rouge, il est jugé comme une consolidation, à la fois long et court sont possibles.
Identifier les signaux avec des modèles de prix. La stratégie reconnaît diverses combinaisons de bougies comme des bougies simples, des modèles faux, des barres intérieures, etc. pour repérer les points d'entrée potentiels.
Combiner avec les niveaux de support/résistance clés pour l'entrée. La stratégie intègre également des niveaux S/R clés pour vérifier davantage les signaux de tendance des prix et éviter de fausses ruptures.
Les couleurs de l'histogramme MACD sont utilisées pour confirmer les signaux de tendance des prix et améliorer la probabilité.
Mécanisme de suivi des tendances: la stratégie comprend un module de suivi des tendances pour détecter plus précisément les renversements de tendance et éviter de poursuivre les sommets et les bas.
Le montant de l'impôt sur les sociétés est calculé en fonction de la valeur de l'impôt sur les sociétés et de l'impôt sur les sociétés.
La stratégie présente les avantages suivants:
Basé sur l'action des prix, non affecté par les indicateurs, basé purement sur les prix sans indicateurs complexes, plus proche de la nature du marché.
Combiner les tendances, en évitant de les poursuivre.
Les modèles de prix combinés avec le MACD vérifient les signaux, filtrent les faux signaux, améliorant la rentabilité.
Le module de suivi de tendance capte les tendances de plus grandes périodes, avec un plus grand potentiel de profit.
Le ratio stop loss/take profit fixe aide à gérer le rapport risque/bénéfice.
La stratégie comporte également les risques suivants:
La stratégie fonctionne mieux avec des tendances claires à moyen / court terme. Des risques d'inversion plus importants sont arrêtés. Une analyse plus longue peut aider à éviter.
Le risque d'échec des modèles de prix. Les modèles de prix ont une efficacité variable dans différents environnements de marché. Certains marchés peuvent provoquer l'échec des modèles, entraînant des pertes.
Difficulté d'optimisation des paramètres. La stratégie a plusieurs paramètres. Différentes combinaisons ont un impact significatif sur les résultats. Un backtesting intensif est nécessaire pour trouver les paramètres optimaux. Le réglage statique risque également de modifier le régime du marché. Un mécanisme d'optimisation des paramètres dynamiques peut aider à résoudre ce problème.
Incapacité de contrôler le risque de transaction individuel. Stop loss/take profit fixe ne peut pas s'adapter aux fluctuations de chaque transaction et gérer les ratios risque/rendement de chaque transaction. Des algorithmes de stop loss dynamiques ou des modules de gestion des risques peuvent aider.
La stratégie peut être améliorée dans les domaines suivants:
Introduire l'apprentissage automatique pour la reconnaissance de modèles plus complexes. Utiliser l'apprentissage profond, etc. pour détecter automatiquement des modèles plus efficaces.
Augmenter l'adaptabilité. Construire des mécanismes d'optimisation dynamique des paramètres afin que la stratégie puisse s'ajuster en fonction des conditions du marché en temps réel plutôt que des paramètres statiques.
Ajouter plus de facteurs d'action des prix comme le volume, les écarts du jour au lendemain, etc. pour confirmer les signaux et réduire le risque d'être piégé.
Introduire la gestion des risques et la dimensionnement des positions. Ajuster automatiquement les tailles de position en fonction des seuils pour contrôler efficacement les pertes d'arrêt de transaction unique et optimiser les ratios risque/rendement.
Optimiser les mécanismes d'entrée. Améliorer les modules de détection de tendance pour identifier plus précisément les rythmes tendance/consolidation améliorant la précision d'entrée.
Dans l'ensemble, la force de base de cette stratégie réside dans les jugements basés sur l'action des prix, en évitant la dépendance aux indicateurs et en reflétant au maximum la nature du marché. La combinaison des tendances et des indicateurs améliore la rentabilité tandis que le stop loss / take profit contrôle le risque. Mais des risques tels que des renversements de tendance plus importants dans un délai plus long, des défaillances des modèles de prix doivent être abordés. Les améliorations futures peuvent provenir de l'apprentissage automatique, de l'optimisation dynamique des paramètres, des modules de gestion des risques, etc. pour rendre la stratégie plus robuste.
/*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)