Ребята, я написал простой индикатор рассчитывающий индекс РТС по методичке с сайта московской биржи , т.е. по формуле:

Постоянную Koef я подобрал экспериментально, таким образом, чтобы в момент присоединения индикатора к графику он совпадал с текущий биржевым индексом РТС (RTSI). Коэффициенты W, C, Q и N взяты из таблицы http://moex.com/a3006
Код индикатора вы видите в самом низу. Сам индикатор можно скачать по ссылке http://www.fayloobmennik.net/4924847
Индикатор строит график только в текущий момент времени и по текущим ценам акций. И вот что из этого получается:

Свечной график - это индекс РТС, который предоставляет биржа, а зелёная линия это рассчитанный по моему алгоритму индикатор.
Скажите, пожалуйста, что я делаю не так и почему возникает рассогласование ?
Код |
---|
Settings= { Name = "RTSI", period = 1, line = { { Name = "One", Color = RGB(128, 255, 0), Type = TYPE_LINE, Width = 3 } } } function Init() Koef = 7.17265984478 * 1000000000 k=0 C = {} --кол-во выпущенный акций C[1] = 23673512900 C[2] = 850563255 C[3] = 21586948000 C[4] = 1000000000 C[5] = 94561355 C[6] = 158245476 C[7] = 35725994705 C[8] = 7701998235 C[9] = 3036306000 C[10] = 1,29605E+13 C[11] = 10598177817 C[12] = 2066413562 C[13] = 2178690700 C[14] = 147508500 C[15] = 1554875 C[16] = 2936015891 C[17] = 837718660 C[18] = 7364965630 C[19] = 2278636493 C[20] = 620000000 C[21] = 3,86255E+11 C[22] = 266774342 C[23] = 2669204301 C[24] = 242831469 C[25] = 2000000000 C[26] = 5993227240 C[27] = 9650000000 C[28] = 3032149962 C[29] = 420819943 C[30] = 150570662 C[31] = 29788012 C[32] = 129500000 C[33] = 660497344 C[34] = 63048706145 C[35] = 11174330000 C[36] = 1,27467E+12 C[37] = 103030215 C[38] = 124750000 C[39] = 43963773 C[40] = 1,044E+11 C[41] = 37792603 C[42] = 40534000 C[43] = 1,61079E+11 C[44] = 1110616299 C[45] = 993586094 C[46] = 179768227 C[47] = 416270745 C[48] = 11529538 C[49] = 282215500 C[50] = 34270159 K_free_float = {} --коэф-нт free-float K_free_float[1] = 0.46 K_free_float[2] = 0.46 K_free_float[3] = 0.48 K_free_float[4] = 1 K_free_float[5] = 0.54 K_free_float[6] = 0.3 K_free_float[7] = 0.25 K_free_float[8] = 0.73 K_free_float[9] = 0.27 K_free_float[10] = 0.39 K_free_float[11] = 0.12 K_free_float[12] = 0.49 K_free_float[13] = 0.32 K_free_float[14] = 1 K_free_float[15] = 1 K_free_float[16] = 0.33 K_free_float[17] = 0.21 K_free_float[18] = 0.23 K_free_float[19] = 0.56 K_free_float[20] = 0.15 K_free_float[21] = 0.34 K_free_float[22] = 0.3 K_free_float[23] = 0.28 K_free_float[24] = 0.6 K_free_float[25] = 0.08 K_free_float[26] = 0.14 K_free_float[27] = 0.36 K_free_float[28] = 0.1 K_free_float[29] = 0.25 K_free_float[30] = 0.12 K_free_float[31] = 0.63 K_free_float[32] = 0.19 K_free_float[33] = 0.32 K_free_float[34] = 0.18 K_free_float[35] = 0.14 K_free_float[36] = 0.21 K_free_float[37] = 0.33 K_free_float[38] = 0.33 K_free_float[39] = 0.51 K_free_float[40] = 0.18 K_free_float[41] = 0.39 K_free_float[42] = 0.16 K_free_float[43] = 0.14 K_free_float[44] = 0.32 K_free_float[45] = 0.28 K_free_float[46] = 0.42 K_free_float[47] = 0.35 K_free_float[48] = 0.1 K_free_float[49] = 0.34 K_free_float[50] = 0.46 K_m = {} --коэф-нт ограничивающий вес акции K_m[1] = 0.7442309 K_m[2] = 1 K_m[3] = 1 K_m[4] = 1 K_m[5] = 1 K_m[6] = 1 K_m[7] = 1 K_m[8] = 1 K_m[9] = 1 K_m[10] = 1 K_m[11] = 1 K_m[12] = 1 K_m[13] = 1 K_m[14] = 1 K_m[15] = 1 K_m[16] = 1 K_m[17] = 1 K_m[18] = 1 K_m[19] = 1 K_m[20] = 1 K_m[21] = 1 K_m[22] = 1 K_m[23] = 1 K_m[24] = 1 K_m[25] = 1 K_m[26] = 1 K_m[27] = 1 K_m[28] = 1 K_m[29] = 1 K_m[30] = 1 K_m[31] = 1 K_m[32] = 1 K_m[33] = 1 K_m[34] = 1 K_m[35] = 1 K_m[36] = 1 K_m[37] = 1 K_m[38] = 1 K_m[39] = 1 K_m[40] = 1 K_m[41] = 1 K_m[42] = 1 K_m[43] = 1 K_m[44] = 1 K_m[45] = 1 K_m[46] = 1 K_m[47] = 1 K_m[48] = 1 K_m[49] = 1 K_m[50] = 1 LastPrice = {} return 1 end function OnCalculate(index) RTSI = 0 MC_n = 0 table = getParamEx("TQBR", "GAZP", "LAST") LastPrice[1] = table.param_value table = getParamEx("TQBR", "LKOH", "LAST") LastPrice[2] = table.param_value table = getParamEx("TQBR", "SBER", "LAST") LastPrice[3] = table.param_value table = getParamEx("TQBR", "SBERP", "LAST") LastPrice[4] = table.param_value table = getParamEx("TQBR", "MGNT", "LAST") LastPrice[5] = table.param_value table = getParamEx("TQBR", "GMKN", "LAST") LastPrice[6] = table.param_value table = getParamEx("TQBR", "SNGS", "LAST") LastPrice[7] = table.param_value table = getParamEx("TQBR", "SNGSP", "LAST") LastPrice[8] = table.param_value table = getParamEx("TQBR", "NVTK", "LAST") LastPrice[9] = table.param_value table = getParamEx("TQBR", "VTBR", "LAST") LastPrice[10] = table.param_value table = getParamEx("TQBR", "ROSN", "LAST") LastPrice[11] = table.param_value table = getParamEx("TQBR", "MTSS", "LAST") LastPrice[12] = table.param_value table = getParamEx("TQBR", "TATN", "LAST") LastPrice[13] = table.param_value table = getParamEx("TQBR", "TATNP", "LAST") LastPrice[14] = table.param_value table = getParamEx("TQBR", "TRNFP", "LAST") LastPrice[15] = table.param_value table = getParamEx("TQBR", "URKA", "LAST") LastPrice[16] = table.param_value table = getParamEx("TQBR", "CHMF", "LAST") LastPrice[17] = table.param_value table = getParamEx("TQBR", "ALRS", "LAST") LastPrice[18] = table.param_value table = getParamEx("TQBR", "MOEX", "LAST") LastPrice[19] = table.param_value table = getParamEx("TQBR", "MFON", "LAST") LastPrice[20] = table.param_value table = getParamEx("TQBR", "HYDR", "LAST") LastPrice[21] = table.param_value table = getParamEx("TQBR", "YNDX", "LAST") LastPrice[22] = table.param_value table = getParamEx("TQBR", "RTKM", "LAST") LastPrice[23] = table.param_value table = getParamEx("TQBR", "RTKMP", "LAST") LastPrice[24] = table.param_value table = getParamEx("TQBR", "RUALR", "LAST") LastPrice[25] = table.param_value table = getParamEx("TQBR", "NLMK", "LAST") LastPrice[26] = table.param_value table = getParamEx("TQBR", "AFKS", "LAST") LastPrice[27] = table.param_value table = getParamEx("TQBR", "PGIL", "LAST") LastPrice[28] = table.param_value table = getParamEx("TQBR", "POLY", "LAST") LastPrice[29] = table.param_value table = getParamEx("TQBR", "BANE", "LAST") LastPrice[30] = table.param_value table = getParamEx("TQBR", "BANEP", "LAST") LastPrice[31] = table.param_value table = getParamEx("TQBR", "PHOR", "LAST") LastPrice[32] = table.param_value table = getParamEx("TQBR", "PIKK", "LAST") LastPrice[33] = table.param_value table = getParamEx("TQBR", "EONR", "LAST") LastPrice[34] = table.param_value table = getParamEx("TQBR", "MAGN", "LAST") LastPrice[35] = table.param_value table = getParamEx("TQBR", "FEES", "LAST") LastPrice[36] = table.param_value table = getParamEx("TQBR", "LSRG", "LAST") LastPrice[37] = table.param_value table = getParamEx("TQBR", "DIXY", "LAST") LastPrice[38] = table.param_value table = getParamEx("TQBR", "GCHE", "LAST") LastPrice[39] = table.param_value table = getParamEx("TQBR", "IRAO", "LAST") LastPrice[40] = table.param_value table = getParamEx("TQBR", "PHST", "LAST") LastPrice[41] = table.param_value table = getParamEx("TQBR", "AKRN", "LAST") LastPrice[42] = table.param_value table = getParamEx("TQBR", "RSTI", "LAST") LastPrice[43] = table.param_value table = getParamEx("TQBR", "AFLT", "LAST") LastPrice[44] = table.param_value table = getParamEx("TQBR", "TRMK", "LAST") LastPrice[45] = table.param_value table = getParamEx("TQBR", "MVID", "LAST") LastPrice[46] = table.param_value table = getParamEx("TQBR", "MTLR", "LAST") LastPrice[47] = table.param_value table = getParamEx("TQBR", "VSMO", "LAST") LastPrice[48] = table.param_value table = getParamEx("TQBR", "MSTT", "LAST") LastPrice[49] = table.param_value table = getParamEx("TQBR", "SVAV", "LAST") LastPrice[50] = table.param_value i=1 while (i <= 50) do MC_n = MC_n + LastPrice[i] * C[i] * K_free_float[i] * K_m[i] i = i+1 end return (MC_n/Koef) end |