Closed Olddead91 closed 5 months ago
Потенциальная есть, но функция не совсем обычная, и с рядом ограничений. Ее нельзя использовать в произвольном месте. По сути, надо модифицировать работу таких функции как "GetAllCandles", "GetLastCandles", "Subscribe" и "Unsubscribe", в которых CreateDataSource уже применяется, но в своем старом виде, где нельзя было указывать дополнительные параметры. Не уверен, что результат будет скоро.
Ну, вроде получилось. Как это работает можно посмотреть в демо-приложении. Там эта функция выполняется с параметром "bid", но разницы в результатах я на первый взгляд не заметил.
Шикарно! Если все получилось, то вы фактически открыли возможность доступа к таблице истории изменения параметром и полной свободы от привязки к графику в квике!))) как протестирую, обязательно отпишусь,. Спасибо!
Странно конечно, но почему-то подписка идет на обычную свечу. Попробовал добавить param в эту часть кода qsfunctions.lua:
--- Возвращаем все свечи по заданному инструменту и интервалу
function qsfunctions.get_candles_from_data_source(msg)
local ds, is_error = create_data_source(msg)
if not is_error then
--- датасорс изначально приходит пустой, нужно некоторое время подождать пока он заполниться данными
repeat sleep(1) until ds:Size() > 0
local count = tonumber(split(msg.data, "|")[4]) --- возвращаем последние count свечей. Если равен 0, то возвращаем все доступные свечи.
local class, sec, interval, param = get_candles_param(msg)
local candles = {}
local start_i = count == 0 and 1 or math.max(1, ds:Size() - count + 1)
for i = start_i, ds:Size() do
local candle = fetch_candle(ds, i)
candle.sec = sec
candle.class = class
candle.interval = interval
candle.param= param
table.insert(candles, candle)
end
ds:Close()
msg.data = candles
end
return msg
function data_source_callback(index, class, sec, interval, param)
local key = get_key(class, sec, interval, param)
if index ~= last_indexes[key] then
last_indexes[key] = index
local candle = fetch_candle(data_sources[key], index - 1)
candle.sec = sec
candle.class = class
candle.interval = interval
candle.param= param
local msg = {}
msg.t = timemsec()
msg.cmd = "NewCandle"
msg.data = candle
sendCallback(msg)
end
end
И доп.поле в Candle.cs, чтобы можно было посмотреть в эвенте новой свечи, что туда приходит. Но приходит null, что на Тиковом интервале, что на любом другом
/// <summary>
/// Параметр свечи.
/// </summary>
[JsonProperty("param")]
public string Param { get; set; }
там есть ошибка. Задачка оказалась несколько сложнее, чем мне показалось на первый взгляд. Пытаюсь исправить.
Пофиксил. И "да" теперь данные приходят разные
Класс! Все работает, спасибо!
Здравствуйте. Функция CreateDataSource в qlua имеет возможность заказывать свечи и историю по определенным параметрам param из ТТТ (кол-во продавцов, биды и тп). TABLE data_source, STRING error_desc CreateDataSource (STRING class_code, STRING sec_code, NUMBER interval, [, STRING param]) Пример описывали на форуме Квика - https://forum.quik.ru/messages/forum10/message8259/topic110/#message8259 Есть-ли потенциальная возможно реализации этой функции?