Алексей Ч (Автор тем)

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

Страницы: 1
GetItem запаздывает в индикаторе?
 
Обнаружил, что getItem из таблицы всех сделок в индикаторе запаздывает.
Итак, делаем простой, но "тяжелый" индикатор
Код
Settings = {
    Name = "*MyTest3",
    line =  {Name = "Test", Color = RGB(0, 100, 0), Type = TYPE_CANDLE, Width = 1}
}

local counter = 0
local lastNum = 0
function Init()
    return 1
end

function OnCalculate(index)
    if index == Size() then
        local n = getNumberOf("all_trades")
        for i = lastNum, n - 1 do
            row = getItem("all_trades", i)
            if row.period == 1 and row.sec_code == "RIM8" and row.class_code == "SPBFUT" then
                counter = counter + row.qty
            end
        end
        lastNum = n
        return counter
    end
end



Накладываем на дневной график только за сегодня на подключенный квик. По идее, объем и показания индикатора должны совпадать, но есть разница на одну самую последнюю сделку.
Сохранение истории индикатора
 
Задача больше концептуальная. Есть индикатор, который обрабатывает таблицу все сделок. Соответственно, таблица каждый день новая... Вопрос в том, чтобы как то сохранять историю вычислений за предыдущие дни, допустим, в файл. Сохранение в файл не проблема, проблема в том, что скрипт индикатора должен как -то узнать, когда записывать данные в файл.
Вряд ли функция OnCalculate знает, что она сегодня вызывается последний раз. Возможно ли как-то запустить функцию OnCalculate (или какую то другую функция) по времени из индикатора, допустим в 23:55?
OnCalculate. Двойной проход при изменении свойств индикатора
 
Добрый день.
Заметил такую особенность. При добавлении своего индикатора, OnCalculate, как и положено, "проходит" по всем свечкам. Но при изменении свойств индикатора, происходит два "прохода". Первый со старыми свойствами, второй с новыми. Так и должно быть? Квик в офлайне.
Код
Settings= 
{
 Name = "Example1" ,
 Mult = 1 
} 
function Init() 
 OnCalcCo unt=0
 return 1 
end 
function OnCalculate(index) 
 OnCalcCo unt=OnCalcCount+1
 PrintDbgStr("[QLUA] " .. tostring(OnCalcCount) .. "  Mult " .. tostring(Settings.Mult))
 return index*Settings.Mult
 -- return nil 
end
После добавления (счетчик увеличился на количество свечек)

Счетчик соответствует количеству свечей.
При изменении свойств счетчик вырос на двойное число свечей (два прохода)
Страницы: 1
Наверх