Traduzione codice TW volatility report
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Traduzione codice TW volatility report
- This topic has 2 replies, 2 voices, and was last updated 1 week ago by
Msport71.
Viewing 3 posts - 1 through 3 (of 3 total)
-
-
09/30/2025 at 9:05 AM #252018
Buongiorno,
chiedo cortese traduzione codice in oggetto, che analizza volatilità daily su base oraria tramite istogramma.
Grazie per il consueto aiuto.
https://it.tradingview.com/script/ddgvttDd-Time-of-Day-Volatility-Report/
10/02/2025 at 10:11 AM #252092ecco:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838//--------------------------------------------------------------------// CONFIGURACIÓN DE USUARIO//--------------------------------------------------------------------// Periodo para el cálculo del ATR diario. Por defecto: 20atrPeriod = 20// Tipo de salida: 1 = Media (Mean), 2 = Mediana (Median). Por defecto: 2outputType = 2// Rango de fechas para el análisis (Formato: YYYYMMDD)startDate = 19750101endDate = 20501231// Colores para el gradiente de volatilidad// Color para baja volatilidad (R, G, B)lowVolatilityR = 0lowVolatilityG = 0lowVolatilityB = 255 // Azul// Color para alta volatilidad (R, G, B)highVolatilityR = 255highVolatilityG = 0highVolatilityB = 0 // Rojo// Parámetros de estilo de las columnasCOLUMNWIDTH = 2COLUMNGAP = 2//--------------------------------------------------------------------// INICIALIZACIÓN DE VARIABLES//--------------------------------------------------------------------// Contadores para cada array de datos por hora// Variables para seguimiento de la vela horariaONCE hourlyHigh = 0ONCE hourlyLow = 0ONCE hourlyPrevClose = 0//--------------------------------------------------------------------// LÓGICA PRINCIPAL//--------------------------------------------------------------------// Obtener ATR DiarioTIMEFRAME(daily, updateonclose)dailyAtr = averagetruerange[atrPeriod](close)TIMEFRAME(default)// Comprobar si la vela actual está dentro del rango de fechasisInRange = (Date >= startDate AND Date <= endDate)// Detectar si es la primera vela de una nueva horaisFirstBarOfHour = (Hour <> Hour[1])// Procesar datos de la hora anterior cuando empieza una nuevaIF isFirstBarOfHour AND BarIndex > 0 THEN// Calcular el True Range de la hora que acaba de terminarhTR = max(hourlyHigh[1] - hourlyLow[1], MAX(abs(hourlyHigh[1] -hourlyPrevClose[1]), abs(hourlyLow[1] - hourlyPrevClose[1])))// Calcular volatilidad relativa y almacenar si está en rangoIF dailyAtr[1] > 0 THENrelativeToAtr = hTR / dailyAtr[1] * 100IF isInRange[1] THENcompletedHour = Hour[1] // Almacenar el valor en el array correspondiente a la hora completadaIF completedHour = 0 THEN$dataset0[count0] = relativeToAtrcount0 = count0 + 1ELSIF completedHour = 1 THEN$dataset1[count1] = relativeToAtrcount1 = count1 + 1ELSIF completedHour = 2 THEN$dataset2[count2] = relativeToAtrcount2 = count2 + 1ELSIF completedHour = 3 THEN$dataset3[count3] = relativeToAtrcount3 = count3 + 1ELSIF completedHour = 4 THEN$dataset4[count4] = relativeToAtrcount4 = count4 + 1ELSIF completedHour = 5 THEN$dataset5[count5] = relativeToAtrcount5 = count5 + 1ELSIF completedHour = 6 THEN$dataset6[count6] = relativeToAtrcount6 = count6 + 1ELSIF completedHour = 7 THEN$dataset7[count7] = relativeToAtrcount7 = count7 + 1ELSIF completedHour = 8 THEN$dataset8[count8] = relativeToAtrcount8 = count8 + 1ELSIF completedHour = 9 THEN$dataset9[count9] = relativeToAtrcount9 = count9 + 1ELSIF completedHour = 10 THEN$dataset10[count10] = relativeToAtrcount10 = count10 + 1ELSIF completedHour = 11 THEN$dataset11[count11] = relativeToAtrcount11 = count11 + 1ELSIF completedHour = 12 THEN$dataset12[count12] = relativeToAtrcount12 = count12 + 1ELSIF completedHour = 13 THEN$dataset13[count13] = relativeToAtrcount13 = count13 + 1ELSIF completedHour = 14 THEN$dataset14[count14] = relativeToAtrcount14 = count14 + 1ELSIF completedHour = 15 THEN$dataset15[count15] = relativeToAtrcount15 = count15 + 1ELSIF completedHour = 16 THEN$dataset16[count16] = relativeToAtrcount16 = count16 + 1ELSIF completedHour = 17 THEN$dataset17[count17] = relativeToAtrcount17 = count17 + 1ELSIF completedHour = 18 THEN$dataset18[count18] = relativeToAtrcount18 = count18 + 1ELSIF completedHour = 19 THEN$dataset19[count19] = relativeToAtrcount19 = count19 + 1ELSIF completedHour = 20 THEN$dataset20[count20] = relativeToAtrcount20 = count20 + 1ELSIF completedHour = 21 THEN$dataset21[count21] = relativeToAtrcount21 = count21 + 1ELSIF completedHour = 22 THEN$dataset22[count22] = relativeToAtrcount22 = count22 + 1ELSIF completedHour = 23 THEN$dataset23[count23] = relativeToAtrcount23 = count23 + 1ENDIFENDIFENDIFENDIF// Actualizar los valores de la hora en cursoIF isFirstBarOfHour THENhourlyHigh = highhourlyLow = lowhourlyPrevClose = close[1]ELSEhourlyHigh = max(hourlyHigh, high)hourlyLow = min(hourlyLow, low)ENDIF//--------------------------------------------------------------------// CÁLCULO FINAL Y DIBUJO (SOLO EN LA ÚLTIMA VELA)//--------------------------------------------------------------------IF islastbarupdate THEN// Array para los 24 resultados finalesUnSet($resultArray)// Bucle manual para las 24 horas// --- HORA 0 ---IF count0 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count0 - 1 DOsum = sum + $dataset0[i]NEXT$resultArray[0] = sum / count0ELSE // MedianaUnSet($temp)FOR i = 0 TO count0 - 1 DO$temp[i] = $dataset0[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[0] = medianENDIFENDIFENDIF// --- HORA 1 ---IF count1 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count1 - 1 DOsum = sum + $dataset1[i]NEXT$resultArray[1] = sum / count1ELSE // MedianaUnSet($temp)FOR i = 0 TO count1 - 1 DO$temp[i] = $dataset1[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[1] = medianENDIFENDIFENDIF// --- HORA 2 ---IF count2 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count2 - 1 DOsum = sum + $dataset2[i]NEXT$resultArray[2] = sum / count2ELSE // MedianaUnSet($temp)FOR i = 0 TO count2 - 1 DO$temp[i] = $dataset2[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[2] = medianENDIFENDIFENDIF// --- HORA 3 ---IF count3 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count3 - 1 DOsum = sum + $dataset3[i]NEXT$resultArray[3] = sum / count3ELSE // MedianaUnSet($temp)FOR i = 0 TO count3 - 1 DO$temp[i] = $dataset3[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[3] = medianENDIFENDIFENDIF// --- HORA 4 ---IF count4 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count4 - 1 DOsum = sum + $dataset4[i]NEXT$resultArray[4] = sum / count4ELSE // MedianaUnSet($temp)FOR i = 0 TO count4 - 1 DO$temp[i] = $dataset4[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[4] = medianENDIFENDIFENDIF// --- HORA 5 ---IF count5 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count5 - 1 DOsum = sum + $dataset5[i]NEXT$resultArray[5] = sum / count5ELSE // MedianaUnSet($temp)FOR i = 0 TO count5 - 1 DO$temp[i] = $dataset5[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[5] = medianENDIFENDIFENDIF// --- HORA 23 ---IF count23 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count23 - 1 DOsum = sum + $dataset23[i]NEXT$resultArray[23] = sum / count23ELSE // MedianaUnSet($temp)FOR i = 0 TO count23 - 1 DO$temp[i] = $dataset23[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[23] = medianENDIFENDIFENDIF// --- HORA 6 ---IF count6 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count6 - 1 DOsum = sum + $dataset6[i]NEXT$resultArray[6] = sum / count6ELSE // MedianaUnSet($temp)FOR i = 0 TO count6 - 1 DO$temp[i] = $dataset6[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[6] = medianENDIFENDIFENDIF// --- HORA 7 ---IF count7 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count7 - 1 DOsum = sum + $dataset7[i]NEXT$resultArray[7] = sum / count7ELSE // MedianaUnSet($temp)FOR i = 0 TO count7 - 1 DO$temp[i] = $dataset7[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[7] = medianENDIFENDIFENDIF// --- HORA 8 ---IF count8 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count8 - 1 DOsum = sum + $dataset8[i]NEXT$resultArray[8] = sum / count8ELSE // MedianaUnSet($temp)FOR i = 0 TO count8 - 1 DO$temp[i] = $dataset8[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[8] = medianENDIFENDIFENDIF// --- HORA 9 ---IF count9 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count9 - 1 DOsum = sum + $dataset9[i]NEXT$resultArray[9] = sum / count9ELSE // MedianaUnSet($temp)FOR i = 0 TO count9 - 1 DO$temp[i] = $dataset9[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[9] = medianENDIFENDIFENDIF// --- HORA 10 ---IF count10 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count10 - 1 DOsum = sum + $dataset10[i]NEXT$resultArray[10] = sum / count10ELSE // MedianaUnSet($temp)FOR i = 0 TO count10 - 1 DO$temp[i] = $dataset10[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[10] = medianENDIFENDIFENDIF// --- HORA 11 ---IF count11 > 0 THENIF outputType = 1 THEN // Mediasum = 0FOR i = 0 TO count11 - 1 DOsum = sum + $dataset11[i]NEXT$resultArray[11] = sum / count11ELSE // MedianaUnSet($temp)FOR i = 0 TO count11 - 1 DO$temp[i] = $dataset11[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[11] = medianENDIFENDIFENDIF// --- HORA 12 ---IF count12 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count12 - 1 DOsum = sum + $dataset12[i]NEXT$resultArray[12] = sum / count12ELSEUnSet($temp)FOR i = 0 TO count12 - 1 DO$temp[i] = $dataset12[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[12] = medianENDIFENDIFENDIF// --- HORA 13 ---IF count13 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count13 - 1 DOsum = sum + $dataset13[i]NEXT$resultArray[13] = sum / count13ELSEUnSet($temp)FOR i = 0 TO count13 - 1 DO$temp[i] = $dataset13[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[13] = medianENDIFENDIFENDIF// --- HORA 14 ---IF count14 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count14 - 1 DOsum = sum + $dataset14[i]NEXT$resultArray[14] = sum / count14ELSEUnSet($temp)FOR i = 0 TO count14 - 1 DO$temp[i] = $dataset14[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[14] = medianENDIFENDIFENDIF// --- HORA 15 ---IF count15 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count15 - 1 DOsum = sum + $dataset15[i]NEXT$resultArray[15] = sum / count15ELSEUnSet($temp)FOR i = 0 TO count15 - 1 DO$temp[i] = $dataset15[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[15] = medianENDIFENDIFENDIF// --- HORA 16 ---IF count16 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count16 - 1 DOsum = sum + $dataset16[i]NEXT$resultArray[16] = sum / count16ELSEUnSet($temp)FOR i = 0 TO count16 - 1 DO$temp[i] = $dataset16[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[16] = medianENDIFENDIFENDIF// --- HORA 17 ---IF count17 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count17 - 1 DOsum = sum + $dataset17[i]NEXT$resultArray[17] = sum / count17ELSEUnSet($temp)FOR i = 0 TO count17 - 1 DO$temp[i] = $dataset17[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[17] = medianENDIFENDIFENDIF// --- HORA 18 ---IF count18 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count18 - 1 DOsum = sum + $dataset18[i]NEXT$resultArray[18] = sum / count18ELSEUnSet($temp)FOR i = 0 TO count18 - 1 DO$temp[i] = $dataset18[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[18] = medianENDIFENDIFENDIF// --- HORA 19 ---IF count19 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count19 - 1 DOsum = sum + $dataset19[i]NEXT$resultArray[19] = sum / count19ELSEUnSet($temp)FOR i = 0 TO count19 - 1 DO$temp[i] = $dataset19[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[19] = medianENDIFENDIFENDIF// --- HORA 20 ---IF count20 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count20 - 1 DOsum = sum + $dataset20[i]NEXT$resultArray[20] = sum / count20ELSEUnSet($temp)FOR i = 0 TO count20 - 1 DO$temp[i] = $dataset20[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[20] = medianENDIFENDIFENDIF// --- HORA 21 ---IF count21 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count21 - 1 DOsum = sum + $dataset21[i]NEXT$resultArray[21] = sum / count21ELSEUnSet($temp)FOR i = 0 TO count21 - 1 DO$temp[i] = $dataset21[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[21] = medianENDIFENDIFENDIF// --- HORA 22 ---IF count22 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count22 - 1 DOsum = sum + $dataset22[i]NEXT$resultArray[22] = sum / count22ELSEUnSet($temp)FOR i = 0 TO count22 - 1 DO$temp[i] = $dataset22[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[22] = medianENDIFENDIFENDIF// --- HORA 23 ---IF count23 > 0 THENIF outputType = 1 THENsum = 0FOR i = 0 TO count23 - 1 DOsum = sum + $dataset23[i]NEXT$resultArray[23] = sum / count23ELSEUnSet($temp)FOR i = 0 TO count23 - 1 DO$temp[i] = $dataset23[i]NEXTArraySort($temp, ASCEND)sortedSize = LastSet($temp) + 1IF sortedSize > 0 THENIF (sortedSize MOD 2) = 1 THENmedian = $temp[(sortedSize - 1) / 2]ELSEmedian = ($temp[sortedSize / 2 - 1] + $temp[sortedSize / 2]) / 2ENDIF$resultArray[23] = medianENDIFENDIFENDIF//--------------------------------------------------------------------// --- DIBUJO DE LAS COLUMNAS ---//--------------------------------------------------------------------resultMin = ArrayMin($resultArray)resultMax = ArrayMax($resultArray)irange = resultMax - resultMingridMultiplier = COLUMNWIDTH + COLUMNGAPFOR i = 0 TO 23 DOhasValue = IsSet($resultArray[i])IF hasValue THENy = round($resultArray[i],0)ELSEy = 0ENDIFx1 = barindex + (i - 23) * gridMultiplierx2 = x1 + COLUMNWIDTHcenter = x1 + COLUMNWIDTH / 2// Cálculo del gradiente de colorIF irange > 0 THENpercentage = (y - resultMin) / irangeELSEpercentage = 0.5ENDIFcR = round(lowVolatilityR + percentage * (highVolatilityR - lowVolatilityR))cG = round(lowVolatilityG + percentage * (highVolatilityG - lowVolatilityG))cB = round(lowVolatilityB + percentage * (highVolatilityB - lowVolatilityB))// Dibujar columnaDRAWRECTANGLE(x1, 0, x2, y) COLOURED(cR, cG, cB) BORDERCOLOR(cR, cG, cB)// Dibujar leyenda (hora)DRAWTEXT(i, center, -1) ANCHOR(TOP, INDEX, VALUE) COLOURED("gray")// Dibujar valorIF hasValue THENDRAWTEXT(y, center, y*1.1) ANCHOR(BOTTOM, INDEX, VALUE) COLOURED(cR, cG, cB)ENDIFNEXTENDIFRETURN -2 coloured("black",0), ArrayMax($resultArray)*1.251 user thanked author for this post.
10/02/2025 at 2:45 PM #252103 -
AuthorPosts
Viewing 3 posts - 1 through 3 (of 3 total)
Find exclusive trading pro-tools on
Similar topics: