Обычно на такое не отвечаю, но просто чтобы не набежала еще толпа желающих просто посотрясать воздух и пофилосовствовать, коих на форуме стала тьма, а не посоветовать что-то в конкретном коде: я вообще RSI не использую. Это простой пример.
Любой индикатор легко считается в скрипте qlua, сделать там же среднюю по значениям индикатора не проблема, вопрос именно в пристыковке средней к индикатору на графике силами кода индикатора.
Пытаюсь написать среднюю скользящую по RSI. Идентификатор на графике есть, но при запуске рисуется прямая. При этом после установки индикатора со временем постепенно идет прорисовка, но явно не средняя получается (картинка: https://dropmefiles.com/8uQPI )
Индикатор:
Код
Settings=
{
Name = "ma_rsi_period2",
period = 10,
ID_RSI = "SBER_RSI_ID",
line =
{
{ Name = "RSI MA Simple",
Color = #ff0000,
Type = TYPE_LINE,
Width = 2
}
}
}
function Init()
t = {}
start_ind = 0
tindex = 0
lastSMARSI = 0
return 1
end
function OnCalculate(index)
if index>=1 then
Graph_RSI, Number_RSI, Legend_RSI = getCandlesByIndex(Settings.ID_RSI, 0, index-1, 1)
else
return nil
end
if Graph_RSI~=0 then
local Graph_RSI = Graph_RSI[0].close
if Graph_RSI == 0 or Graph_RSI == nil then
return nil
else
if start_ind == 0 then start_ind = index end
end
if index < (Settings.period + start_ind) then
if tindex < index then
table.insert(t, Graph_RSI)
tindex = index
end
return nil
else
local sum = 0
if index > tindex then
table.insert(t, Graph_RSI)
table.remove(t, 1)
for i = 1, #t do
sum = sum + tonumber(t[i])
end
sum = sum + tonumber(Graph_RSI)
tindex = index
lastSMARSI = sum/Settings.period
return sum/Settings.period
end
return lastSMARSI
end
else
return nil
end
end
В код пришлось вводить много дополнительных условий и переменных, т.к. в процессе написания выяснилось, что иногда бывает несколько одинаковых index на свечу. Поэтому ввел lastSMARSI которая должна выводиться, если скрипт работает с той же самой свечкой.
Задумался как средствами qlua реализовать скрипт сохранения таблицы котировок в файл (*.txt). На форуме не нашел аналогичных кейсов, хотя, мне кажется, за годы кто-то должен был с подобными вопросами сталкиваться. Какие функции qlua рекомендуете поизучать, чтобы воплотить это в жизнь? На просторах интернета очень мало информации.
Знаю, что в Quik реализован очень хороший вариант вывода таблицы котировок в Excel по DDE. Использую это, макросом запускаю таймер и сохранение. Но мне необходимо сделать это на сервере, где не будет установлен Excel, поэтому и такая потребность в скрипте.