Надо пройтись по ней циклом, и получить в переменной подтаблицу, соответственно Si и Ri. Как это можно реализовать? Такая конструкция нифига не работает for i,tab_data in ipairs(ind) do
Виктор, Задавайте имена полей таблиц как натуральные числа и не мучайтесь. У меня весь скрипт так построен - и нет проблем. Вот, например, оператор аж из двойного цикла: if a[i][8][j]~=0 then k=CF[a[i][9][j]+5];
Виктор написал: в переменной подтаблицу, соответственно Si и Ri.
В переменную две подтаблицы Si и Ri ? или как надо? Я не понял.
одну. в цикле перебираю ind, в переменную сначала си, потом ри. Чтобы их уже в свою очередь разобрать. Цель:иметь возможность быстро добавить другой символ без переделки и утяжеления скрипта
Владимир написал: Виктор, Задавайте имена полей таблиц как натуральные числа и не мучайтесь. У меня весь скрипт так построен - и нет проблем. Вот, например, оператор аж из двойного цикла: if a[8][j]~=0 then k=CF[a[9][j]+5];
И вам спасибо, точно же, он со строками даже число элементов не возвращает. В итоге получился алерт на объемы, неидеальный, но пока пойдет
Код
--скрипт надо сохранить в кодировке Windows-1251, иначе будут кракозябры
require "bot4sale64" --надо скачать и вставить в папку со скриптом, или удалить строку, но тогда звука не будет
local ind =
{
[1] =
{
ind_sub = "si_vol", --идентификатор отслеживаемого графика. Проставляется в настройках графика.
need_volume = 10 --требуемый объем выше которого будет сигнал
}, --не забыть запятую после вставки еще одного блока
[2] =
{
ind_sub = "ri_vol",
need_volume = 10
}
}
was_alert = {ind = ""}
IsRun = true
function main()
while IsRun do
for i,tab_data in pairs(ind) do
true_alert = true
candles = getNumCandles(tab_data.ind_sub);
tab, n, l = getCandlesByIndex (tab_data.ind_sub, 0, candles-1,1)
local O = tab[0].open; -- Получить значение Open для указанной свечи (цена открытия свечи)
local V = tab[0].volume; -- Получить значение Volume для указанной свечи (объем сделок в свече)
if V>tab_data.need_volume then
msg_alert = string.format("Повышенные объемы:%d;Символ:%s;цена открытия:%s",V,tab_data.ind_sub,O)
for i,alert_data in ipairs(was_alert) do --проверка на то, был ли уже такой алерт, чтобы повторно не срабатывало
if alert_data == msg_alert then
true_alert = false
break
end
end
if true_alert == true then
bot4sale64.PlaySound("Ахтунг.wav") --прописать свой звуковой файл и положить его в папку со скриптом
message(msg_alert,1)
table.insert(was_alert,msg_alert)
end
end
if #was_alert>(#ind*60) then --блок очистки памяти, так как этот список будет постоянно пополняться
while #was_alert~=#ind*60 do
table.remove(was_alert, 1)
end
end
end
end
sleep(1000); --задержка между проверками в милисекундах
end
function OnStop()
IsRun = false;
end