Danial Novikov (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Расчёт индекса РТС
 
В качестве курса доллара я взял текущее (последние) значение инструмента USDRUB_TOM с биржи ММВБ.

table = getParamEx("CETS", "USD000UTSTOM", "LAST")
USDRUB = table.param_value

(смотрите стоку 306,307 индикатора).
Расчёт индекса РТС
 
Николай, я не думаю, что вы правы. Koef - это константа, и она влияет только на то, будет ли индикатор выше или ниже реального индекса РТС. На рисунке ниже, вы видите индикатор RTSI для разных значений Koef.


Из рисунка видно, что этот параметр не влияет на форму графика. И даже если я подобрал его не правильно, расчётное значение RTSI было бы строго параллельно реальному значению RTSI, которое предоставляет биржа.

Я, кстати, в первом посте ошибку допустил. Значение цены Pi берётся в долларах, а не в рублях. Поэтому, на мой взгляд, нужно разделить каждое значение Pi на текущий курс доллар/рубль. Индикатор с этим исправлением можно скачать по ссылке.
Расчёт индекса РТС
 
Ребята, я написал простой индикатор рассчитывающий индекс РТС по методичке с сайта московской биржи, т.е. по формуле:

Постоянную 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


Функция CreateDataSource
 
Дмитрий, просто видите ли в чём дело. Мой индикатор должен учитывать значение не только графика, к которому он прикреплён, но и значения других графиков. Точнее 50-ти графиков. Я хочу написать индикатор, который рассчитывал бы значение индекса РТС (RTSI) по графикам 50-ти наиболее ликвидных на российском фондовом рынке акций. Индекс RTSI который предоставляет биржа обновляется 5 раз в минуту, а неприемлемо для меня.

Единственный выход который я вижу, это открыть 50 графиков нужных мне акций, назначит каждому графику свой идентификатор и получать значение цены с этих графиков с помощью функции getCandlesByIndex. Это единственный выход?
Функция CreateDataSource
 
Скажите, а как её тогда использовать?
И как мне получить значение цены фьючерса RIM5 ?

Я знаю что данные с любого графика можно получать с помощью функции getCandlesByIndex, но она требует, чтобы это график был открыт и у него был назначен идентификатор, что очень неудобно.
Функция CreateDataSource
 
Здравствуйте. Скажите, пожалуйста, почему у меня не работает функция CreateDataSource. По аналогии с этой статьёй я пишу в своём индикаторе:

ds1 = CreateDataSource("SPBFUT", "RIM5", INTERVAL_M1, "last")

а в результате получаю ошибку:

attempt to call global 'CreateDataSource' (a nil value)
Горячие клавиши и виртуальные кнопки для QPile
 
Я хотел бы сделать QPile-привод, который совершал бы сделку при нажатии горячей клавиши (пробел) или создавал бы какую-нибудь виртуальную кнопку на мониторе, при щелчке на которую открывалась бы сделка.

Скажите, это возможно?
Страницы: 1
Наверх