Опять ошибка получения кол-ва ордеров скриптом

Страницы: Пред. 1 2 3
RSS
[ Закрыто ] Опять ошибка получения кол-ва ордеров скриптом
 
Старатель, спасиб те добрый человек, а то я думал уж, что я один во Вселенной)
 
Сирануш, неужели ещё год назад нельзя было посмотреть, что за таблицу возвращает getDepoEx или хотя бы код бумаги в ней?
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, я перебрался на альфу на AD4. Там у них своя песня, стало нехватать возможностей, явился обратно)
 
Старатель, да и зачем, я попытался обратить внимание разработчиков. Не понял только зачем второй скрипт он вроде ниче не возвращает?  
 
Старатель, ты думаешь что он выхватывает данные из потоков других скриптов? Я грешу на то, что он некорректно получает данные, из соседних таблиц.
 
Запустив со Скриптом 1
Скрипт 3
Код
local run = true
function OnStop()
  run = nil
end

function main()
  while run do 
    getBuySellInfoEx(FIRM_ID, CLIENT_CODE, CLASS_CODE, SEC_CODE, 0)
    -- или
    --CalcBuySell(CLASS_CODE, SEC_CODE, CLIENT_CODE, ACCOUNT, 0, true, true)
    sleep(1)
  end
end
получим ошибку
Цитата
Старатель написал:
getDepoEx ничего не возвращает
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Сирануш написал:
зачем второй скрипт
Второй скрипт - это просто нагрузка, чтобы показать, что первый скрипт получает позиции по бумагам, запрошенные в других скриптах.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Сирануш написал:
он некорректно получает данные, из соседних таблиц.
Скрипт получает позиции только по тем бумагам, которые запрашиваются в нём самом и других скриптах.
Если работает только 1 скрипт, то позиций по другим бумагам он не получает.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, Сирануш, добрый день!

Проблема касательно получения getDepoEx данных по другим бумагам (при работе нескольких скриптов) изучается, постараемся в ближайшее время дать ответ.
 
Старатель,  Добрый день, Действительно, в ПО QLUA есть ошибка одновременной работы скриптов использующих лимиты. Мы исправим её в очередном обновлении ПО.Приносим извинения за причинённые неудобства.
 
Коллеги, у кого есть возможность проверить в 9-й версии отпишите о результатах одновременной работы двух скриптов:

Скрипт 1
Скрытый текст

Скрипт 3
Скрытый текст

У меня довольно часто позиция не определяется и вываливается ошибка "getDepoEx error" в версиях 9.1.1 - 9.2.1 (Lua 5.3, 5.4)
Надо делать так, как надо. А как не надо - делать не надо.
 
sleep(1) чересчур брутально :)
quik 9.2.1.4 lua 5.3 и 5.4
1-й скрипт ошибка та же
2-й ОК
 
Добрый день,
Цитата
Старатель написал:
Запустив со  Скриптом 1
Скрипт 3
Код
   local  run  =   true 
 function   OnStop ()
  run  =   nil 
 end 

 function   main ()
   while  run  do  
     getBuySellInfo Ex(FIRM_ID, CLIENT_CODE, CLASS_CODE, SEC_CODE,  0 )
     -- или 
     --CalcBuySell(CLASS_CODE, SEC_CODE, CLIENT_CODE, ACCOUNT, 0, true, true) 
     sleep ( 1 )
   end 
 end   
получим ошибку
Цитата
Старатель написал:
getDepoEx ничего не возвращает
описанная ошибка была исправлена в версии терминала Quik 9.1.
 
Daniil Pozdnyakov, вы два сообщения выше (#111, #112) читали?
Надо делать так, как надо. А как не надо - делать не надо.
 
Здравствуйте!

Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
Старатель написал:
Daniil Pozdnyakov, вы два сообщения выше (#111, #112) читали?
Добрый день.

Действительно, в ПО QLUA есть ошибка синхронизации доступа к позициям,  иногда приводящая к некорректной работе getDepoEx. Мы исправим ошибку в  очередном обновлении ПО. Приносим извинения за причинённые неудобства.
 
Daniil Pozdnyakov, сообщите, по какой причине вы утверждали:

Цитата
Daniil Pozdnyakov написал:
Перепроверили работу скриптов, на которые Вы ссылаетесь, уже с функцией CalcBuySell(). Они исправно выводят правильные данные.
Надо делать так, как надо. А как не надо - делать не надо.
 
Добрый день,

Данная проблема, к сожалению, воспроизводилась не совсем корректно, в результате чего изначально ошибку получить не удавалось. На основе этого было написано данное сообщение.
 
Цитата
Daniil Pozdnyakov написал:
Данная проблема, к сожалению, воспроизводилась не совсем корректно
Это как?

Цитата
Daniil Pozdnyakov написал:
изначально ошибку получить не удавалось
В целях улучшения взаимодействия и повышения информативности баг-репортов просьба более детально описать, что делали изначально и какие действия предприняли, что удалось получить ошибку.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, Добрый день,

Дело в том, что при  воспроизведении выяснилось, что данная проблема воспроизводится, по  крайней мере у нас, не сразу, а через некоторое время. В нашем случае  интервал был около 10-15 минут, иногда дольше. Изначально проверочные скрипты не работали достаточно долго, чтобы зафиксировать проблему. Основываясь на этом, было написано, что проблема не воспроизвелась.
 
Написал не так давно процедуру сверки портфелей (своего и со стороны брокера). Данные получаю через getDepoEx, параметр currentbal (насколько я понимаю, ничего другого для получения этой информации не существует). Функция простая, заработала с первого тыка, несколько рассогласований поймала, но сегодня вдруг перестала работать, причём сразу у двух моих брокеров. Вернее, не сразу, а часа через два один после другого. Звонки брокерам помогли понять разве что ни один из них ни разу не слышал о подобных вещах, один посоветовал написать им на 911, но честно предупредил, что без гарантии, а второй... посоветовал обратиться сюда. Ладно, обращаюсь. :smile:

Господа разработчики! Если у вас не получилось считать данные от брокера, возвращайте хотя бы nil, а не 0! А то мой скрипт видит рассогласование портфелей и вырубает тикер из торгов, то есть после ТАКОГО поведения он вырубает ВСЕ тикеры до единого! Господа, несоответствие данных в портфеле брокера и моём - это ОДНА ситуация (ради выявления которой я и написал эту утилиту), а то, что вы оказались не способны считать данные от брокера - это ДРУГАЯ ситуация (из-за проявления которой я и отрубил эту утилиту). Давайте как-то сведём это дело к ПЕРВОМУ варианту.
 
Цитата
Владимир написал:
Написал не так давно процедуру сверки портфелей (своего и со стороны брокера). Данные получаю через getDepoEx, параметр currentbal (насколько я понимаю, ничего другого для получения этой информации не существует). Функция простая, заработала с первого тыка, несколько рассогласований поймала, но сегодня вдруг перестала работать, причём сразу у двух моих брокеров. Вернее, не сразу, а часа через два один после другого. Звонки брокерам помогли понять разве что ни один из них ни разу не слышал о подобных вещах, один посоветовал написать им на 911, но честно предупредил, что без гарантии, а второй... посоветовал обратиться сюда. Ладно, обращаюсь. ::

Господа разработчики! Если у вас не получилось считать данные от брокера, возвращайте хотя бы nil, а не 0! А то мой скрипт видит рассогласование портфелей и вырубает тикер из торгов, то есть после ТАКОГО поведения он вырубает ВСЕ тикеры до единого! Господа, несоответствие данных в портфеле брокера и моём - это ОДНА ситуация (ради выявления которой я и написал эту утилиту), а то, что вы оказались не способны считать данные от брокера - это ДРУГАЯ ситуация (из-за проявления которой я и отрубил эту утилиту). Давайте как-то сведём это дело к ПЕРВОМУ варианту.
Присоединяюсь к данной просьбе .  У меня  уже давно   такая функция не работает  в Квике от брокера БКС.

И дополнительно прошу  наладить ( вернуть ) возможность сортировки на убывание / возрастание по колонкам  в этом же Квике  ( версия 9.1.3.11  )  в таблицах данных  например " Состояние счета"  , и в том числе в таблицах  ""Луа  скрипты"  , эта сортировка перестала работать при переходе  на последнюю 9- версию вашего Квика .      При отсутствии  возможности это исправить  - прошу сообщить каким образом мне можно  вернуться на более старую 8-ю версию Квика от БКС.  
 
Владимир, БорисД,  Добрый день.

Если правильно понимаем, то через определённое время корректной работы функции GetDepoEx, функция начинает выводить нулевое значение. Если да, могли бы Вы, пожалуйста, уточнить, какое значение параметра "Текущий остаток", который Вы пытаетесь выводить при помощи QLUA, отображается в таблице позиции по инструментам, в момент когда функция начинает выводить нулевое значение ?

Дополнительно просьба прислать фрагмент кода, запуская который Вы сталкиваетесь с данной проблемой, а также уточнить версию используемого терминала.
 
БорисД,
Касательно
Цитата
БорисД написал:

И дополнительно прошу  наладить ( вернуть ) возможность сортировки на убывание / возрастание по колонкам  в этом же Квике  ( версия 9.1.3.11  )  в таблицах данных  например " Состояние счета"  , и в том числе в таблицах  ""Луа  скрипты"  , эта сортировка перестала работать при переходе  на последнюю 9- версию вашего Квика .      При отсутствии  возможности это исправить  - прошу сообщить каким образом мне можно  вернуться на более старую 8-ю версию Квика от БКС.  
Проверили на 9.1.3.11 - фильтрация работает (См. скриншот 1,2,3) . Если речь идёт о какой-либо другой фильтрации, просьба уточнить подробнее, если имеется такая возможность, пришлите, пожалуйста скриншоты, на которых будет отчётливо видно, что фильтрация не работает.

Касательно фильтрации таблицы имеющихся скриптов. Правильно понимаем, что речь идёт о таблице "Доступные скрипты" (См. скриншот 4)? Если да, то как-либо фильтровать имеющиеся скрипты никогда нельзя было. Проверили на версии 8.7.1.3 и 8.13.1.16.
 
Daniil Pozdnyakov,  Да, "через определённое время корректной работы функции GetDepoEx, функция начинает выводить нулевое значение". Причём после перезапуска скрипта она уже сразу начинает выводить нули. Значение параметра "Текущий остаток" может быть самым разным (у меня порядка сотни тикеров в портфелях двух брокеров), при этом в "Позиции по инструментам" и "Состоянии счёта" значения верные.

Фрагмент кода:
Код
  j=getDepoEx(l,CC,a[i][0][1],k,TX);
  if j==nil then j=0;else j=j.currentbal;end;
  if a[i][0][5]*a[i][0][8]~=j then 
   a[i][1][6][9]=-1;      -- отрубаем бракованный тикер и пишем в лог
Версии терминала от 8.7.1.3 до 9.1.3.11
 
Цитата
Daniil Pozdnyakov написал:
БорисД,
Касательно
Цитата
БорисД написал:

И дополнительно прошу  наладить ( вернуть ) возможность сортировки на убывание / возрастание по колонкам  в этом же Квике  ( версия 9.1.3.11  )  в таблицах данных  например " Состояние счета"  , и в том числе в таблицах  ""Луа  скрипты"  , эта сортировка перестала работать при переходе  на последнюю 9- версию вашего Квика .      При отсутствии  возможности это исправить  - прошу сообщить каким образом мне можно  вернуться на более старую 8-ю версию Квика от БКС.  
Проверили на 9.1.3.11 - фильтрация работает (См. скриншот 1,2,3) . Если речь идёт о какой-либо другой фильтрации, просьба уточнить подробнее, если имеется такая возможность, пришлите, пожалуйста скриншоты, на которых будет отчётливо видно, что фильтрация не работает.

Касательно фильтрации таблицы имеющихся скриптов. Правильно понимаем, что речь идёт о таблице "Доступные скрипты" (См. скриншот 4)? Если да, то как-либо фильтровать имеющиеся скрипты никогда нельзя было. Проверили на версии 8.7.1.3 и 8.13.1.16.
По поводу сортировки я сам виноват . Когда то видимо я установил галочку в настройках : Настройки / окна / таблицы   поле  6 " Сортировать по столбцу удерживая Ctrl ""  .  Сейчас галочку эту снял и сортировка по столбцу восстановилась простым кликом мышки по заголовку столбца .  
 
Владимир, Здравствуйте.

Приносим извинения, однако проблему воспроизвести не удалось.

Воспроизвели  логику Вашего скрипта, добавив лишь секунду задержки. Скрипт работал на  протяжении 2 часов, однако на протяжении данного времени функция  работала исправно, никаких ошибок не было (См. скриншоты).

Проверяли на версии 9.1.3.11. Если у Вас данная проблема ещё актуальна, то просьба прислать следующие скриншоты:
1)  скриншот, где функция исправно работает, например выводя информационное  сообщение (на скриншоте укажите, пожалуйста, точное время) и скриншоты  таблицы позиции по инструментам

2) скриншот в моменте, когда  функция перестаёт корректно работать (Также укажите, пожалуйста, время и  пришлите  скриншот таблицы позиции по инструментам).

Также необходимо будет предоставить более детальный фрагмент кода, на котором проблема  воспроизводится, либо полный используемый Вами скрипт. Если есть  какие-либо дополнительные детали запуска, просьба их уточнить.
 
Daniil Pozdnyakov, Добрый день, Даниил.

Про "секунду задержки" я не понял: если это задержка между двумя обращениями к getDepoEx - у меня такого, конечно, нет. А стандартная задержка между сверками портфелей стояла (да и стоит до сих пор) через каждые полчаса. К сожалению, проблема прекрасно воспроизводится. Вот два скрина примерно 10-минутной давности с разницей где-то в полминуты: первый - с отключённой сверкой, второй - с подключённой (красный фон и жёлтый цвет тикера означает, что он проверку не прошёл). Особенно забавно, что сверку прошли два фьючерса, которыми я вообще не торгую, да и брокер не позволит: кошелёк срочного рынка вообще пустой.

А функция с того времени, как я обратился сюда, корректно больше не работала никогда (правда, я редко проверял - просто отключил сверку, чтобы не путалась под ногами). А "позиции по инструментам" и "состояние счёта" всегда были нормальными (точнее, похожими на правду - я же не сверял).

Никаких деталей запуска, никаких настроек - скрипт на голом Lua, к версии языка и версии Квика, как правило, равнодушен - работает на всём, что попадалось под руку.
 
Владимир, здравствуйте.

Прежде всего приносим извинения за длительную задержку с ответом.

К сожалению, по присланным скриншотам дать какой-либо содержательный комментарий мне не представляется возможным. Могли бы Вы, пожалуйста, прислать новые скриншоты, только теперь с полями таблицы (Код инструмента, текущий остаток и другие) в момент, когда функция getDepoEx возвращает 0.

Также для анализа необходим весь код используемого Вами скрипта. Если не хотите выкладывать его на форуме, то можете прислать письмом на почту: quiksupport@arqatech.com.

Если будете отправлять письмо на почту, в письме укажите, пожалуйста, ссылку на данную ветвь форума.
 
Daniil Pozdnyakov, Добрый день, Даниил.

Так у меня же просто нет никаких новых скриншотов! Меня не интересует ничего, кроме текущего остатка в бумагах. Кстати, я не уверен, что getDepoEx возвращает 0 - может, и nil. Дело в том, что я провожу сверку по всем тикерам, за которыми следит скрипт. Они могут быть у меня в портфеле, а могут и не быть, при этом возможно, что их никогда там не было (и тогда, я полагаю, getDepoEx должен бы вернуть nil), возможно, они были, но я их недавно продал, и тогда getDepoEx должен вернуть 0. Возможна и обратная ситуация: я думаю, что у меня этого тикера нет, а у брокера он есть (я купил, но не получил уведомления либо думаю, что продал, а сделка не прошла или ещё что), так что nil и 0 для меня одно и то же. Ну и, наконец, я веду учёт в лотах, а там в бумагах.

Вот код утилиты сверки портфелей (FC - код фирмы, CC 0 код клиента, a[i][0][1] - код инструмента, AC - торговый счёт, TX=2 для одного брокера и 365 для другого, a[i][0][5] - количество бумаг i-го тикера в портфеле в лотах, a[i][0][8] - размер лота);
Код
function BC()   -- функция сверки портфеля с брокером
 local i,j;   -- вспомогательные переменные
 for i=1,N do    -- цикл по тикерам
  j=getDepoEx(FC,CC,a[i][0][1],AC,TX);
  if j==nil then j=0;else j=j.currentbal;end;
  if a[i][0][5]*a[i][0][8]~=j then 
   a[i][1][6][9]=-1;   -- отрубаем бракованный тикер и пишем в лог
   F:write("-! Рассогласование: "..a[i][0][1].." "..a[i][0][5].." "..j.."\n");
  end;   -- конец условия "рассогласование портфелей"
 end;   -- конец цикла по тикерам
end;   -- BC()

 
Владимир, здравствуйте.

Прежде всего приносим извинения за задержку с ответом.

Предлагаем добавить логирование в файл абсолютно всех выполняемых скриптом действий. После того, как столкнётесь с некорректностью работы getDepoEx(), необходимо будет посмотреть, что на данный момент отображается в таблице терминала "Позиции по инструментам", сравнить имеющуюся в таблице информацию с выводимой.
 
Daniil Pozdnyakov, Господи, так я же ПОЛНЫЙ КОД привёл! Там стоит "логирование в файл" только рассогласований. Ну, перенесите F:write до или после условия - получите "абсолютно всех выполняемых скриптом действий". И я уже говорил: в таблице терминала данные нормальные. Более того: именно этот код раньше РАБОТАЛ! И действительно правильно выявлял рассогласования. А потом он вдруг работать перестал, последовательно у двух брокеров, с разницей в пару часов, хотя я не менял в коде ни единой запятой (не только в приведённой функции, а вообще в коде скрипта). В данный момент эта проверка отключена.
 
Владимир, здравствуйте.

Предлагаем Вам всё-таки настроить логирование абсолютно всех тех переменных, которые используются в функции на предоставленном фрагменте кода. Логирование необходимо добавить до использования функции.
 
Daniil Pozdnyakov, Господа, вы способны САМИ запустить эту или подобную сверку? Какое вам "логирование абсолютно всех тех переменных, которые используются в функции" требуется? Код клиента - это МОЙ код клиента, это МОЙ расчётный счёт, это тикеры, которые контролирует МОЙ скрипт! Что, вы не в состоянии проверить это со СВОИМИ данными? ЗА КАКИМ ХРЕНОМ вам это "логирование", что вы с ним делать будете? Я же русским языком сказал getDepoEx НЕ РАБОТАЕТ! ВААПЩЕ! По крайней мере, в отношении единственного параметра, который меня интересует - currentbal. Мало того, я сказал, что этот код раньше РАБОТАЛ, а потом работать ПЕРЕСТАЛ, при этом я не менял в коде НИ ЕДИНОЙ ЗАПЯТОЙ! Могу добавить: "абсолютно все те переменные, которые используются в функции" ТОЖЕ НЕ МЕНЯЛИСЬ.
 
Цитата
Владимир написал:
вы способны САМИ запустить эту или подобную сверку?

Нет т.к. недостаточно информации о том как наполняется массив "a"
 
Sergey Gorokhov, У меня просто слов нет! Да как хотите, так и заполняйте! МОЙ ЖЕ "массив a" - это сложное разветвлённое дерево, в котором, как я уже писал, порядка 100-200 тысяч ячеек. Но в этой функции используются только ТРИ из них на тикер, и ВСЕ ДО ЕДИНОЙ я уже описал! Как говорится, "можем повторить":
a[i][0][1] - код инструмента
a[i][0][5] - количество бумаг i-го тикера в портфеле в лотах,
a[i][0][8] - размер лота

НУ ЧТО, ЧТО, ЧТО тут может быть непонятного?!
 
Владимир,
Как уже было сказано у нас тикет не повторяется
В связи с не однократным отказом в сотрудничестве, делаем заключение что дальнейший анализ не представляется возможным.
Тему считаем закрытой.
Страницы: Пред. 1 2 3
Читают тему
Наверх