HARMONIC V5 SIGNAL FILTER - Infobox
HARMONIC V5 SIGNAL FILTER - Infobox
// © kakupakat_trading 2024
//https://t.me/kakupakat_trading_oficial
//Disclaimer: This script is free and should not be sold. It’s fine to take ideas
to create something new,
//but it’s not okay to claim this work as your own. The goal is to encourage the
development of better tools
//that are accessible to everyone, from beginner programmers to more advanced ones.
The purpose is to build
//a community based on shared knowledge and collective growth.
// Filter Colors
if ThemeUX == "Classic"
psar_longColor := color.rgb(9, 116, 23,0)
psar_longLight := color.rgb(9, 116, 23,65)
psar_shortColor := color.rgb(151, 14, 14,0)
psar_shortLight := color.rgb(151, 14, 14,65)
///////////////////////////////////////////////////////////////////////////////////
///////
// Trend Features
LongTrendAverage = input(true, 'Trend Cloud', group='TREND FEATURES')
/////
t_type = input.string("Scalping","Strategy",options =
["Default","Scalping","Intraday","Swing"] , group = "Signal's Settings")
if t_type == "Default"
length := length
mult := mult
SFilter := SFilter
if t_type == "Scalping"
length := 10
mult := 10
SFilter := 0.5
if t_type == "Intraday"
length := 2
mult := 15
SFilter := 0.5
if t_type == "Swing"
length := 10
mult := 5
SFilter := 1.2
///////////////////////////////////////////////////////////////////////////////////
///////
// Color Scheme
//SMC
color CLEAR = color.rgb(0,0,0,100)
showSMC = input.bool(true, 'Show Smart Money Concepts', tooltip='Show Market
Structure', group='Market Structure')
showSwing = input.bool(false, 'Show Swing Points', tooltip='Show or hide HH, LH,
HL, LL' , group="Market Structure")
swingSize = input.int(10, 'Swing Length', tooltip='The number of left and right
bars checked when searching for a swing point. Higher value = less swing points
plotted and lower value = more swing points plotted.' , group="Market Structure")
bosConfType = input.string('Candle Close', 'BOS/CHoCH Confirmation', ['Candle
Close', 'Wicks'], tooltip='Choose whether candle close/wick above previous swing
point counts as a BOS/CHoCH.' , group="Market Structure")
choch = true
bosStyle = input.string('Solid', 'Line Style', ['Solid', 'Dashed', 'Dotted'],
group="Market Structure")
bosWidth = input.int(1, 'Width', minval=1, group="Market Structure")
///////////////////////////////////////////////////////////////////////////////////
///////
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : dir == 1 and close <
longStopPrev ? -1 : dir
longColor = color.blue
shortColor = color.blue
////////////////////////////////////////////////////////////
// Conditions 1
longCond = bool(na)
shortCond = bool(na)
longCond := ta.crossover(close[1], shortStopPrev)
shortCond := ta.crossunder(close[1], longStopPrev)
// Conditions 2
longCond2 = bool(na)
shortCond2 = bool(na)
longCond2 := ta.crossover(close[1], shortStopPrev)
shortCond2 := ta.crossunder(close[1], longStopPrev)
// Conditions 3
longCond3 = bool(na)
shortCond3 = bool(na)
longCond3 := ta.crossover(close[1], shortStopPrev)
shortCond3 := ta.crossunder(close[1], longStopPrev)
////////////////////////////////////////////////////////////
// Count your long short conditions for more control with Pyramiding
sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
sectionShorts = 0
sectionShorts := nz(sectionShorts[1])
if longCond
sectionLongs += 1
sectionShorts := 0
sectionShorts
if shortCond
sectionLongs := 0
sectionShorts += 1
sectionShorts
// Count your long short conditions for more control with Pyramiding 2
sectionLongs2 = 0
sectionLongs2 := nz(sectionLongs2[1])
sectionShorts2 = 0
sectionShorts2 := nz(sectionShorts2[1])
if longCond2
sectionLongs2 += 1
sectionShorts2 := 0
sectionShorts2
if shortCond2
sectionLongs2 := 0
sectionShorts2 += 1
sectionShorts2
// Count your long short conditions for more control with Pyramiding 3
sectionLongs3 = 0
sectionLongs3 := nz(sectionLongs3[1])
sectionShorts3 = 0
sectionShorts3 := nz(sectionShorts3[1])
if longCond3
sectionLongs3 += 1
sectionShorts3 := 0
sectionShorts3
if shortCond3
sectionLongs3 := 0
sectionShorts3 += 1
sectionShorts3
////////////////////////////////////////////////////////////
// Pyramiding
pyrl = 1
// Pyramiding 2
pyr2 = 1
// Pyramiding 3
pyr3 = 1
////////////////////////////////////////////////////////////
// These check to see your signal and cross references it against the pyramiding
settings above
// These check to see your signal and cross references it against the pyramiding
settings above 3
////////////////////////////////////////////////////////////
// Get the price of the last opened long or short
last_open_longCondition = float(na)
last_open_shortCondition = float(na)
last_open_longCondition := longCondition ? open : nz(last_open_longCondition[1])
last_open_shortCondition := shortCondition ? open : nz(last_open_shortCondition[1])
last_open_longCondition2 = float(na)
last_open_shortCondition2 = float(na)
last_open_longCondition2 := longCondition2 ? open : nz(last_open_longCondition2[1])
last_open_shortCondition2 := shortCondition2 ? open :
nz(last_open_shortCondition2[1])
last_open_longCondition3 = float(na)
last_open_shortCondition3 = float(na)
last_open_longCondition3 := longCondition3 ? open : nz(last_open_longCondition3[1])
last_open_shortCondition3 := shortCondition3 ? open :
nz(last_open_shortCondition3[1])
////////////////////////////////////////////////////////////
// Check if your last postion was a long or a short
last_longCondition = float(na)
last_shortCondition = float(na)
last_longCondition := longCondition ? time : nz(last_longCondition[1])
last_shortCondition := shortCondition ? time : nz(last_shortCondition[1])
last_longCondition2 = float(na)
last_shortCondition2 = float(na)
last_longCondition2 := longCondition2 ? time : nz(last_longCondition2[1])
last_shortCondition2 := shortCondition2 ? time : nz(last_shortCondition2[1])
in_longCondition2 = last_longCondition2 > last_shortCondition2
in_shortCondition2 = last_shortCondition2 > last_longCondition2
last_longCondition3 = float(na)
last_shortCondition3 = float(na)
last_longCondition3 := longCondition3 ? time : nz(last_longCondition3[1])
last_shortCondition3 := shortCondition3 ? time : nz(last_shortCondition3[1])
// Strategy Settings
// Short Strategies
strategy.entry("Short", strategy.short, when=shortCondition and sectionShorts <=
pyrl)
strategy.close("Short", when=longCondition and sectionLongs <= pyrl)
//kumo plots
//plot(conversionLine, color=#0496ff, title="Conversion Line")
//plot(baseLine, color=#991515, title="Base Line")
//plot(close, offset = -displacement, color=#459915, title="Lagging Span")
//K1 = plot(leadLine1, offset=displacement, color=color.new(color.green, 0),
title='Lead 1')
//K2 = plot(leadLine2, offset=displacement, color=color.new(color.red, 0),
title='Lead 2')
//fill(K1, K2, leadLine1 > leadLine2 ? color.green : color.red, transp=90)
///////////////////////////////////////////////////////////////////////////////////
//////
//SMC v2
///////////////////////////////////////////////////////////////////////////////////
//////
// Functions
lineStyle(x) =>
switch x
'Solid' => line.style_solid
'Dashed' => line.style_dashed
'Dotted' => line.style_dotted
// Calculations
bool hh = false
bool lh = false
bool hl = false
bool ll = false
//Variable to track the previous swing type, used later on to draw 0.5 Retracement
Levels (HH = 2, LH = 1, HL = -1, LL = -2)
var int prevSwing = 0
if not na(pivHi)
if pivHi >= prevHigh
hh := true
prevSwing := 2
else
lh := true
prevSwing := 1
prevHigh := pivHi
highActive := true
prevHighIndex := bar_index - swingSize
if not na(pivLo)
if pivLo >= prevLow
hl := true
prevSwing := -1
else
ll := true
prevSwing := -2
prevLow := pivLo
lowActive := true
prevLowIndex := bar_index - swingSize
// Visual Output
///////////////////////////////////////////////////////////////////////////////////
/////////
//Trend Cloud
///////////////////////////////////////////////////////////////////////////////////
////////
length2 = 10*(TBSENSIII / 2)
source2 = close
aboveColor2 = color.rgb(70, 219, 255, 100)
belowColor2 = color.rgb(233, 30, 99, 100)
ma3On = true
length3 = 40*(TBSENSIII / 2)
source3 = close
aboveColor3 = color.rgb(70, 219, 255, 100)
belowColor3 = color.rgb(233, 30, 99, 100)
// Get components
[wt1, wt2] = wavetrend(close, 5*TBSensi, 10*TBSensi)
[wtDivBear1, wtDivBull1] = f_findDivs(wt2, 15, -40)
[wtDivBear2, wtDivBull2] = f_findDivs(wt2, 45, -65)
wtDivBull = wtDivBull1 or wtDivBull2
wtDivBear = wtDivBear1 or wtDivBear2
plotshape(ta.crossover(wt1, wt2) and Show_PR and wt2 <= -53, "Don't Sell/Bottom" ,
shape.xcross, location.belowbar, color(bullcolor), size=size.tiny)
plotshape(ta.crossunder(wt1, wt2) and Show_PR and wt2 >= 53, "Don't Buy/Top",
shape.xcross, location.abovebar, color(bearcolor), size=size.tiny)
//////////////////
// CALCULATIONS //
// Strategy
// SL values
sl_val = sl_type == 'ATR' ? atr_mult * ta.atr(atr_length) : sl_type == 'Absolute' ?
sl_absol : close * sl_perc / 100
// Init Variables
pos = 0
trailing_sl = 0.0
sma4 = ta.sma(close, 8)
sma5 = ta.sma(close, 9)
y1 = low - (ta.atr(30) * 2.5)
y2 = high + (ta.atr(30) * 2.5)
buylabel = long_signal ? label.new(bar_index, y1, sma4 >= sma5 ? "Strong Buy 🚀" :
"Buy 🚀", xloc.bar_index, yloc.price, bullcolor, label.style_label_up,
color.rgb(255, 255, 255), size.normal) : na
selllabel = short_signal ? label.new(bar_index, y2, sma4 <= sma5 ? "Strong Sell " :
"Sell ", xloc.bar_index, yloc.price, bearcolor, label.style_label_down,
color.rgb(255, 255, 255), size.normal) : na
// Calculate SL
trailing_sl := short_signal ? high + sl_val : long_signal ? low - sl_val :
nz(pos[1]) == 1 ? math.max(low - sl_val, nz(trailing_sl[1])) : nz(pos[1]) == -1 ?
math.min(high + sl_val, nz(trailing_sl[1])) : nz(trailing_sl[1])
// Position var
pos := long_signal ? 1 : short_signal ? -1 : nz(pos[1])
//////////////
// PLOTINGS //
//Alerts
////////////
// Alerts //
tst(x)=> str.tostring(x)
var int dec = str.length(str.tostring(syminfo.mintick))-2
trc(number) =>
factor = math.pow(10, dec)
int(number * factor) / factor
trc_(number) =>
factor = math.pow(10, 0)
int(number * factor) / factor
xsrc = close
xprd1 = 12
xsrc2 = close
xprd2 = 26
xsmooth = 1
//****************************************************************************//
// Define Color Zones
//****************************************************************************//
// Define Buy and Sell condition
// This is only for thebasic usage of CDC Actionzone (EMA Crossover)
// ie. Buy on first green bar and sell on first red bar
//****************************************************************************//
// Label
//labelstyle = label.style_label_lower_left
labelstyle = close > SlowMA ? label.style_label_down : label.style_label_up
labelyloc = close > SlowMA ? yloc.abovebar : yloc.belowbar
labeltcolor = buy ? color.black : sell ? color.white : close > close[1] ? bullcolor
: bearcolor
labelbgcolor = buy ? bullcolor : sell ? bearcolor : color.silver
labeltext = buy ? 'Long on next bar\n' : sell ? 'Short on next bar\n' : ' '
trendText = bullTribbonish ? 'Bullish' : Tribbonish ? 'Bearish' : 'Sideways'
//-----------------------------------------
//*********************************************************
//* Module *
//* Signals - SL - TPSEND *
//*********************************************************
//https://t.me/kakupakat_trading_oficial
// Cálculos
groupEnTpSl = "Module - Signals"
//plot(na)
numTP_tip = " Number of Take Profit Levels, min 1 max 10 / Número de niveles de
toma de ganancias, mínimo 1 máximo 10 "
numTP = input.int(4, "Number of Take Profit Levels 💪", minval=1, maxval=10,tooltip
=numTP_tip ,group=groupEnTpSl)
trigger = long_signal ? 1 : 0
atrBand = ta.atr(atrLen) * atrRisk
atrStop = trigger == 1 ? low - atrBand : high + atrBand
lastTrade(src) => ta.valuewhen(changeCond, src, 0 )
if PercentOrATR == "ATR"
atrStop := atrStop
atrSL := atrStop
else
// Lógica para las opciones "PERCENTAGE" y "PREDICTUM"
if PercentOrATR == "PERCENTAGE"
atrStop := Distance_CTp
atrSL := Distance_CSL
else if PercentOrATR == "PREDICTUM"
atrStop := Distance_CTpre // Ajusta según tu lógica específica para
"PREDICTUM"
atrSL := Distance_CSL
//numTP := 8
if trigger
countOfCandles := 0
else
countOfCandles := na(countOfCandles) ? 0 : countOfCandles + 1
//ENTRADA
entry = levels ? label.new(time, close, "ENTRY " + str.tostring(lastTrade(close),
"#.#####"), xloc.bar_time, yloc.price, psar_longColor, label.style_label_left,
color.rgb(0, 0, 0), size.normal) : na
label.set_y(entry, lastTrade(close))
label.delete(entry[1])
stop_y = lastTrade(atrSL)
//################################################################
tf = timeframe.period
miSimbolo = ticker.standard(syminfo.tickerid)
//========================================================================
//*********************************************************
// Función para crear TP y líneas by CoMgUnNeR
// ¡Codigo mas simplificado da creditos al autor! me costo bastante.
//https://t.me/kakupakat_trading_oficial
//*********************************************************
if PercentOrATR == "PREDICTUM"
if level == 1
tp_y := (lastTrade(close) - lastTrade(atrStop)) * level +
lastTrade(close)
else
tp_y := tp_y + (tp_y - lastTrade(close)) * 0.618
tp = label.new(time, tp_y, "TP " + str.tostring(level) + " " + emoji + " "
+ str.tostring(tp_y, "#.#####"), xloc.bar_time, yloc.price, color=lineColor,
style=label.style_label_left, textcolor=textColor, size=size.normal)
array.push(tpLabels, tp)
if lvlLines
tpLine = line.new(bar_index - countOfCandles, tp_y, bar_index +
lvlDistance, tp_y, xloc.bar_index, extend.none, lineColor, stylelvl,
width=lvlLinesw)
array.push(tpLines, tpLine)
if array.size(tpLines) > numTP
line.delete(array.get(tpLines, 0))
array.shift(tpLines)
if PercentOrATR == "PREDICTUM"
if level_info == 1
tp_y2 := (lastTrade(close) - lastTrade(atrStop)) * level_info +
lastTrade(close)
else
tp_y2 := tp_y2 + (tp_y2 - lastTrade(close)) * 0.618
label.delete(lab_buy[1])
//################################################################
// Define variables for strategy exit
// Define variables for strategy exit
var int qty_percent = na
var int limit_price = na
var bool tp_reached = na
// Variable de script para qtytps
var int qtytps = na
createTP3(level_stg) =>
// Declarar una variable local
var bool _tp_reached = na
if bar_index > 10
var float tp_y3 = na
var string emoji = na
if PercentOrATR == "PREDICTUM"
if level_stg == 1
tp_y3 := (lastTrade(close) - lastTrade(atrStop)) * level_stg +
lastTrade(close)
else
tp_y3 := tp_y3 + (tp_y3 - lastTrade(close)) * 0.618
if showtagstrategy
// Modificar el mensaje de la alerta para incluir el nivel de Take
Profit
strategy.exit('TP ' + str.tostring(level_stg), limit=tp_y3, comment='TP
' + str.tostring(level_stg) + ' Close: ' + str.tostring(close), alert_message='🎯
Take Profit ' + str.tostring(level_stg) + ' Reached', qty_percent=qtytps)
//+ str.tostring(numtp)
// Devolver la variable local
_tp_reached
//################################################################
// Module - DASHBOARD
//-----------------------------------------
// Module by @comgunner
//*********************************************************
//* Module *
//* DASHBOARD *
//*********************************************************
//https://t.me/kakupakat_trading_oficial
// Calculations
// Squeeze
//
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░
// ————— SqueezeSettings_dash
squeezeConvtip_dash ="Prices being squeezed refer to the action of price being
compressed within a tightening area"
squeezeConv_dash = input(50, 'Convergence Factor', tooltip = squeezeConvtip_dash)
squeezeLengthtip_dash= "The above chart makes use of a convergence factor of 100
and a period of 10."
squeezeLength_dash = input(20, 'Squeeze Periods', tooltip =
squeezeLengthtip_dash)
squeezeSrc_dash = input(close)
//-----------------------------------------------------------------------------}
// ————— Squeeze index_dash
//-----------------------------------------------------------------------------{
var max_dash = 0.
var min_dash = 0.
max_dash := nz(math.max(squeezeSrc_dash, max_dash - (max_dash - squeezeSrc_dash) /
squeezeConv_dash), squeezeSrc_dash)
min_dash := nz(math.min(squeezeSrc_dash, min_dash + (squeezeSrc_dash - min_dash) /
squeezeConv_dash), squeezeSrc_dash)
diff_dash = math.log(max_dash - min_dash)
squeezePsi_dash = -50 * ta.correlation(diff_dash, bar_index, squeezeLength_dash) +
50
squeezePsiRage_dash = squeezePsi_dash > 80
//Checks if the Current State is an Uptrend or Downtrend for the Trend Panel
up_dash = "🟢"
down_dash = "🔴"
oneMTrend_dash = oneMUp_dash ? up_dash : down_dash
fiveMTrend_dash = fiveMUp_dash ? up_dash : down_dash
fifteenMTrend_dash = fifteenMUp_dash ? up_dash : down_dash
thirtyMTrend_dash = thirtyMUp_dash ? up_dash : down_dash
+ "\n━━━━━━━━━━━━━━━━━"
+ "\n Trend Panel"
+ "\n━━━━━━━━━━━━━━━━━"
+ "\n 1 Minute | " + oneMTrend_dash + " 15 Minute | " +
fifteenMTrend_dash
+ "\n 5 Minute | " + fiveMTrend_dash + " 30 Minute | " +
thirtyMTrend_dash
+ "\n 1 Hour | " + oneHTrend_dash + " Daily | " +
dailyTrend_dash
+ "\n 2 Hour | " + twoHTrend_dash + " Weekly | " + weeklyTrend_dash
+ "\n 4 Hour | " + fourHTrend_dash + " Monthly | " +
monthlyTrend_dash
+ "\n━━━━━━━━━━━━━━━━━"
+ "\n 💎 KAKUPAKAT TRADING 💎",
color=dashColor_dash, xloc= xloc.bar_time, style=label.style_label_left,
textcolor=dashTextColor_dash, textalign=text.align_left)
label.set_x(Label_dash, label.get_x(Label_dash) +
math.round(ta.change(time)*dashDist_dash))
label.delete(Label_dash[1])
//@version=5
// © kakupakat_trading 2024
//https://t.me/kakupakat_trading_oficial
//Disclaimer: This script is free and should not be sold. It’s fine to take ideas
to create something new,
//but it’s not okay to claim this work as your own. The goal is to encourage the
development of better tools
//that are accessible to everyone, from beginner programmers to more advanced ones.
The purpose is to build
//a community based on shared knowledge and collective growth.
//@version=5
//indicator("INFOBOX by comgunner ", overlay = true
// , max_labels_count = 500
// , max_lines_count = 500
// , max_boxes_count = 500
// , max_bars_back = 500
// , precision=4
// , linktoseries=true
// , max_bars_back=1000
// , max_lines_count=500
// , shorttitle = ' INFOBOX by comgunner ')
// Module - Operations
//-----------------------------------------
//*********************************************************
//* Module *
//* Operations *
//*********************************************************
// Calculations
// MACDSection
//MACDTitle = splitter + nl
[macd, macdsignal, macdhist] = ta.macd(close, fastlen=12, slowlen=26, siglen=9)
trendMACDUp = macdhist > 0
trendMACDDn = macdhist < 0
// RSISection
//RSITitle = splitter + nl
rsibase2 = ta.rsi(close, 7)
rsibase = ta.rsi(close, 14)
rsibase3 = ta.rsi(close, 21)
Trend_RSI_overb = rsibase > 80 and rsibase2 > 80 or rsibase2 > 80 and rsibase3 >
80 or rsibase > 80 and rsibase3 > 80
Trend2_RSI_overs = rsibase < 20 and rsibase2 < 20 or rsibase2 < 20 and rsibase3 <
20 or rsibase < 20 and rsibase3 < 20
//RSI GOLDEN CROSS COMGUNNER INICIO
rsiLengthInput = 14
rsiSourceInput = input.source(close, group=groupinfboxRsi)
//RSIcrossTitle = splitter + nl
goldenrsiUp = ta.crossover(rsi,rsiMA) and rsiMA < prevrsiMA and rsiMA < prevrsiMA2
goldenrsiDn = ta.crossunder(rsi,rsiMA) and rsiMA > prevrsiMA and rsiMA >
prevrsiMA2
// Inputs ADX
DMIlength = 14
ATRADX = ta.atr(14)
//TERMINA ADX
// Calculate BB
sourceSqueeze = close
basisSqueeze = ta.sma(sourceSqueeze, lengthSqueeze)
devSqueeze = multKCSqueeze * ta.stdev(sourceSqueeze, lengthSqueeze)
upperBBSqueeze = basisSqueeze + devSqueeze
lowerBBSqueeze = basisSqueeze - devSqueeze
// Calculate KC
maSqueeze = ta.sma(sourceSqueeze, lengthKCSqueeze)
rangeValSqueeze = useTrueRangeSqueeze ? ta.tr : (high - low)
rangemaSqueeze = ta.sma(rangeValSqueeze, lengthKCSqueeze)
upperKCSqueeze = maSqueeze + rangemaSqueeze * multKCSqueeze
lowerKCSqueeze = maSqueeze - rangemaSqueeze * multKCSqueeze
// Stoch
periodK2 = 7
periodD2 = 3
smoothK2 = 3
//TIPO3
periodK3 = 21
periodD3 = 3
smoothK3 = 3
//STD
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
//tp2
k2 = ta.sma(ta.stoch(close, high, low, periodK2), smoothK2)
d2 = ta.sma(k2, periodD2)
//tp3
k3 = ta.sma(ta.stoch(close, high, low, periodK3), smoothK3)
d3 = ta.sma(k3, periodD3)
Trend1stoch = k > 80 and k2 > 80 or k2 > 80 and k3 > 80 or k > 80 and k3 > 80
Trend2stoch = k < 20 and k2 < 20 or k2 < 20 and k3 < 20 or k < 20 and k3 < 20
//EstochasticSection = i_showEstochastic ? nl + EstochasticTitle + nl +
f_strHelp('STOCH K:', k, 1) + f_strHelp('STOCH D:', d, 1) + nl + Trend1stoch +
Trend2stoch + nl : na + nl
Trend1stochcrossUp = ta.crossover(k, d)
Trend2stochcrossDn = ta.crossunder(k, d)
//*********************************************************
//** INFORMATION BOX **
//** HORIZONTAL **
//*********************************************************
groupINFOBOXH = "======= INFOBOX HORIZONTAL ======= "
plot(na)
if showsmasinfoboxh
// Columnas originales
table.cell(table_id = infoboxhTable, column = 0, row = 0, bgcolor = kakupakat,
text_color = color.orange, text = "RSI", text_size = font_size_infob)
table.cell(table_id = infoboxhTable, column = 1, row = 0, bgcolor = kakupakat,
text_color = color.orange, text = "RSI 🚨", text_size = font_size_infob)
table.cell(table_id = infoboxhTable, column = 2, row = 0, bgcolor = kakupakat,
text_color = color.orange, text = "mRSI T. 🚨", text_size = font_size_infob)
table.cell(table_id = infoboxhTable, column = 3, row = 0, bgcolor = kakupakat,
text_color = color.orange, text = "MACD T. 📊", text_size = font_size_infob)
table.cell(table_id = infoboxhTable, column = 4, row = 0, bgcolor = kakupakat,
text_color = color.orange, text = "DIR SQM 🚨", text_size = font_size_infob)