
Strategi bergerak purata pelangi adalah strategi gabungan purata bergerak jangka masa yang tipikal. Ia menggunakan purata bergerak dari 12 kitaran yang berbeza untuk menentukan arah pergerakan harga melalui susunan purata bergerak dan hubungan harga, dan menentukan kedudukan, berhenti, dan berhenti untuk perdagangan automatik.
Strategi ini menggunakan 12 purata bergerak, termasuk 3 kitaran, 5 kitaran, 8 kitaran hingga 55 kitaran, jenis purata bergerak boleh memilih EMA, SMA, RMA dan sebagainya. Strategi ini terlebih dahulu menilai hubungan susunan purata bergerak jangka pendek dan jangka panjang ((1-4 kitaran garis dan 5-8 kitaran garis), jika jangka pendek di atasnya dinilai sebagai keadaan tren naik, jika jangka pendek di bawahnya dinilai sebagai keadaan tren menurun.
Dalam trend menaik, jika harga menembusi satu titik rendah yang setaraf dengan purata bergerak, ia akan dianggap sesuai dengan isyarat untuk meletakkan kedudukan, dan ia akan mengambil lebih banyak; Hentikan kerugian terletak di satu titik rendah yang setaraf dengan purata bergerak, dan ia akan mengambil 1.6 kali ganda dari jarak berhenti. Dalam trend menurun, jika harga menembusi satu titik tinggi yang setaraf dengan purata bergerak, ia akan dianggap sesuai dengan isyarat untuk meletakkan kedudukan, dan ia akan mengambil ruang; Hentikan kerugian terletak di satu titik tinggi yang setaraf dengan purata bergerak, dan ia akan mengambil 1.6 kali ganda dari jarak berhenti.
Strategi ini juga mempunyai fungsi pengesanan pembalikan trend. Semasa memegang kedudukan, jika rata-rata bergerak jangka pendek berubah secara berurutan, dan harga melepasi titik tinggi atau rendah terkini, maka ia dianggap mungkin berlaku pembalikan trend, ketika itu keluar dari kedudukan semasa, beralih ke kedudukan ke arah yang berlawanan, dengan titik tinggi atau rendah baru sebagai titik henti dan berhenti.
Strategi ini menggunakan analisis pelbagai kitaran masa untuk menentukan arah trend.
Strategi untuk menyertakan penghakiman yang berkaitan dengan purata bergerak secara terbalik, untuk mengelakkan salah kaprah oleh pasaran yang bergolak.
Strategi ini mempunyai mekanisme penangguhan kerugian yang sempurna, yang dapat mengawal risiko perdagangan tunggal dengan berkesan.
Strategi ini mempunyai fungsi pengesanan pembalikan trend yang dapat menangkap peluang pembalikan trend tepat pada masanya dan mengurangkan risiko sistematik.
Tetapan parameter strategi ini fleksibel, dan tempoh dan jenis purata bergerak boleh disesuaikan.
Strategi ini menggunakan kaedah tracking stop loss untuk mengunci keuntungan maksimum.
Kaedah gabungan pelbagai purata bergerak, tetapan parameter akan mempengaruhi prestasi strategi dan memerlukan ujian optimasi.
Dalam keadaan goyah, purata bergerak akan menghantar isyarat yang salah, parameter harus disesuaikan dengan sewajarnya atau tidak berdagang sementara.
Terdapat sedikit ketinggalan dan terdapat risiko kehilangan peluang berhampiran titik perubahan trend.
Perhatian perlu diberikan kepada petunjuk teknikal lain untuk mengelakkan posisi kosong di dekat kedudukan sokongan penting.
Risiko sistemik perlu diperhatikan, dan mekanisme pengesanan balik tidak dapat mengelakkan risiko sepenuhnya.
Kawalan penarikan balik memerlukan mekanisme tambahan, dan pengurusan kedudukan dinamik boleh dipertimbangkan.
Uji pelbagai jenis purata bergerak dan parameter untuk mencari kombinasi terbaik.
Optimumkan mekanisme pengesanan balik untuk menetapkan keadaan pemicu balik yang lebih tepat.
Bergabung dengan mekanisme pengurusan kedudukan dinamik, menurunkan kedudukan apabila penarikan balik terlalu besar.
Pertimbangkan untuk menggunakan algoritma pembelajaran mesin untuk menentukan titik-titik penting dengan menggunakan latihan data besar.
Penghakiman bersepadu dalam kombinasi dengan isyarat indikator lain meningkatkan ketepatan keputusan.
Membina portfolio perdagangan pelbagai jenis untuk menyebarkan risiko dengan menggunakan hubungan yang tidak berkaitan.
Strategi pelangi rata-rata bergerak perdagangan automatik secara keseluruhan adalah strategi penjejakan trend yang kukuh, dengan keupayaan pengenalan trend yang lebih kuat dan keupayaan kawalan risiko. Dengan pengoptimuman parameter, pengendalian kedudukan dinamik dan pengendalian lebih lanjut, ia boleh menjadi strategi perdagangan kuantitatif yang sangat praktikal. Strategi ini jelas dan mudah difahami, tetapi juga mempunyai fleksibiliti, yang patut dikaji dan terus dioptimumkan.
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AugustoErni
//@version=5
strategy('Moving Average Rainbow (Stormer)', overlay=true)
maType = input.string('EMA', title='Moving Average Type/Tipo de Média Móvel', options=['EMA', 'SMA', 'RMA', 'WMA', 'HMA', 'VWMA'], tooltip='This option is to select the type of Moving Average that the Rainbow will use./Esta opção é para selecionar o tipo de Média Móvel que o Rainbow utilizará.', group='Moving Averages/Médias Móveis')
maLengthFirst = input.int(3, title='MA #1', minval=1, step=1, tooltip='First MA length./Comprimento da primeira MA.', group='Moving Averages/Médias Móveis')
maLengthSecond = input.int(5, title='MA #2', minval=1, step=1, tooltip='Second MA length./Comprimento da segunda MA.', group='Moving Averages/Médias Móveis')
maLengthThird = input.int(8, title='MA #3', minval=1, step=1, tooltip='Third MA length./Comprimento da terceira MA.', group='Moving Averages/Médias Móveis')
maLengthFourth = input.int(13, title='MA #4', minval=1, step=1, tooltip='Fourth MA length./Comprimento da quarta MA.', group='Moving Averages/Médias Móveis')
maLengthFifth = input.int(20, title='MA #5', minval=1, step=1, tooltip='Fifth MA length./Comprimento da quinta MA.', group='Moving Averages/Médias Móveis')
maLengthSixth = input.int(25, title='MA #6', minval=1, step=1, tooltip='Sixth MA length./Comprimento da sexta MA.', group='Moving Averages/Médias Móveis')
maLengthSeventh = input.int(30, title='MA #7', minval=1, step=1, tooltip='Seventh MA length./Comprimento da sétima MA.', group='Moving Averages/Médias Móveis')
maLengthEighth = input.int(35, title='MA #8', minval=1, step=1, tooltip='Eighth MA length./Comprimento da oitava MA.', group='Moving Averages/Médias Móveis')
maLengthNineth = input.int(40, title='MA #9', minval=1, step=1, tooltip='Nineth MA length./Comprimento da nona MA.', group='Moving Averages/Médias Móveis')
maLengthTenth = input.int(45, title='MA #10', minval=1, step=1, tooltip='Tenth MA length./Comprimento da décima MA.', group='Moving Averages/Médias Móveis')
maLengthEleventh = input.int(50, title='MA #11', minval=1, step=1, tooltip='Eleventh MA length./Comprimento da décima primeira MA.', group='Moving Averages/Médias Móveis')
maLengthTwelveth = input.int(55, title='MA #12', minval=1, step=1, tooltip='Twelveth MA length./Comprimento da décima segunda MA.', group='Moving Averages/Médias Móveis')
targetFactor = input.float(1.6, title='Target Take Profit/Objetivo de Lucro Alvo', minval=0.1, step=0.1, tooltip='Calculate the take profit factor when entry position./Calcula o fator do alvo lucro ao entrar na posição.', group='Risk Management/Gerenciamento de Risco')
verifyTurnoverTrend = input.bool(true, title='Verify Turnover Trend/Verificar Tendência de Rotatividade', tooltip='This option checks for a supposedly turnover trend and setup new target (for long is the highest high and for short is the lowest low identified)./Esta opção verifica uma suposta tendência de rotatividade e estabelece um novo objetivo (para long é a máxima mais alta, para short é a mínima mais baixa identificados).', group='Turnover Trend/Rotatividade Tendência')
verifyTurnoverSignal = input.bool(false, title='Verify Turnover Signal/Verificar Sinal de Rotatividade', tooltip='This option checks for a supposedly turnover signal, closing the current position and opening a new one (for long it will close and open a new for short, for short it will close and open a new for long)./Essa opção verifica um sinal de possível reversão, fechando a posição atual e abrindo uma nova (para long fechará e abrirá uma nova para short, para short fechará e abrirá uma nova para long).', group='Turnover Signal/Rotatividade Sinal')
verifyTurnoverSignalPriceExit = input.bool(false, title='Verify Price Exit Turnover Signal/Verificar Saída de Preço Sinal de Rotatividade', tooltip='This option complements "turnover signal" by veryfing the price if profitable before exiting the current position./Esta opção complementa o "sinal de rotatividade" verificando o preço do lucro antes de sair da posição atual.', group='Turnover Signal/Rotatividade Sinal')
mas(maType, maLengthFirst, maLengthSecond, maLengthThird, maLengthFourth, maLengthFifth, maLengthSixth, maLengthSeventh, maLengthEighth, maLengthNineth, maLengthTenth, maLengthEleventh, maLengthTwelveth) =>
if (maType == 'SMA')
[ta.sma(close, maLengthFirst), ta.sma(close, maLengthSecond), ta.sma(close, maLengthThird), ta.sma(close, maLengthFourth), ta.sma(close, maLengthFifth), ta.sma(close, maLengthSixth), ta.sma(close, maLengthSeventh), ta.sma(close, maLengthEighth), ta.sma(close, maLengthNineth), ta.sma(close, maLengthTenth), ta.sma(close, maLengthEleventh), ta.sma(close, maLengthTwelveth)]
else if (maType == 'RMA')
[ta.rma(close, maLengthFirst), ta.rma(close, maLengthSecond), ta.rma(close, maLengthThird), ta.rma(close, maLengthFourth), ta.rma(close, maLengthFifth), ta.rma(close, maLengthSixth), ta.rma(close, maLengthSeventh), ta.rma(close, maLengthEighth), ta.rma(close, maLengthNineth), ta.rma(close, maLengthTenth), ta.rma(close, maLengthEleventh), ta.rma(close, maLengthTwelveth)]
else if (maType == 'WMA')
[ta.wma(close, maLengthFirst), ta.wma(close, maLengthSecond), ta.wma(close, maLengthThird), ta.wma(close, maLengthFourth), ta.wma(close, maLengthFifth), ta.wma(close, maLengthSixth), ta.wma(close, maLengthSeventh), ta.wma(close, maLengthEighth), ta.wma(close, maLengthNineth), ta.wma(close, maLengthTenth), ta.wma(close, maLengthEleventh), ta.wma(close, maLengthTwelveth)]
else if (maType == 'HMA')
[ta.hma(close, maLengthFirst), ta.hma(close, maLengthSecond), ta.hma(close, maLengthThird), ta.hma(close, maLengthFourth), ta.hma(close, maLengthFifth), ta.hma(close, maLengthSixth), ta.hma(close, maLengthSeventh), ta.hma(close, maLengthEighth), ta.hma(close, maLengthNineth), ta.hma(close, maLengthTenth), ta.hma(close, maLengthEleventh), ta.hma(close, maLengthTwelveth)]
else if (maType == 'VWMA')
[ta.vwma(close, maLengthFirst), ta.vwma(close, maLengthSecond), ta.vwma(close, maLengthThird), ta.vwma(close, maLengthFourth), ta.vwma(close, maLengthFifth), ta.vwma(close, maLengthSixth), ta.vwma(close, maLengthSeventh), ta.vwma(close, maLengthEighth), ta.vwma(close, maLengthNineth), ta.vwma(close, maLengthTenth), ta.vwma(close, maLengthEleventh), ta.vwma(close, maLengthTwelveth)]
else
[ta.ema(close, maLengthFirst), ta.ema(close, maLengthSecond), ta.ema(close, maLengthThird), ta.ema(close, maLengthFourth), ta.ema(close, maLengthFifth), ta.ema(close, maLengthSixth), ta.ema(close, maLengthSeventh), ta.ema(close, maLengthEighth), ta.ema(close, maLengthNineth), ta.ema(close, maLengthTenth), ta.ema(close, maLengthEleventh), ta.ema(close, maLengthTwelveth)]
[ma1, ma2, ma3, ma4, ma5, ma6, ma7, ma8, ma9, ma10, ma11, ma12] = mas(maType, maLengthFirst, maLengthSecond, maLengthThird, maLengthFourth, maLengthFifth, maLengthSixth, maLengthSeventh, maLengthEighth, maLengthNineth, maLengthTenth, maLengthEleventh, maLengthTwelveth)
maTouchPriceTrend(ma1, ma2, ma3, ma4, ma5, ma6, ma7, ma8, ma9, ma10, ma11, ma12, trend) =>
var float touchPrice = na
if (trend == 'UPTREND')
if (low <= ma1 and low >= ma2)
touchPrice := ma2
else if (low <= ma2 and low >= ma3)
touchPrice := ma3
else if (low <= ma3 and low >= ma4)
touchPrice := ma4
else if (low <= ma4 and low >= ma5)
touchPrice := ma5
else if (low <= ma5 and low >= ma6)
touchPrice := ma6
else if (low <= ma6 and low >= ma7)
touchPrice := ma7
else if (low <= ma7 and low >= ma8)
touchPrice := ma8
else if (low <= ma8 and low >= ma9)
touchPrice := ma9
else if (low <= ma9 and low >= ma10)
touchPrice := ma10
else if (low <= ma10 and low >= ma11)
touchPrice := ma11
else if (low <= ma11 and low >= ma12)
touchPrice := ma12
else
touchPrice := na
else if (trend == 'DOWNTREND')
if (high >= ma1 and high <= ma2)
touchPrice := ma2
else if (high >= ma2 and high <= ma3)
touchPrice := ma3
else if (high >= ma3 and high <= ma4)
touchPrice := ma4
else if (high >= ma4 and high <= ma5)
touchPrice := ma5
else if (high >= ma5 and high <= ma6)
touchPrice := ma6
else if (high >= ma6 and high <= ma7)
touchPrice := ma7
else if (high >= ma7 and high <= ma8)
touchPrice := ma8
else if (high >= ma8 and high <= ma9)
touchPrice := ma9
else if (high >= ma9 and high <= ma10)
touchPrice := ma10
else if (high >= ma10 and high <= ma11)
touchPrice := ma11
else if (high >= ma11 and high <= ma12)
touchPrice := ma12
else
touchPrice := na
maMean = ((ma1 + ma2 + ma3 + ma4 + ma5 + ma6 + ma7 + ma8 + ma9 + ma10 + ma11 + ma12) / 12)
isMa1To4Above = ma1 > ma2 and ma2 > ma3 and ma3 > ma4 ? 1 : 0
isMa1To4Below = ma1 < ma2 and ma2 < ma3 and ma3 < ma4 ? 1 : 0
isMa5To8Above = ma5 > ma6 and ma6 > ma7 and ma7 > ma8 ? 1 : 0
isMa5To8Below = ma5 < ma6 and ma6 < ma7 and ma7 < ma8 ? 1 : 0
isCloseGreaterMaMean = close > maMean ? 1 : 0
isCloseLesserMaMean = close < maMean ? 1 : 0
isCurHighGreaterPrevHigh = high > high[1] ? 1 : 0
isCurLowLesserPrevLow = low < low[1] ? 1 : 0
isMaUptrend = isCloseGreaterMaMean and isMa5To8Above ? 1 : 0
isMaDowntrend = isCloseLesserMaMean and isMa5To8Below ? 1 : 0
isUptrend = isMaUptrend ? 'UPTREND' : na
isDowntrend = isMaDowntrend ? 'DOWNTREND' : na
curTouchPriceUptrend = maTouchPriceTrend(ma1, ma2, ma3, ma4, ma5, ma6, ma7, ma8, ma9, ma10, ma11, ma12, isUptrend)
prevTouchPriceUptrend = curTouchPriceUptrend[1]
curTouchPriceDowntrend = maTouchPriceTrend(ma1, ma2, ma3, ma4, ma5, ma6, ma7, ma8, ma9, ma10, ma11, ma12, isDowntrend)
prevTouchPriceDowntrend = curTouchPriceDowntrend[1]
isPrevTouchPriceUptrendTouched = prevTouchPriceUptrend > 0.0 or not na(prevTouchPriceUptrend) ? 1 : 0
isPrevTouchPriceDowntrendTouched = prevTouchPriceDowntrend > 0.0 or not na(prevTouchPriceDowntrend) ? 1 : 0
isPrevTouchedPriceUptrend = isPrevTouchPriceUptrendTouched and isMaUptrend ? 1 : 0
isPrevTouchedPriceDowntrend = isPrevTouchPriceDowntrendTouched and isMaDowntrend ? 1 : 0
isPositionFlat = strategy.position_size == 0 ? 1 : 0
var float positionEntryPrice = na
var bool positionIsEntryLong = false
var bool positionIsEntryShort = false
var float longPositionHighestHigh = na
var float shortPositionLowestLow = na
var float stopLossLong = na
var float stopLossShort = na
var float targetLong = na
var float targetShort = na
var bool isTurnoverTrendLongTrigger = na
var bool isTurnoverTrendShortTrigger = na
isPositionLongClose = na(positionEntryPrice) and not positionIsEntryLong ? 1 : 0
isPositionShortClose = na(positionEntryPrice) and not positionIsEntryShort ? 1 : 0
isLongCondition = isMaUptrend and isCurHighGreaterPrevHigh and isPrevTouchedPriceUptrend ? 1 : 0
isShortCondition = isMaDowntrend and isCurLowLesserPrevLow and isPrevTouchedPriceDowntrend ? 1 : 0
longTurnoverExit = verifyTurnoverSignal and verifyTurnoverSignalPriceExit ? (verifyTurnoverSignal and isLongCondition and positionIsEntryShort and close < positionEntryPrice) : verifyTurnoverSignal ? (verifyTurnoverSignal and isLongCondition and positionIsEntryShort) : na
shortTurnoverExit = verifyTurnoverSignal and verifyTurnoverSignalPriceExit ? (verifyTurnoverSignal and isShortCondition and positionIsEntryLong and close > positionEntryPrice) : verifyTurnoverSignal ? (verifyTurnoverSignal and isShortCondition and positionIsEntryLong) : na
if (isPositionFlat)
positionEntryPrice := na
positionIsEntryLong := false
positionIsEntryShort := false
stopLossLong := na
targetLong := na
stopLossShort := na
targetShort := na
isTurnoverTrendLongTrigger := na
isTurnoverTrendShortTrigger := na
if ((isLongCondition and isPositionLongClose) or longTurnoverExit)
positionEntryPrice := close
positionIsEntryLong := true
positionIsEntryShort := false
longPositionHighestHigh := na
shortPositionLowestLow := na
isTurnoverTrendLongTrigger := na
isTurnoverTrendShortTrigger := na
stopLossLong := prevTouchPriceUptrend
if (isCurLowLesserPrevLow)
curLowToucedPrice = na(curTouchPriceUptrend) ? low : curTouchPriceUptrend
stopLossLong := na(curTouchPriceUptrend) ? ((stopLossLong + curLowToucedPrice) / 2) : curLowToucedPrice
targetLong := (positionEntryPrice + (math.abs(positionEntryPrice - stopLossLong) * targetFactor))
if (targetLong > 0 and stopLossLong > 0)
alertMessage = '{ "side/lado": "buy", "entry/entrada": ' + str.tostring(positionEntryPrice) + ', "stop": ' + str.tostring(stopLossLong) + ', "target/alvo": ' + str.tostring(targetLong) + ' }'
alert(alertMessage)
strategy.entry('Long', strategy.long)
strategy.exit('Exit Long', 'Long', stop=stopLossLong, limit=targetLong)
if ((isShortCondition and isPositionShortClose) or shortTurnoverExit)
positionEntryPrice := close
positionIsEntryLong := false
positionIsEntryShort := true
longPositionHighestHigh := na
shortPositionLowestLow := na
isTurnoverTrendLongTrigger := na
isTurnoverTrendShortTrigger := na
stopLossShort := prevTouchPriceDowntrend
if (isCurHighGreaterPrevHigh)
curHighToucedPrice = na(curTouchPriceDowntrend) ? high : curTouchPriceDowntrend
stopLossShort := na(curTouchPriceDowntrend) ? ((stopLossShort + curHighToucedPrice) / 2) : curHighToucedPrice
targetShort := (positionEntryPrice - (math.abs(positionEntryPrice - stopLossShort) * targetFactor))
if (targetShort > 0 and stopLossShort > 0)
alertMessage = '{ "side/lado": "sell", "entry/entrada": ' + str.tostring(positionEntryPrice) + ', "stop": ' + str.tostring(stopLossShort) + ', "target/alvo": ' + str.tostring(targetShort) + ' }'
alert(alertMessage)
strategy.entry('Short', strategy.short)
strategy.exit('Exit Short', 'Short', stop=stopLossShort, limit=targetShort)
if (verifyTurnoverTrend and positionIsEntryLong)
curHighestHigh = high
if (curHighestHigh > longPositionHighestHigh or na(longPositionHighestHigh))
longPositionHighestHigh := curHighestHigh
if (isMa1To4Below and isCloseLesserMaMean and longPositionHighestHigh > positionEntryPrice)
isTurnoverTrendLongTrigger := true
alertMessage = '{ "side/lado": "buy", "stop": ' + str.tostring(stopLossLong) + ', "target/alvo": ' + str.tostring(longPositionHighestHigh) + ', "new setup/nova definição": ' + str.tostring(isTurnoverTrendLongTrigger) + ' }'
alert(alertMessage)
strategy.exit('Exit Long', 'Long', stop=stopLossLong, limit=longPositionHighestHigh)
if (verifyTurnoverTrend and positionIsEntryShort)
curLowestLow = low
if (curLowestLow < shortPositionLowestLow or na(shortPositionLowestLow))
shortPositionLowestLow := curLowestLow
if (isMa1To4Above and isCloseGreaterMaMean and shortPositionLowestLow < positionEntryPrice)
isTurnoverTrendShortTrigger := true
alertMessage = '{ "side/lado": "sell", "stop": ' + str.tostring(stopLossShort) + ', "target/alvo": ' + str.tostring(shortPositionLowestLow) + ', "new setup/nova definição": ' + str.tostring(isTurnoverTrendShortTrigger) + ' }'
alert(alertMessage)
strategy.exit('Exit Short', 'Short', stop=stopLossShort, limit=shortPositionLowestLow)
plot(ma1, title='1st Moving Average', color=color.rgb(240, 240, 240))
plot(ma2, title='2nd Moving Average', color=color.rgb(220, 220, 220))
plot(ma3, title='3rd Moving Average', color=color.rgb(200, 200, 200))
plot(ma4, title='4th Moving Average', color=color.rgb(180, 180, 180))
plot(ma5, title='5th Moving Average', color=color.rgb(160, 160, 160))
plot(ma6, title='6th Moving Average', color=color.rgb(140, 140, 140))
plot(ma7, title='7th Moving Average', color=color.rgb(120, 120, 120))
plot(ma8, title='8th Moving Average', color=color.rgb(100, 120, 120))
plot(ma9, title='9th Moving Average', color=color.rgb(80, 120, 120))
plot(ma10, title='10th Moving Average', color=color.rgb(60, 120, 120))
plot(ma11, title='11th Moving Average', color=color.rgb(40, 120, 120))
plot(ma12, title='12th Moving Average', color=color.rgb(20, 120, 120))
tablePosition = position.bottom_right
tableColumns = 2
tableRows = 7
tableFrameWidth = 1
tableBorderColor = color.gray
tableBorderWidth = 1
tableInfoTrade = table.new(position=tablePosition, columns=tableColumns, rows=tableRows, frame_width=tableFrameWidth, border_color=tableBorderColor, border_width=tableBorderWidth)
table.cell(table_id=tableInfoTrade, column=0, row=0)
table.cell(table_id=tableInfoTrade, column=1, row=0)
table.cell(table_id=tableInfoTrade, column=0, row=1, text='Entry Side/Lado da Entrada', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=0, row=2, text=positionIsEntryLong ? 'LONG' : positionIsEntryShort ? 'SHORT' : 'NONE/NENHUM', text_color=color.yellow)
table.cell(table_id=tableInfoTrade, column=1, row=1, text='Entry Price/Preço da Entrada', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=1, row=2, text=not na(positionEntryPrice) ? str.tostring(positionEntryPrice) : 'NONE/NENHUM', text_color=color.blue)
table.cell(table_id=tableInfoTrade, column=0, row=3, text='Take Profit Price/Preço Alvo Lucro', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=0, row=4, text=positionIsEntryLong ? str.tostring(targetLong) : positionIsEntryShort ? str.tostring(targetShort) : 'NONE/NENHUM', text_color=color.green)
table.cell(table_id=tableInfoTrade, column=1, row=3, text='Stop Loss Price/Preço Stop Loss', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=1, row=4, text=positionIsEntryLong ? str.tostring(stopLossLong) : positionIsEntryShort ? str.tostring(stopLossShort) : 'NONE/NENHUM', text_color=color.red)
table.cell(table_id=tableInfoTrade, column=0, row=5, text='New Target/Novo Alvo', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=0, row=6, text=verifyTurnoverTrend and positionIsEntryLong and isTurnoverTrendLongTrigger ? str.tostring(longPositionHighestHigh) : verifyTurnoverTrend and positionIsEntryShort and isTurnoverTrendShortTrigger ? str.tostring(shortPositionLowestLow) : 'NONE/NENHUM', text_color=color.green)
table.cell(table_id=tableInfoTrade, column=1, row=5, text='Possible Market Turnover/Possível Virada do Mercado', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=1, row=6, text=verifyTurnoverTrend and positionIsEntryLong and isTurnoverTrendLongTrigger ? 'YES/SIM (Possible long going short/Possível long indo short)' : verifyTurnoverTrend and positionIsEntryShort and isTurnoverTrendShortTrigger ? 'YES/SIM (Possible short going long/Possível short indo long)' : 'NONE/NENHUM', text_color=color.red)