Костя (Все сообщения пользователя)

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

Страницы: 1
Более быстрый способ, all_trades
 
Цитата
Владимир написал:
Сроду не интересовали (и не заинтересуют) обезличенные сделки, но нажав тупо в Квике на эту таблицу (СПб), получил её примерно секунд за 10 (с прорисовкой!) Там на данный момент 563877 строк... ой, уже 563880 - таблица регулярно обновляется, и это время УЖ НИКАК не может быть больше, чем получение таблицы программным способом!
прежде чем глупости писать попробуйте просто на том же луа.создать   текстовый файл  и добавить все таблицу...
Более быстрый способ, all_trades
 
Сами
Цитата
nikolz написал:
Цитата
Костя написал:
 
Цитата
nikolz  написал:
Все смешалось - кони,люди

Зачем нагородили кашу из луа и шарпа?

Все делается без шарпов на луа без проблем.
--------------------------------------------------------------------------------------
Мы не ищем легких путей.  
Создадим себе трудности, чтобы потом искать того, кто их преодолеет для нас..
 В ОБЩЕМ проблема не решена

Квиж жутко тормозит  и набиваем массив
Освойте сначала луа а потом пишите на шарпе
нет желания разбираться с вашей кашей.
где же каша  ,вы в пару строк кода не можете разобраться
поясняю

function qsfunctions.all_trades(msg) -  // принимаю мессендж  в нем название  котировки
   local инструмент = msg.data .// инструмент =равен .например brx0
   local count = getNumberOf("all_trades") // кол- во  значений в таблице
   local t = {} -создаю массив
   for i = 1, count-1,1 do
     trades = getItem("all_trades", i)    // получаю строку  из таблицы all_trades
       if msg.data == "" or trades.sec_code == инструмент  and trades.datetime.hour >= 10 then
           t[#t+1] = trades // заношу  ее в массив
       end
   end
   msg.data = t  //как только  массив  из  all_trades заполнен // отправляю его в шарп.
   t = {} // очищаю массив
   return msg
end
===================
вернемся к моему вопросу,  как мгновенно получить  сразу  таблицу   обезличных сделок ?
Более быстрый способ, all_trades
 
Цитата
nikolz написал:
Все смешалось - кони,люди

Зачем нагородили кашу из луа и шарпа?

Все делается без шарпов на луа без проблем.
--------------------------------------------------------------------------------------
Мы не ищем легких путей.  
Создадим себе трудности, чтобы потом искать того, кто их преодолеет для нас..
В ОБЩЕМ проблема не решена

Квиж жутко тормозит  и набиваем массив
Более быстрый способ, all_trades
 
Цитата
nikolz написал:
Все смешалось - кони,люди

Зачем нагородили кашу из луа и шарпа?

Все делается без шарпов на луа без проблем.
--------------------------------------------------------------------------------------
Мы не ищем легких путей.  
Создадим себе трудности, чтобы потом искать того, кто их преодолеет для нас..
Почитал про луа знак решетка получает длинну массива,

# получить длину строки
================
объясни мне какую он должен получить длину массива  из msg  с чего вы взяли что  я отправляю  массив с размером  2 млн   ?
то что вы написали  , вообще никак не  хочет  работать ,
я уже из шарпа отправляю  кэлбек   с типом object

и результат приходит такой {[]}

function qsc.all_trades(msg)
if type(msg.data)~="table"  then msg.data={} end
local i=#msg.data; = .. если не сложно поясните  эту строку. что я должен отправить из  c#  ,чтобы получить  local i= с длинной массива  
 local count = getNumberOf("all_trades");
 while count>i do i=i+1;
     local depo_limit2 = getItem("all_trades",i)    
      if msg.data == "" or depo_limit2.sec_code == sec_code1 and  depo_limit2.datetime.hour >= 10 then msg.data = depo_limit2; end
 end
 return msg
end
Более быстрый способ, all_trades
 
Цитата
nikolz написал:
исправьте так:
-------------------------------
function qsc.all_trades(msg)
if type(msg.data)~="table"  then msg.data={} end
local i=#msg.data;
 local count = getNumberOf("all_trades");
 while count>i do i=i+1;
     local depo_limit2 = getItem("all_trades",i)    
     if msg.data == "" or depo_limit2.sec_code == sec_code1 and depo_limit2.datetime.hour >= 10 then msg.data= depo_limit2; end
 end
 return msg
end
Благодарю за это, но это тоже медленно  работает ,  буду  
SearchItems пробовать  ...
Более быстрый способ, all_trades
 
Так  никто не и не поможет  ?  жаль придется тратить время на решении .задачи которую решает  каждый алготрейдер , не хотите вы упростить нам жизнь=(
Более быстрый способ, all_trades
 
Цитата
Nikolay написал:
Чтобы что-то ответить надо смотреть в исходники этой библиотеки.
Не факт, что она поддерживает все глобальное окружение qlua.
Если Вам  не сложно, можете  показать  пример с "Используйте функцию SearchItems, чтобы не получать данные по каждой  строке. Это даст уже фильтрованный массив индексов строк по нужному  инструменту."
передать в шарп ,  любой массив, главное его получить,  а как  это сделать без цикла на луа я не понимаю  , так как у нас есть  препоследний элемент, и нам надо от первого пройтись по всем элементам , как по другому то?
Более быстрый способ, all_trades
 

А это c#  метод  который  получает  уже таблицу  с луа , думаю  теперь понятна мое желание  ВАм *

SecCODe -ЭТО НАЗВАНИЕ  инструмента
Более быстрый способ, all_trades
 
Цитата
nikolz написал:
local i=#msg.data;
Попробовал ваше  

сработало исключение
@"Lua error: qsfunctions.lua:605: attempt to index a string value (field 'data')"

Более быстрый способ, all_trades
 
Цитата
Nikolay написал:
Используйте функцию SearchItems, чтобы не получать данные по каждой строке. Это даст уже фильтрованный массив индексов строк по нужному инструменту.

Далее, не надо использовать table.insert. Если необходимо просто увеличивать массив, то быстрее будет сделать как t[#t+1] = value.

Так Вы просто добавляете в конец массива новый элемент.
Можите показать на пример как  это сделать, мой проект на  си Шарп ,  библитека что пользуюсь  quikLua
кэлбеком  с шарпа я подаю  инструмент , что мне нужен

и он , добавляет  в таблицу,  строки, по одной , формирует таблицу и отправляет ,мне в шарп  "return msg"
а как воспользоваться  тем чтобы, мгновенно получить  таблицу,  минус один индекс текущего тика , вот это я не понимаю  SearchItems
Более быстрый способ, all_trades
 
function qsc.all_trades(msg)
   local sec_code1 = msg.data
   local count1 = getNumberOf("all_trades")
   local depo_limits1 = {}
   for i = 1, count1-1,1 do
       local depo_limit2 = getItem("all_trades", i)    
       if msg.data == "" or depo_limit2.sec_code == sec_code1 and depo_limit2.datetime.hour >= 10 then
           table.insert(depo_limits1, depo_limit2)
       end
   end
   msg.data = depo_limits1
--    depo_limit2 =0
   return msg
end
=========================
Написал такой  код по образцам, он работает но очень долго

 занимает от  1-мин до 10 000
скажи пожалуйста , как можно быстро  получить всю таблицу обезличенных сделок не через Цикл , а весь  массив уже распарсить на шарпе,  как передать  байты  или Сразу все таблицу

например есть qscalp , у него занимает это 10  сек,  как такое вообще сделать можно ?
поясните пожалуйста
Страницы: 1
Наверх