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 |