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

Страницы: Пред. 1 2 3 След.
RSS
[ Закрыто ] Опять ошибка получения кол-ва ордеров скриптом
 
Nikolay, поставь мой код на все свои инструменты, что есть в портфеле, не меняя строк не добавляя ничего кроме ( тех данных SEC_CODE .          
CLASS_CODE и тд) и не убирая ничего от себя для чистоты эксперимента и посмотри недельку что будет, а потом уже пытайся меня обвинить что я не прав.
 
В Ваших сообщениях №28, 32, 35, 45 первое выводимое значение mLots не 0, впрочем, это не важно.

Я Вас ни в чем не обвиняю, даже не пытаюсь. Просто взял Ваш код и запустил на тестовом сервере. Не надо искать скрытых смыслов в сообщениях.Вот что я запустил:
Код
SEC_CODE          = 'SBER'
CLASS_CODE        = 'QJSIM'
ACCOUNT           = 'NL0011100043'
CLIENT_CODE       = '11609'
FIRM_ID           = 'NC0011100000'
LIMIT_KIND        = 0

mLots = 0
L=0

function main()
 while true do

    local tblMinLot =       getParamEx(CLASS_CODE,  SEC_CODE, "LOTSIZE")
    local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)

    if tblMinLot==nil       then MinLot=0       else MinLot=tonumber(tblMinLot.param_value)             end
    if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end

    x=  TotalLots


    L = TotalLots / MinLot
       -- впвапвп
    if( mLots~=TotalLots ) then
        message(SEC_CODE.."   TotalLots  "..tostring(TotalLots).."   mLots   "..tostring(mLots).."   x   "..tostring(x),3 )
        mLots=TotalLots
    end


  sleep(1000)
  end
end

Убраны переменные, не влияющие на вывод сообщений. На демо-сервере, на данный момент торгуется только несколько инструментов.

Впрочем, ждите ответов от разарботчиков.
 
Nikolay, поставь на реал на хотябы на пару деньков и понаблюдай.  LIMIT_KIND        = 0 почему равен 0? Если есть желание поставь посмотри, нет то нет
 
Потому что на демо сервере лимит = 0.
А в реале у меня годами работаю свои скрипты. Где как используются функции getDepoEx, getFuturesHolding, так и без них. Чаще без них, но это не важно.
И в сообщение https://forum.quik.ru/messages/forum10/message47344/topic5697/#message47344 я тоже указывал на  похожее поведение.
 
Цитата
Сирануш написал:
запустил терминал( сегодня суббота) и отключился от интернета вот что получилось:
10:48:01CORR_SPB   TotalLots  2.0   mLots   1.0   x   2.0
10:48:01CORR_SPB   TotalLots  1.0   mLots   2.0   x   1.0
А где строка с первоначальным mLots = 0 ?

Далее, обратите внимание на эту строку
Цитата
Сирануш написал:
10:54:40 CORR_SPB   TotalLotsРєРѕРїРёСЏ  0   mLots   1.0   x   0
Почему вдруг TotalLots стал integer в то время, как getDepoEx возвращает currentbal во float?

Напрашивается вывод:
Цитата
Nikolay написал:
Либо Вы приводите не все сообщения, либо не полный код.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Цитата Сирануш  написал:запустил терминал( сегодня суббота) и отключился от интернета вот что получилось:
10:48:01CORR_SPB   TotalLots  2.0   mLots   1.0   x  
2.010:48:01CORR_SPB   TotalLots  1.0   mLots   2.0   x   1.0
А где строка с первоначальным mLots = 0 ?
баг плавающий, то есть то есть то нет, скрипт был запущен и принял нормальны данные, а потом получил корявые по этому никаких mLots = 0

Цитата
Старатель написал:
Далее, обратите внимание на эту строку
Цитата Сирануш  написал:10:54:40 CORR_SPB   TotalLotsРєРѕРїРёСЏ  0   mLots   1.0   x   0
Почему вдруг TotalLots стал integer в то время, как getDepoEx возвращает currentbal во float?
может потому что:
Цитата
Сирануш написал:
  if tblMinLot==nil       then MinLot=0       else MinLot=tonumber(tblMinLot.param_value)             end        
 if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end    
выделил красным в коде( tonumber https://www.cronos.ru/kb-1513.html ).


Цитата
Старатель написал:
Напрашивается вывод:Цитата Nikolay  написал:Либо Вы приводите не все сообщения, либо не полный код.
код полный и без всяких вырезок/врезок , можно просто выводить переменные для контроля и TotalLots думаю эффект будет тот же . Проще наверное запустить у себя код и посмотреть, есть такой косяк или нет, если нет желания я не настаиваю. Просто пытаюсь донести, что у меня всплывает баг, который может приводить к потере денег из-за корявого получения данных и продажи или покупку роботом крупного лота, если торговля пляшет от объема позиции. Если тебе говорят, что у машины которую ты водишь время от времени могут отказывать тормоза и тебя это не смущает, то тут уже дело хозяйское. Не понимаю почему разроботчики отмалчиваютя, либо пофиг, либо выгодно такое поведение, либо у них нету такого косяка?
 
Nikolay, думаю даже можно такой код поставить на реал, он просто будет брать данные с реального счета, но делать то ничего не будет( кроме как брать данные и караулить баг) и мешать основному торговому роботу, если всплывет ошибка то засимафорит. Но это по желанию.


SEC_CODE          = 'SBER'
CLASS_CODE        = 'QJSIM'
ACCOUNT           = 'NL0011100043'
CLIENT_CODE       = '11609'
FIRM_ID           = 'NC0011100000'
LIMIT_KIND        = 365                  -- <<<<<<<<

mLots = 0
L=0

function main()
while true do

   local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
   if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end

   x=  TotalLots

   if( mLots~=TotalLots ) then
       message(SEC_CODE.."   TotalLots  "..tostring(TotalLots).."   mLots   "..tostring(mLots).."   x   "..tostring(x),3 )
       mLots=TotalLots
   end


sleep(1000)
 end
end
 
Цитата
Сирануш написал:
может потому что:
Цитата
Сирануш написал:
выделил красным в коде( tonumber
Не может. tonumber не меняет вещественное на целое.

Смотрите таблицу, возвращаемую getDepoEx, сравнивайте, какие поля поменялись
Скрытый текст

Заодно можете и всю таблицу depo_limits вывести, как раннее вам советовали.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Смотрите таблицу, возвращаемую getDepoEx, сравнивайте, какие поля поменялись
Скрытый текст
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, а почему бы не запустить все же код даже который выложил в предыдущем посте и самому посмотреть есть ли баг или нет. А если все же всплывет, то уж потом разбираться почему
Цитата
Старатель написал:
Не может. tonumber не меняет вещественное на целое.
Может message округлил до целого, а может как раз и получил целое число из таблиц( как раз об этом я и пытаюсь докричаться).
Я не понимаю почему вы пытаетесь меня уличить в каком то сокрытиии хотя есть код который можно запустить самому и проверить. Зачем все эти бодания вокруг да около, если проблема то не в этом? Вроде код не содержит ничего криминального и не занимает много машиноресурсов, торговых действий не содержит и не может помешать торговле основного скрипта( просто берет данные из таблиц и если видит несоответсвие выводит сообщение для анализа), код уже представлен, чтобы никого не напрягать с программированием.  
 
Старатель, я не правильно пытаюсь получить значения через
  local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
  if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end
?
Зачем мне обязательно
Цитата
Старатель написал:
Старатель  написал:Смотрите таблицу, возвращаемую getDepoEx, сравнивайте, какие поля поменялись
делать перебор полей?
 
Цитата
Старатель написал:
Почему вдруг TotalLots стал integer в то время, как getDepoEx возвращает currentbal во float?
Исходя из кода, такое может быть, если getDepoEx ничего не вернул, тогда в TotalLots вы присваиваете 0
Это возможно, например, когда QUIK переключился к другому серверу, и таблица depo_limits очистилась (это нормальное событие) и ещё не успела заполнится, как раз, когда был вызван getDepoEx.

Цитата
Сирануш написал:
я не правильно пытаюсь получить значения через
  local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
  if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end
?
Тут у каждого своё понимание о "правильности". Но такая запись может быть потенциально небезопасной, в зависимости от того, как вы обрабатываете полученные данные.
Например, если QUIK переключается на другой сервер, то, как я написал выше, в TotalLots вы записываете 0, хотя по факту позиция может быть уже открыта.

Цитата
Сирануш написал:
запустил терминал( сегодня суббота) и отключился от интернета вот что получилось:
10:48:01CORR_SPB   TotalLots  2.0   mLots   1.0   x   2.0
10:48:01CORR_SPB   TotalLots  1.0   mLots   2.0   x   1.0
Что теперь будешь предлагать, какую таблицу смотреть?
Выглядит весьма сомнительно, как будто в портфеле две записи для одного набора данных (FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
Вот вам и предложили выводить таблицу целиком.

Цитата
Сирануш написал:
Зачем мне обязательно делать перебор полей?
Читайте мою подпись. Угадывать за вас, что у вас происходит, никто не будет.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, даже при переподключении между серверами не должно быть никаких ошибок это же понятно. Ошибка всплывает даже при отключенном интернете и при включенном и без совершения торговых действий не до не после ошибки на достаточном интервале времени. Перебирать таблицы за разработчиков смысла особого не вижу, даже если и найду что то исправить не смогу, пишу суда что у меня баг и где они? Если есть желание поковыряться код есть, логику изложил.
 
Цитата
Сирануш написал:
Угадывать за вас, что у вас происходит, никто не будет.
Гадать за меня ничего не надо, гадаешь собсна за себя, я просто говорю что у меня есть косяк возможно и у вас есть.  
 
Если Вы хотите решить проблему, то Вам надо предоставить информацию. Проблема же у Вас.
Можете напрямую обратиться в техподдержку. У Вас запросят информацию для воспроизведения, т.к. того что Вы предоставил явно недостаточно.
Вы обратились на форум, где по доброй воле разработчики могут ответить, в могут и не ответить.

Код, что Вы предоставили, дает мало информации, поэтому вывод дополнительной информации дал бы больше возможностей понять в чем проблема.
Я сталкивался с особенностями работы функций get... поэтому стараюсь при анализе понимать, что сохранено в таблице к которой эта функция обращается.
Собственно unit_test этой функции так и надо написать, сравнить возвращаемое значение с эталонным в таблице.

Вы же просто пишите - функция не работает. Разработчики ответят: проверили - работает.
 
Nikolay, код есть, логика ясна, где у меня возникает глюк привел, больше информации кому надо сам для анализа наковыряет, разрабы не ответили что у них все идет как по маслу и вообще ничего не ответили. У тебя тоже работает все как часы, проверял?  Я больше ниче писать в пустоту не буду, есть желание пожалуйста, нет желания понятно)
 
Подтверждаю: "косяк" есть. Но в моём случае - это когда getDepoEx ничего не возвращает для того же набора параметров (FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT, LIMIT_KIND)
При этом вызов getDepoEx сразу после ошибки
Код
    local tblTotalLot = getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT, LIMIT_KIND)
    if type(tblTotalLot) == "table" then
      ...
    else
      message("getDepoEx error", 3)
      tblTotalLot = getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT, LIMIT_KIND)
    end
возвращает уже нормальную таблицу с корректными значениями.

Ситуаций с левым currentbal не встречалось.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
getDepoEx ничего не возвращает для того же набора параметров
Уточню: без переподключений, на ровном месте.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, ну вот уже что то, если еще и мой скрипт запустить и оставить поработать то можно и разные циферки получить, что может привести к продаже/покупке( в зависимости от ситуации), а потом к обратной покупке/продаже)
 
С утра весь день без ошибок и вот он долгожданный)))

FOLD_SPB   date - time  Tue Jun  1 15:33:36 2021   TotalLots  4.0   mLots   2.0   x   4.0
FOLD_SPB   date - time  Tue Jun  1 15:33:37 2021   TotalLots  2.0   mLots   4.0   x   2.0


код минимизировал и добавил даду/время:


SEC_CODE          = ??????????                
CLASS_CODE        =??????????              
CURR_CODE         = ??????????              
ACCOUNT           = ??????????          
CLIENT_CODE       =??????????            
TAG               =??????????            
FIRM_ID           = ??????????      
LIMIT_KIND        = 365                    

mLots = 0


function main()
while true do

  local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
  if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end

  x=  TotalLots

  if( mLots~=TotalLots ) then
      message(SEC_CODE.."   date - time  "..tostring(os.date()).."   TotalLots  "..tostring(TotalLots).."   mLots   "..tostring(mLots).."   x   "..tostring(x),3 )
      mLots=TotalLots
  end


sleep(1000)
end
end
 
седня прям с утра поймался баг :

FOLD_SPB   date - time  Wed Jun  2 09:34:10 2021   TotalLots  1.0   memoryLots   2.0
FOLD_SPB   date - time  Wed Jun  2 09:34:11 2021   TotalLots  2.0   memoryLots   1.0

из кода убрал еще одну переменную x,  как видно не в этом дело

SEC_CODE          = ???????????              
CLASS_CODE        =???????????              
CURR_CODE         =???????????              
ACCOUNT           = ???????????          
CLIENT_CODE       =???????????              
TAG               =???????????    
FIRM_ID           =???????????      
LIMIT_KIND        = 365                    

memoryLots = 0 -- сюда запоминаем кол-во лотов полученных из терминала, если не равно TotalLots и не было сделок то...

function main()
while true do

  local tblTotalLot =     getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
  if tblTotalLot==nil     then TotalLots=0    else TotalLots=tonumber(tblTotalLot.currentbal)         end

  if( memoryLots~=TotalLots ) then
      message(SEC_CODE.."   date - time  "..tostring(os.date()).."   TotalLots  "..tostring(TotalLots).."   memoryLots   "..tostring(memoryLots),3 )
      memoryLots=TotalLots
  end

sleep(1000)
end
end
 
ETRN_SPB   date - time  Wed Jun  2 10:06:06 2021   TotalLots  1.0   memoryLots   2.0
ETRN_SPB   date - time  Wed Jun  2 10:06:07 2021   TotalLots  2.0   memoryLots   1.0
 
Добрый день.

Все таки можете сообщить, какой параметр не верно считает, в переписке речь идет о разном.
Выложите скриншот того, что видите в QUIK, результат, который возвращает скрипт.
 
Добрый день, получается что из getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND).currentbal пытаюсь получить данные в TotalLots. Для сравнеия и выявления ошибки использую memoryLots. Код выше.
 
Цитата
Сирануш написал:
Для сравнеия и выявления ошибки использую memoryLots. Код выше.
 74 сообщения и нигде не указана версия QUIK, в которой запускается программа в которой происходит непонятное. Версию QUIK следует указывать обязательно.
     Если вы работаете с QUIK версии >= 8.5 и < 8.13.1.16, то в них есть ошибка синхронизации, которая может проявляться в виде сбоев (смотрите ветку Отладка QUIK 8.13 ...).
 
TGB, так никто и не спрашивал про версию. Сейчас стоит 8.13.3.1.  
 
Цитата
Сирануш написал:
Сейчас стоит 8.13.3.1.  
  Где вы взяли версию 8.13.3.1, если последняя официальная версия на сайте ARQA  8.13.1 (8.13.1.16) от 19.04.21?
 
TGB терминал сам обновлятся временами. https://wampi.ru/image/R85XdFg
 
TGB, вы вообще имеете отношение к разработчикам или как я пользователь?
 
Цитата
Сирануш написал:
вы вообще имеете отношение к разработчикам или как я пользователь?
  Я как пользователь. Хотел вам помочь. Похоже, не получилось.
 
TGB,
Цитата
TGB написал:
Если вы работаете с QUIK версии >= 8.5 и < 8.13.1.16, то в них есть ошибка синхронизации, которая может проявляться в виде сбоев (смотрите ветку Отладка QUIK 8.13 ...).
Между этими версиями наверное десятиление и в них есть ошибка синхронизации, которая может проявляться в виде сбоев ( и приводить к потере денег клиентов ), это вообще как, нормально???!!! Это все равно, что продавать самовозгарающиеся авто.
 
Сирануш, всего-то делов погуглить - у каждого автопроизводителя имеется целая куча автомобилей у которых вскрылись пожароопасные дефекты во время эксплуатации. И ничего, живут как-то.

Это как бы к тому, что косяки неизбежны, и критиковать людей по поводу их наличия это как минимум глупо.
 
Артем, критикуешь меня и пишешь, что критиковать людей
Цитата
Артем написал:
как минимум глупо.
Действительно
Цитата
Артем написал:
косяки неизбежны
Буду теперь помалкивать)
 
Цитата
Сирануш написал:
так никто и не спрашивал про версию. Сейчас стоит 8.13.3.1.
    Вы меня заинтриговали своей версией QUIK. Пожалуйста, еще раз проверьте версию QUIK, в которой вы работаете. Но если вы подтверждаете эту версию, то укажите брокера, через которого вы работаете. Если вы подтвердите номер версии QUIK, то это, наверное, Центробанк РФ  :smile: . Каким образом вы можете работать в QUIK версии на два шага более новой, чем официальная производителя ARQA в текущий момент (на 06.06.21), для меня большая загадка. Но, возможно, мне что-то неизвестно. Кто-нибуть, возможно, поддержка QUIK, может объяснить, как такое бывает?
 
Цитата
TGB написал:
Вы меня заинтриговали своей версией QUIK
Тоже сначала удивлялся что это за версия такая 8.13.3, так как в некоторых темах пишут о данной версии раз два три
Похоже что таким образом арка тестирует бета-версии квика, так сказать до официального релиза.

Сирануш, ну и по теме топика хотел бы добавить немного мыслей.
Я бы дополнительно через коллбек OnDepoLimit попытался точнее определить проблему.
Смотрите зачем это надо.
Если через коллбек будут прилетать расхождения, тогда проблема не в квике, а в брокере, который шлет левые данные.
Либо же через коллбек расхождений не будет наблюдаться, а через функцию getDepoEx будут расхождения, тогда косяк явно квика.

Просто на данный момент получается так, что проблема есть, а кто виновник пока не ясно.
 
TGB, написал же что за версия и скрин привел, какие еще могут быть вопросы? Если есть сомнения то я не буду переуюеждать.
 
BlaZed, с 45 по 48 посты писал уже, что отключился от интернета и это была суббота, все равно всплывало. Я если честно для себя решил проблему(частично) с помощью контроля переменных. Проблему обрисовал, код, версию предстваил. Если есть желание подловить с помощью колбэков можешь у себя запустить, заодно посмотишь есть ли у тебя такой баг.
 
Цитата
Сирануш написал:
BlaZed , с 45 по 48 посты писал уже, что отключился от интернета и это была суббота, все равно всплывало. Я если честно для себя решил проблему(частично) с помощью контроля переменных. Проблему обрисовал, код, версию предстваил. Если есть желание подловить с помощью колбэков можешь у себя запустить, заодно посмотишь есть ли у тебя такой баг.
Добрый день.

Давайте сделаем так. Откройте таблицу позиций по бумагам, зафиксируйте проблему снова. Закройте QUIK, сделайте архив всей папки без ключей и пришлите нам на quiksupport@arqatech.com + скрипт который запускаете.
 
Скрипт в 71 посте есть, только вместо вопросов вставить нужные значения. Там же есть проблема отражена, то что выводится в сообщении. Не думаю, что я смогу за секунду все это проделать пока значения вернуться в правильное состояние. У вас нет такой проблемы или вы не запускали?
 
Цитата
Сирануш написал:
Скрипт в 71 посте есть, только вместо вопросов вставить нужные значения. Там же есть проблема отражена, то что выводится в сообщении. Не думаю, что я смогу за секунду все это проделать пока значения вернуться в правильное состояние. У вас нет такой проблемы или вы не запускали?
Конечно проверили. Данные возвращаются корректные.
 
Egor Zaytsev, не знаю странно все это, но я бы увеличил кол-во наблюдаемых инструментов и длительность мониторинга( было бы хорошо чтоб повисели пару неделек без остановок и максимально много скриптов на разных инструментах). У меня в районе 50 скриптов висят и не на каждом всплывает этот баг и не не каждый день.  
 
Цитата
Egor Zaytsev написал:
Конечно проверили.
Вот эта проблема наблюдается в т.ч. в джуниор по нескольку раз за день.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Сирануш написал:
с 45 по 48 посты писал уже, что отключился от интернета и это была суббота, все равно всплывало.
--
Цитата
Сирануш написал:
У меня в районе 50 скриптов висят и не на каждом всплывает этот баг и не не каждый день.
----------
Цитата
Старатель написал:
Вот  эта проблема  наблюдается в т.ч. в джуниор по нескольку раз за день.
-----------------------------
 Выше приведенные комментарии, скорее всего, означают, что функция getDepoEx не является потокобезопасной. Вообще, все функции API работы с QUIK из QLua должны быть потокобезопасными  хотя бы из-за того, что к ним могут обращаться из нескольких одновременно запущенных скриптов (работающих в разных потоках). Причем, ! обращаю особое внимание разработчиков, что объекты синхронизации в таких функциях должны локализоваться в месте, общем для всех скриптов, и это место точно не global_State и тем более не lua_State.
----
  Просьба к поддержке, довести данный комментарий до разработчиков QUIK.
 
Цитата
Сирануш написал:
50 скриптов висят и не на каждом всплывает этот баг и не не каждый день.
Уменьшите sleep до 1 мс - вероятность воспроизведения бага вырастет.
Надо делать так, как надо. А как не надо - делать не надо.
 
На самом деле, хотелось бы обратиться к читающим эту ветку, чтобы вы запустили у себя код( заменив вопросики на соответсвующие значеиния) из 71 поста и если подобное всплывет отписали сюда.
 
Цитата
Старатель написал:
Цитата
Egor Zaytsev написал:
Конечно проверили.
Вот  эта проблема  наблюдается в т.ч. в джуниор по нескольку раз за день.
Добрый день.

Вы пишите, что getDepoEx ничего не возвращает, пользователь  Сирануш пишет, что у него ошибка текущего остатка.

Мы проверили ошибок нет, но мы не говорим, что разбираться не будем, будем конечно, просто ускорит процесс хотя бы копия рабочего места на момент проблемы.
 
Цитата
Egor Zaytsev написал:
Вы пишите, что getDepoEx ничего не возвращает
Эта проблема легко воспроизводится скриптом, опубликованном мной в сообщении #59

В скрипте Сирануш в том случае, если getDepoEx ничего не возвращает, присваивает значению текущего остатка ноль.
Поэтому для него "getDepoEx ничего не возвращает" = "ошибка текущего остатка", если по факту позиция открыта. Если позиция закрыта, то этой ошибки в его скрипте не будет.

Цитата
Egor Zaytsev написал:
пользователь   Сирануш  пишет, что у него ошибка текущего остатка
Что касается левых значений в currentbal, то, вероятно, это может быть связано с открытыми позициями, их количеством, классами, сроков расчётов и пр. факторами.
Т.ч. договаривайтесь с ТС о копии рабочего места.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Цитата
Egor Zaytsev написал:
Вы пишите, что getDepoEx ничего не возвращает
Эта проблема легко воспроизводится скриптом, опубликованном мной в сообщении  #59

В скрипте Сирануш в том случае, если getDepoEx ничего не возвращает, присваивает значению текущего остатка ноль.
Поэтому для него " getDepoEx ничего не возвращает " = " ошибка текущего остатка ", если по факту позиция открыта. Если позиция закрыта, то этой ошибки в его скрипте не будет.

Цитата
Egor Zaytsev написал:
пользователь   Сирануш  пишет, что у него ошибка текущего остатка
Что касается левых значений в currentbal, то, вероятно, это может быть связано с открытыми позициями, их количеством, классами, сроков расчётов и пр. факторами.
Т.ч. договаривайтесь с ТС о копии рабочего места.
Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
TGB написал:
   Выше приведенные комментарии, скорее всего, означают, что функция getDepoEx не является потокобезопасной. Вообще, все функции API работы с QUIK из QLua должны быть потокобезопасными  хотя бы из-за того, что к ним могут обращаться из нескольких одновременно запущенных скриптов (работающих в разных потоках). Причем, ! обращаю особое внимание разработчиков, что объекты синхронизации в таких функциях должны локализоваться в месте, общем для всех скриптов, и это место точно не global_State и тем более не lua_State.
  ----  
 Просьба к поддержке, довести данный комментарий до разработчиков QUIK.
 Реакции поддержки на просьбу нет.
 Ее трудно выполнить? Или поддержка считает, что выше написанное, не относится к обсуждаемому в данной ветке?
 
Ключевым является это:
Цитата
Сирануш написал:
У меня в районе 50 скриптов висят
Т.е., более одного скрипта запрашивают позиции по разным бумагам.

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

Скрипт 2:
Скрытый текст

Запустил скрипт 1 по "SBER" и несколько скриптов 2 по другим бумагам.
В итоге Скрипт 1 стал получать позиции не только по "SBER", но и по другим бумагам из других скриптов.
Скрытый текст

Причём эта ошибка более частая, чем "getDepoEx ничего не возвращает", и возникает в офлайн.
Надо делать так, как надо. А как не надо - делать не надо.
Страницы: Пред. 1 2 3 След.
Читают тему
Наверх