// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mxmptr // Screener Alert Prezzo Rev. 1.3 // Rev1.1 - Aggiunto possibilità scelta dimensione testo cella // Aggiunto possibilità di impostare il numero di simboli da visualizzare // Rev1.2 - Sistemato errore nella visualizzazione dati della cella (Tolte due righe da testo cella) // Rev1.3 - Sistemato errore nella modifica dimensione testo e nella selezione dimensione automatica //@version=5 indicator("Screener Alert Prezzo rev1.3", format=format.price, overlay=false) // ---- Variabili input var GRP10 = 'Impostazioni tabella' symbolnum = input.int(40, 'Numero di simboli da visualizzare', minval=1, maxval=40, group='Impostazioni tabella') colnum = input.int(10, 'Numero di colonne', minval=1, group='Impostazioni tabella') rownum = input.int(4, 'Numero di righe', minval=1, group='Impostazioni tabella') rowheight = input.int(20, 'Altezza di ogni riga', minval=1, group='Impostazioni tabella') colwidth = input.int(9, 'Larghezza di ogni colonna', minval=1, group='Impostazioni tabella') celltextsizeinput = input.string('Piccolo','Dimensione testo', options=['Automatico', 'Minuscolo', 'Piccolo', 'Normale', 'Grande', 'Molto grande'], group='Impostazioni tabella' ) cell_color = input.color(color.silver, 'Colore cella', group=GRP10) celltextcolor = input.color(color.black, 'Colore testo cella', group=GRP10) celltextcolorsymbol = input.color(color.fuchsia, 'Colore testo cella simbolo selezionato', group=GRP10) cell_color_alert = input.color(color.orange, 'Colore cella con alert impostato', group=GRP10) cell_color_trasp_perc = input.int(3, 'Distanza % dal prezzo per impostare trasparenza colore', minval=0, maxval=100,group=GRP10) cell_color_trasp_enable = input.bool(true, 'Disabilita trasparenza colore', group=GRP10) celltextsize = switch celltextsizeinput 'Minuscolo' => size.tiny 'Piccolo' => size.small 'Normale' => size.normal 'Grande' => size.large 'Molto grande' => size.large 'Automatico' => size.auto // ----- Definizione tabella table_row_count = array.new_int(1) //keeps track of number of total entries array.set(table_row_count, 0, 0) var UpTabl = table.new(position=position.bottom_center, columns=colnum, rows=rownum, bgcolor=color.rgb(255, 255, 255), border_width=4, frame_color=color.black, frame_width=2) //------------------- f_chgpct(_ticker, _price) => symbol_close = request.security(_ticker, '', close, lookahead=barmerge.lookahead_on) cell_bg_color = cell_color cell_msg = '' trasparency = 0.0 float dist_perc = math.abs(1 - (close / _price)) * 100 if _price > 0.0 and cell_color_trasp_enable trasparency := dist_perc <= cell_color_trasp_perc ? dist_perc / cell_color_trasp_perc * 100 : 0 cell_bg_color := color.new(cell_color_alert, trasparency) if _ticker != '' cell_msg := _ticker + '\n' + 'Prezzo: ' + str.tostring(symbol_close) + '\nAlert: ' + str.tostring(_price) // + '\n' + str.tostring(trasparency) + '\n' + str.tostring(dist_perc) // Modifica colore testo se simbolo = a quello selezionato nel grafico celltxtcolor = celltextcolor if _ticker == syminfo.tickerid celltxtcolor := celltextcolorsymbol array.set(table_row_count, 0, array.get(table_row_count, 0) + 1) //Aggiorna contenuto cella if barstate.islast table.cell( table_id = UpTabl, column = int((array.get(table_row_count, 0) - 1) % colnum), width = colwidth + 1, height = rowheight, row = (array.get(table_row_count, 0) - 1) / colnum, text = cell_msg, text_size = celltextsize, text_color = celltxtcolor, text_halign= text.align_center, text_valign= text.align_top, bgcolor = cell_bg_color ) // ---- ALERTS -----Alerts if ta.crossunder(symbol_close, _price) or ta.crossover(symbol_close, _price) alert_msg = str.tostring(_ticker) + ' Attraversamento prezzo ' + str.tostring(_price) alert(alert_msg, alert.freq_once_per_bar ) // Simboli f_chgpct(input.symbol('', inline='1', title='S1', group='Simboli'), input.float(0.0, title='Prezzo:',inline='1', group='Simboli')) if symbolnum >=2 f_chgpct(input.symbol('', inline='2', title='S2', group='Simboli'), input.float(0.0, title='Prezzo:',inline='2', group='Simboli')) if symbolnum >=3 f_chgpct(input.symbol('', inline='3', title='S3', group='Simboli'), input.float(0.0, title='Prezzo:',inline='3', group='Simboli')) if symbolnum >=4 f_chgpct(input.symbol('', inline='4', title='S4', group='Simboli'), input.float(0.0, title='Prezzo:',inline='4', group='Simboli')) if symbolnum >=5 f_chgpct(input.symbol('', inline='5', title='S5', group='Simboli'), input.float(0.0, title='Prezzo:',inline='5', group='Simboli')) if symbolnum >=6 f_chgpct(input.symbol('', inline='6', title='S6', group='Simboli'), input.float(0.0, title='Prezzo:',inline='6', group='Simboli')) if symbolnum >=7 f_chgpct(input.symbol('', inline='7', title='S7', group='Simboli'), input.float(0.0, title='Prezzo:',inline='7', group='Simboli')) if symbolnum >=8 f_chgpct(input.symbol('', inline='8', title='S8', group='Simboli'), input.float(0.0, title='Prezzo:',inline='8', group='Simboli')) if symbolnum >=9 f_chgpct(input.symbol('', inline='9', title='S9', group='Simboli'), input.float(0.0, title='Prezzo:',inline='9', group='Simboli')) if symbolnum >=10 f_chgpct(input.symbol('', inline='10', title='S10', group='Simboli'), input.float(0.0, title='Prezzo:',inline='10', group='Simboli')) if symbolnum >=11 f_chgpct(input.symbol('', inline='11', title='S11', group='Simboli'), input.float(0.0, title='Prezzo:',inline='11', group='Simboli')) if symbolnum >=12 f_chgpct(input.symbol('', inline='12', title='S12', group='Simboli'), input.float(0.0, title='Prezzo:',inline='12', group='Simboli')) if symbolnum >=13 f_chgpct(input.symbol('', inline='13', title='S13', group='Simboli'), input.float(0.0, title='Prezzo:',inline='13', group='Simboli')) if symbolnum >=14 f_chgpct(input.symbol('', inline='14', title='S14', group='Simboli'), input.float(0.0, title='Prezzo:',inline='14', group='Simboli')) if symbolnum >=15 f_chgpct(input.symbol('', inline='15', title='S15', group='Simboli'), input.float(0.0, title='Prezzo:',inline='15', group='Simboli')) if symbolnum >=16 f_chgpct(input.symbol('', inline='16', title='S16', group='Simboli'), input.float(0.0, title='Prezzo:',inline='16', group='Simboli')) if symbolnum >=17 f_chgpct(input.symbol('', inline='17', title='S17', group='Simboli'), input.float(0.0, title='Prezzo:',inline='17', group='Simboli')) if symbolnum >=18 f_chgpct(input.symbol('', inline='18', title='S18', group='Simboli'), input.float(0.0, title='Prezzo:',inline='18', group='Simboli')) if symbolnum >=19 f_chgpct(input.symbol('', inline='19', title='S19', group='Simboli'), input.float(0.0, title='Prezzo:',inline='19', group='Simboli')) if symbolnum >=20 f_chgpct(input.symbol('', inline='20', title='S20', group='Simboli'), input.float(0.0, title='Prezzo:',inline='20', group='Simboli')) if symbolnum >=21 f_chgpct(input.symbol('', inline='21', title='S21', group='Simboli'), input.float(0.0, title='Prezzo:',inline='21', group='Simboli')) if symbolnum >=22 f_chgpct(input.symbol('', inline='22', title='S22', group='Simboli'), input.float(0.0, title='Prezzo:',inline='22', group='Simboli')) if symbolnum >=23 f_chgpct(input.symbol('', inline='23', title='S23', group='Simboli'), input.float(0.0, title='Prezzo:',inline='23', group='Simboli')) if symbolnum >=24 f_chgpct(input.symbol('', inline='24', title='S24', group='Simboli'), input.float(0.0, title='Prezzo:',inline='24', group='Simboli')) if symbolnum >=25 f_chgpct(input.symbol('', inline='25', title='S25', group='Simboli'), input.float(0.0, title='Prezzo:',inline='25', group='Simboli')) if symbolnum >=26 f_chgpct(input.symbol('', inline='26', title='S26', group='Simboli'), input.float(0.0, title='Prezzo:',inline='26', group='Simboli')) if symbolnum >=27 f_chgpct(input.symbol('', inline='27', title='S27', group='Simboli'), input.float(0.0, title='Prezzo:',inline='27', group='Simboli')) if symbolnum >=28 f_chgpct(input.symbol('', inline='28', title='S28', group='Simboli'), input.float(0.0, title='Prezzo:',inline='28', group='Simboli')) if symbolnum >=29 f_chgpct(input.symbol('', inline='29', title='S29', group='Simboli'), input.float(0.0, title='Prezzo:',inline='29', group='Simboli')) if symbolnum >=30 f_chgpct(input.symbol('', inline='30', title='S30', group='Simboli'), input.float(0.0, title='Prezzo:',inline='30', group='Simboli')) if symbolnum >=31 f_chgpct(input.symbol('', inline='31', title='S31', group='Simboli'), input.float(0.0, title='Prezzo:',inline='31', group='Simboli')) if symbolnum >=32 f_chgpct(input.symbol('', inline='32', title='S32', group='Simboli'), input.float(0.0, title='Prezzo:',inline='32', group='Simboli')) if symbolnum >=33 f_chgpct(input.symbol('', inline='33', title='S33', group='Simboli'), input.float(0.0, title='Prezzo:',inline='33', group='Simboli')) if symbolnum >=34 f_chgpct(input.symbol('', inline='34', title='S34', group='Simboli'), input.float(0.0, title='Prezzo:',inline='34', group='Simboli')) if symbolnum >=35 f_chgpct(input.symbol('', inline='35', title='S35', group='Simboli'), input.float(0.0, title='Prezzo:',inline='35', group='Simboli')) if symbolnum >=36 f_chgpct(input.symbol('', inline='36', title='S36', group='Simboli'), input.float(0.0, title='Prezzo:',inline='36', group='Simboli')) if symbolnum >=37 f_chgpct(input.symbol('', inline='37', title='S37', group='Simboli'), input.float(0.0, title='Prezzo:',inline='37', group='Simboli')) if symbolnum >=38 f_chgpct(input.symbol('', inline='38', title='S38', group='Simboli'), input.float(0.0, title='Prezzo:',inline='38', group='Simboli')) if symbolnum >=39 f_chgpct(input.symbol('', inline='39', title='S39', group='Simboli'), input.float(0.0, title='Prezzo:',inline='39', group='Simboli')) if symbolnum >=40 f_chgpct(input.symbol('', inline='40', title='S40', group='Simboli'), input.float(0.0, title='Prezzo:',inline='40', group='Simboli'))