
全方位自動取引の移動平均虹彩戦略は,典型的な多時間周期移動平均の組み合わせ戦略である.これは,12つの異なる周期の移動平均を採用し,移動平均の並列順序と価格の関係によって,市場の動きの方向を判断し,ポジション構築,ストップ・ロス,ストップ・ストップ条件を決定し,自動取引を実現する.この戦略は,トレンドを自動的に認識することができ,リスクを制御するための完善なストップ・ロスメカニズムがある.
この戦略は,12の移動平均を使用し,3周期,5周期,8周期から55周期まで,移動平均タイプはEMA,SMA,RMAなどを選択できます.戦略は,まず,短期周期と長期周期移動平均の並列関係を判断し,短期周期の上部が上昇傾向の環境であると判断し,短期周期下部が低下傾向の環境であると判断します.
上向きのトレンドでは,価格が上位の低点に対応する移動平均を突破した場合,ポジションシグナルに適合する判断がされ,多めに行われます. ストップは上位の低点に対応する移動平均にあり,ストップ距離は損失の1.6倍になります. 下向きのトレンドでは,価格が上位の高点に対応する移動平均を突破した場合,ポジションシグナルに適合する判断がされ,空白になります. ストップは上位の高点に対応する移動平均にあり,ストップ距離は損失の1.6倍になります.
この戦略にはまた,トレンド反転検出機能もあります. ポジションの保持期間中に,短期移動平均の並列が変化し,価格が最近の高点または低点を超えた場合,トレンド反転が起こり得るものと判断され,現在のポジションを退却し,逆の方向のポジションに切り替え,新しい高点または低点をストップとストップの位置にします.
この戦略は,多重な時間周期分析を用いて,トレンドの方向性を判断する.
戦略は,移動平均と逆順位配列の関係判断を組み込むことで,波動的な市場から誤った判断を避ける.
戦略は,単一取引のリスクを効果的に制御する完全な止損機構を持っています.
この戦略にはトレンド反転検出機能があり,トレンド反転の機会を早期に捉え,システム上のリスクを低減します.
この戦略のパラメータ設定は柔軟で,移動平均の周期とタイプはカスタマイズできます.
ストップ・ロスを追跡して,最大限の利潤を確保する戦略です.
複数の移動平均の組み合わせ戦略,パラメータ設定は戦略のパフォーマンスに影響し,最適化テストが必要である.
変動の状況では,移動平均は誤った信号を発し,適切なパラメータを調整するか,一時的に取引をしないべきである.
遅滞があるため,トレンドの転換点の近くでは,チャンスを逃すリスクがある.
他の技術指標の状況に注意し,重要なサポートポイントの近くで低開設ポジションの空白を避ける.
系統的リスクは注意が必要で,反転検出メカニズムは,そのリスクを完全に回避することはできません.
撤回管理には追加のメカニズムが必要で,ダイナミックなポジション管理も考慮できる.
異なる種類の移動平均とパラメータの設定をテストし,最適な組み合わせを見つけます.
逆転検出メカニズムを最適化して,より正確な逆転トリガー条件を設定する.
ダイナミックなポジション管理システムに参加し,撤回が過大である場合,ポジションを低下させる.
機械学習のアルゴリズムを導入し,ビッグデータ訓練を活用して,重要なポイントを判断することを検討する.
他の指標信号と組み合わせて総合判断を行い,意思決定の正確性を向上させる.
多種多様な取引ポートフォリオを構築し,非関連関係を活用してリスクを分散する.
全方位自動取引移動平均レインボー戦略は,全体として,強い傾向認識能力とリスク管理能力を持つ堅実なトレンド追跡戦略である.パラメータ最適化,ダイナミックポジション管理などのさらなる最適化により,非常に実用的な量化取引戦略になることができる.この戦略は,考え方が明確で理解しやすいと同時に,一定の柔軟性があり,研究を深め使用し,継続的に最適化する価値がある.
/*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)