CreateDataSource - возвращает дублированные свечи

Страницы: 1
RSS
CreateDataSource - возвращает дублированные свечи, CreateDataSource - возвращает дублированные свечи
 
CreateDataSource - возвращает дублированные свечи.

Б*ть не сколько можно ? Одни ошибки постоянные.

Почему CreateDataSource возвращает массив свечей с дублями ? Такое наблюдается не по всем интервалам и инстрементам, но встречается.

Вот скрипт которым проверял:
Код
CLASS_CODE = "TQBR"
SEC_CODE   = "GAZP"
INTERVAL   = INTERVAL_D1

ds = nil

function OnInit()
    message("Starting duplicate candles check (DataSource mode)")

    ds = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL)

    if ds == nil then
        message("Error: failed to create DataSource")
        return
    end

    while ds:Size() == 0 do
        sleep(100)
    end

    message("Data loaded. Candles count: " .. ds:Size())

    check_duplicates()
end

function check_duplicates()
    local groups = {}

    for i = 1, ds:Size() do
        local dt = ds:T(i)

        local key

        if dt ~= nil then
            -- если время нормальное
            if dt.hour ~= 0 or dt.min ~= 0 or (dt.sec or 0) ~= 0 then
                key = string.format("%04d%02d%02d %02d:%02d:%02d",
                    dt.year, dt.month, dt.day,
                    dt.hour, dt.min, dt.sec or 0)
            else
                -- fallback: только дата (важно!)
                key = string.format("%04d%02d%02d",
                    dt.year, dt.month, dt.day)
            end
        else
            key = "unknown"
        end

        if groups[key] == nil then
            groups[key] = {}
        end

        table.insert(groups[key], i)
    end

    local found = false

    for key, indexes in pairs(groups) do
        if #indexes > 1 then
            found = true
            message("Duplicate group: " .. key .. " | candles: " .. #indexes)

            for _, i in ipairs(indexes) do
                message(string.format(
                    "  index=%d O=%.2f H=%.2f L=%.2f C=%.2f V=%.0f",
                    i,
                    ds:O(i),
                    ds:H(i),
                    ds:L(i),
                    ds:C(i),
                    ds:V(i)
                ))
            end

        end
    end

    if not found then
        message("No duplicates found")
    end
end

function OnStop()
    if ds ~= nil then
        ds:Close()
    end
    message("Script stopped")
end
 
Или это косяк Брокера ?
 
Так всегда было, формат dat такой. И если юзать CreateDataSource с 4 параметром, и на графике, на котором этот 4-й параметр изображён, нажать F5, то в конец имеющегося датасорса придут все значения по параметру по очереди, как старые, так и новые. И так каждое нажатие F5.
 
Quikos_1,
Можете показать полностью свечи, дублируются?  
 
Цитата
nikolz написал:
Quikos_1 ,
Можете показать полностью свечи, дублируются?  
В каком смысле показать полностью свечи ? Просто весь массив из 3000 свечей D1 по газпрому ? Если да, то там будет два дубля, просто условно две пары одинаковых строку с одинаковыми парамтрами.
 
Цитата
Quikos_1 написал:
Цитата
nikolz написал:
 Quikos_1  ,
Можете показать полностью свечи, дублируются?  
В каком смысле показать полностью свечи ? Просто весь массив из 3000 свечей D1 по газпрому ? Если да, то там будет два дубля, просто условно две пары одинаковых строку с одинаковыми парамтрами.
нет, меня интересуют именно те свечи, которые дублируются.  если правильно понят, то вы получаете одну и туже свечу подряд. Хотел это увидеть чтобы понять, что не так.
У меня такого не было.  
 
Вы просто увидите две свеч подряд с разными индексами и одинаковыми параметрами даты, времмени и Open, High, Low, Close.

Это не по всем инстурментам, может быть по 10-15 из всего TQBR класса. И по 1-3 пары в инструменте. Может быть Вы просто не замечали... а может у Вас реально и не было. И если это косяк брокера, а не Quik`а, то может у Вашего брокера таких проблем нет. Но пока не понятно чья это ошибка.
Страницы: 1
Читают тему
Наверх