Ini adalah strategi perdagangan berdasarkan aksi harga, dikombinasikan dengan moving average untuk mengidentifikasi tren dan menggunakan pola harga untuk masuk.
Strategi ini terutama didasarkan pada aspek-aspek berikut:
Menggunakan EMA untuk menilai tren. Ketika 89 periode EMA dan Hull MA keduanya merah, itu dinilai sebagai tren Bear, hanya pergi pendek; ketika keduanya hijau, itu dinilai sebagai tren Bull, hanya pergi panjang; ketika satu hijau dan satu merah, itu dinilai sebagai konsolidasi, baik panjang dan pendek dimungkinkan.
Mengidentifikasi sinyal dengan pola harga. Strategi mengenali berbagai kombinasi lilin seperti lilin tunggal, pola palsu, bar dalam dll untuk menemukan titik masuk potensial.
Menggabungkan dengan level support/resistance utama untuk masuk. Strategi ini juga menggabungkan tingkat S/R utama untuk lebih memverifikasi sinyal pola harga dan menghindari pecah palsu.
Warna histogram MACD digunakan untuk mengkonfirmasi sinyal pola harga dan meningkatkan probabilitas.
Mekanisme mengikuti tren. Strategi ini mencakup modul mengikuti tren untuk mendeteksi pembalikan tren dengan lebih akurat dan menghindari mengejar puncak dan dasar.
Menetapkan stop loss dan take profit. Stop loss dan take profit tetap berdasarkan ATR disertakan untuk mengelola risiko/manfaat.
Strategi ini memiliki keuntungan berikut:
Berdasarkan aksi harga, tidak terpengaruh oleh indikator.
Menggabungkan tren, menghindari mengejar. EMA dan Hull MA mengidentifikasi arah tren, beroperasi di sepanjang tren, menghindari perdagangan yang bertentangan dengan tren.
Pola + indikator meningkatkan probabilitas. pola harga dikombinasikan dengan MACD memverifikasi sinyal, menyaring sinyal palsu, meningkatkan profitabilitas.
Trend Following Catches Big Moves. Trend Following Modul Catches Trends dalam jangka waktu yang lebih besar, dengan potensi keuntungan yang lebih besar.
Stop loss/take profit mengendalikan risiko. Stop loss/take profit ratio tetap membantu mengelola risiko/manfaat.
Strategi ini juga memiliki risiko berikut:
Risiko pembalikan tren kerangka waktu yang lebih besar. Strategi ini bekerja dengan baik dengan tren jangka menengah / jangka pendek yang jelas. Risiko pembalikan yang lebih besar dihentikan. Analisis kerangka waktu yang lebih besar dapat membantu menghindari.
risiko kegagalan pola harga. pola harga memiliki efektivitas yang bervariasi di lingkungan pasar yang berbeda. beberapa pasar dapat menyebabkan pola gagal, yang menyebabkan kerugian. backtesting berbagai pasar dapat mengoptimalkan pemilihan pola.
Strategi ini memiliki beberapa parameter. Kombinasi yang berbeda mempengaruhi hasil secara signifikan. Backtesting yang luas diperlukan untuk menemukan parameter optimal. Pengaturan statis juga berisiko perubahan rezim pasar. Mekanisme optimasi parameter dinamis dapat membantu mengatasi ini.
Ketidakmampuan untuk mengendalikan risiko perdagangan individu. Stop loss / take profit tetap tidak dapat beradaptasi dengan fluktuasi dalam setiap perdagangan dan mengelola rasio risiko / imbalan perdagangan individu. Algoritma stop loss dinamis atau modul manajemen risiko dapat membantu.
Strategi ini dapat ditingkatkan dalam hal berikut:
Memperkenalkan pembelajaran mesin untuk pengenalan pola yang lebih kompleks. Gunakan pembelajaran mendalam dll untuk mendeteksi pola yang lebih efektif secara otomatis.
Membangun mekanisme optimasi parameter dinamis sehingga strategi dapat menyesuaikan berdasarkan kondisi pasar real-time daripada pengaturan statis.
Tambahkan lebih banyak faktor tindakan harga seperti volume, celah semalam dll untuk mengkonfirmasi sinyal dan mengurangi risiko terjebak.
Memperkenalkan manajemen risiko dan ukuran posisi. Mengatur ukuran posisi secara otomatis berdasarkan ambang batas untuk secara efektif mengendalikan stop loss perdagangan tunggal dan mengoptimalkan rasio risiko / imbalan.
Mengoptimalkan mekanisme entri. Memperbaiki modul deteksi tren untuk mengidentifikasi ritme tren/konsolidasi dengan lebih akurat meningkatkan akurasi entri.
Secara keseluruhan, kekuatan inti dari strategi ini terletak pada penilaian berdasarkan tindakan harga, menghindari ketergantungan pada indikator dan mencerminkan sifat pasar secara maksimal. Menggabungkan tren dan indikator meningkatkan profitabilitas sementara stop loss / take profit mengendalikan risiko. Tetapi risiko seperti pembalikan tren jangka waktu yang lebih besar, kegagalan pola harga perlu ditangani. Peningkatan di masa depan dapat berasal dari pembelajaran mesin, optimasi parameter dinamis, modul manajemen risiko, dll untuk membuat strategi lebih kuat.
/*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)