finsight / QUIKSharp

QUIK# (QUIK Sharp) is the QUIK Lua interface ported to .NET.
Other
231 stars 135 forks source link

В событии OnAllTrade не приходят исторические сделки. #285

Open Sergey-A-Dvortsov opened 3 years ago

Sergey-A-Dvortsov commented 3 years ago

При старте api в событии OnAllTrade приходят только текущие сделки. Есть ли возможность в quiksharp загружать сделки с начала торговой сессии?

Pr0phet1c commented 3 years ago

Они и в Квике (QLua) не приходят, на сколько мне известно (хотя, за несколько лет что-то могло измениться).

Sergey-A-Dvortsov commented 3 years ago

Они и в Квике (QLua) не приходят, на сколько мне известно (хотя, за несколько лет что-то могло измениться).

Есть такой загрузчик маркетдаты S#.Data, который также работает через QLua, там все приходит.

Neznakomec commented 3 years ago

Можно прошерстить всю таблицу обезличенных сделок

function main()
n = getNumberOf(“all_trades”)
order={}
message(“total “.. tostring(n) .. “ of all trades”, 1)
for i=0,n-1 do
trade = getItem(“all_trades”, i)
-- обработать обезличенную сделку
end

Но на счет коллбэка не уверен

Pr0phet1c commented 3 years ago

Предварительно: Реализовал функцию "GetAllTrades", но тестирование пока не выполнял, и как следствие в форк не выгружал. После НГ проверю как она работает. и если все будет нормально - выгружу.

UPD: В общем, во время проверки вспомнил, что я у своих брокеров не подписывался на получение потока всех сделок. В итоге, обновление выкатил, но проверить работоспособность не могу. Кто работает с этими данными - попробуйте самостоятельно, и дайте обратную связь. Для проверки можно использовать демо-приложение. Я добавил туда вызов этой функции.

iza88 commented 3 years ago

можно "очистить всё и начать заново" в quik запустить программу с QuikSharp потом залогиниться в терминале, и все сделки пойдут по новой

JakovlevAlexey commented 3 years ago

Предварительно: Реализовал функцию "GetAllTrades", но тестирование пока не выполнял, и как следствие в форк не выгружал. После НГ проверю как она работает. и если все будет нормально - выгружу.

UPD: В общем, во время проверки вспомнил, что я у своих брокеров не подписывался на получение потока всех сделок. В итоге, обновление выкатил, но проверить работоспособность не могу. Кто работает с этими данными - попробуйте самостоятельно, и дайте обратную связь. Для проверки можно использовать демо-приложение. Я добавил туда вызов этой функции.

QuikSharp.LuaException: "Command not implemented in Lua qsfunctions module: get_all_trades" QuikSharp.MessageConverter.Create(Type objectType, JObject jObject) в QuikSharp\Serialization.cs:268

Pr0phet1c commented 3 years ago

QuikSharp.LuaException: "Command not implemented in Lua qsfunctions module: get_all_trades" QuikSharp.MessageConverter.Create(Type objectType, JObject jObject) в QuikSharp\Serialization.cs:268

Вы уверены, что скопировали в папку, из которой запускаете скрипт Lua, обновленный файл qsfunctions.lua? Какой код у Вас в этом файле с 742 по 758 строки?

fedot161616 commented 3 years ago

1.функция GetAllTrades() возвращает List((Trade)), а должна вроде List((AllTrade)). 2.возможно ли сделать, чтобы она отдавала данные порциями ? (например по 16384 записей как в DDE). Спасибо.

Pr0phet1c commented 3 years ago

1.функция GetAllTrades() возвращает List((Trade)), а должна вроде List((AllTrade)). Пофиксил 2.возможно ли сделать, чтобы она отдавала данные порциями ? (например по 16384 записей как в DDE). Спасибо. На сколько я знаю, в QLua такое не предусмотрено.