Некоторые глюки в 7.2

Страницы: 1 2 След.
RSS
Некоторые глюки в 7.2
 
Ошибка  расчёта цены 11 позиции:

getParamEx(class_code,security,"bid").param_value+(11*getParamEx(class_code,security,"SEC_PRICE_STEP").param_value) возвращает 110 (то есть getParamEx = 0), но может и верную и точную цену, не знаю от чего это зависит.

Уточните работает в 7.2 CalcBuySell?

Ставлю заявку -0.1% от CalcBuySell, выдаёт ошибку:

Ошибка создания заявки [GW]{332] не хватка средств по лимитам клиента

Хотя цена заявке та же что и при расчёте CalcBuySell - 0.1%.
 
Добрый день.

Цитата
Уточните работает в 7.2 CalcBuySell?
Да, работает.

Цитата
Ошибка создания заявки [GW]{332] не хватка средств по лимитам клиента
Ошибку возвращает торговая система, не QUIK.
В ручном режиме заявка выставляется?
 
да, но во первых getParamEx(class_code,security,"bid").param_value может вернуть цену, а может вернуть 0. - это глюк.

В ручном режиме выставляется, но это разные вещи. Хотя ещё рз замечу что:   CalcBuySell - 0.1% выставляется, должен срабатывать без проблем, так как цена 0.1% не проходит за это время.
 
Цитата
Роман написал:
да, но во первых getParamEx(class_code,security,"bid").param_value может вернуть цену, а может вернуть 0. - это глюк.

В ручном режиме выставляется, но это разные вещи. Хотя ещё рз замечу что:   CalcBuySell - 0.1% выставляется, должен срабатывать без проблем, так как цена 0.1% не проходит за это время.
Рекомендуем все же обновить рабочее место QUIK до самой актуальной 7.16.3 и проверит работу.
0 может вернуться, если не заказан параметр bid.
 
Обновил, глюки остались. Ну он то выдаёт, то нет. Фиг его знает от чего зависит.
 
Цитата
Роман написал:
Обновил, глюки остались. Ну он то выдаёт, то нет. Фиг его знает от чего зависит.
Добрый день.

Пришлите полный код скрипта.
 
В первом топике:

getParamEx(class_code,security,"bid").param_value+(11*getParamEx(class_code,security,"SEC_PRICE_STEP").param_value)  
 
class_code=SPBFUT security=RIM8
 
з.ы. на всех фьючерсах глюк.
 
вот так полностью: price = tonumber(getParamEx(class_code,security,"bid").param_value+(11*getParamEx(class_code,security,"SEC_PRICE_STEP").param_value))
 
Цитата
Роман написал:
вот так полностью: price = tonumber(getParamEx(class_code,security,"bid").param_value+(11*getParamEx(class_code,security,"SEC_PRICE_STEP").param_value))
Так вообще можно писать!?... где проверка на result == "1" для обоих вызовов?
 
Цитата
Роман написал:
В первом топике:

getParamEx(class_code,security,"bid").param_value+(11*getParamEx(class_code,security,"SEC_PRICE_STEP").param_value)
Добрый день.

Роман, проверьте настройку: Зайдите в пункт меню Система/Настройки/Основные настройки/Программа/Получение данных/
и выберите пункт "Исходя из настроек открытых пользователем таблиц"
 
Egor Zaytsev, пункт "Исходя из настроек открытых пользователем таблиц" стоит по умолчанию.
 
Цитата
Роман написал:
Egor Zaytsev , пункт "Исходя из настроек открытых пользователем таблиц" стоит по умолчанию.
Написал же ещё три дня назад, что вы неправильно пишите код... что у вас нет проверки на result == "1" для обоих вызовов...
У вас в первом вызове возвращается таблица со значениями {result == "0", param_value = "0"}, а во втором вызове возвращается таблица со значениями {result == "1", param_value = "10"}, и в результате у вас и получается 0+11*10=110...

Напишите что-то типа такого:
Код
bid  = getParamEx(class_code, security, "BID")
step = getParamEx(class_code, security, "SEC_PRICE_STEP")
if bid.result == "1" and step.result == "1" then
    price = tonumber(bid.param_value)+11*tonumber(step.param_value)
end
— код не проверял, набросал от руки!
 
Suntor, з.ы. он step = getParamEx(class_code, security, "SEC_PRICE_STEP") то возвращает правильное значение, то нет. В тех вариантах где оно правильный вариант отдаёт, получается что возвращаемая структура меняется? вместо {result == "1", param_value = "10"} отправляет {"10} - так что ли по вашему?
 
иначе все сделки ошибки выдавали!
 
з.ы. не разобрал до конца: getParamEx(class_code,security,"bid").param_value возвращает всё равно 0, чего не должно быть. Понятно что там проверку прописать нужно корректно, но суть проблемы это не меняет! бид возвращает с нулём.
 
из-за этого потери по сделкам, с 2го или 4го раза можно только получить цену шага.
 
тьфу извиняюсь торопясь писать нельзя :). getParamEx(class_code,security,"SEC_PRICE_STEP").param_value - всё равно 0 или правильное значение. Можно поставить  проверку на result, но это ситуацию не изменит, так как понятно что 0 это уже ошибка. Поэтому жду отклика от Егора о решении этой проблемы.
 
Цитата
Роман написал:
всё равно 0 или правильное значение. Можно поставить  проверку на result, но это ситуацию не изменит, так как понятно что 0 это уже ошибка.
Если result == "0", то значение из поля param_value использовать нельзя, его там просто «нет»... а что там есть, ноль или что-то другое не важно.
Вы суть поймите, статусы ошибок не просто так возвращаются, их проверять нужно... это азы программирования.

И кто вам сказал, что bid у вас всегда должен возвращаться. Вы одностороннего стакана что ли никогда не видели?... в начале апреля на срочке многих акций и индекса были. Да сейчас любой неликвид посмотрите, как там стаканы выглядят. Могут так же быть «шипы», которые собирают все bid'ы, и на короткое время опять их нет в стакане. Могут технически снимать все заявки при сбоях на бирже... да полно вариантов.
 
там у меня прописано что делать если ноль пришёл. так бы я его не видел вообще.  
 
Suntor, не я не против проверки, всё правильно говорите. просто у меня по другому обрабатывается, это глюк не пожизненный, надеюсь ребята сейчас решат.
 
Цитата
Роман написал:
Suntor , не я не против проверки, всё правильно говорите. просто у меня по другому обрабатывается, это глюк не пожизненный, надеюсь ребята сейчас решат.
Что они решат? изменят правила торгов на всех биржах мира?... я же говорю, приход result = "0" для bid, это не ошибка...
 
Suntor, это фьючерс РТС, я не думаю что биржа загнулась так что бы "бид" пропал. :)
 
Цитата
Роман написал:
Suntor , это фьючерс РТС, я не думаю что биржа загнулась так что бы "бид" пропал. :)
Создайте новую таблицу торгов в Quik... добавьте в неё все инструменты класса «FORTS: Фьючерсы», в параметры добавьте «Общ. спрос» и «Общ. предл.»... и затем отсортируйте таблицу по любому из столбцов «Общ. спрос» или «Общ. предл.»... берите любой инструмент, где значение параметра равно 0, открывайте по нему стакан и смотрите...

Вот к примеру сейчас, один из инструментов открыл с нулевым спросом:

И какой bid вы тут хотите получить через getParamEx?
 
Suntor, на этом инструменте у меня выдаст ошибку. Что и правильно. Поэтому я о нём речи не веду. А вот на фьючерсе RTSI меня это озадачивает :(.
 
Цитата
Роман написал:
Suntor , на этом инструменте у меня выдаст ошибку. Что и правильно. Поэтому я о нём речи не веду. А вот на фьючерсе RTSI меня это озадачивает :(.
Так на фьючерсе Индекса РТС тоже самое... говорю же, буквально месяц назад в начале апреля такой же стакан был по РТС, доходили до границы, там до расширения лимитов стояли с нулевым спросом... Это я просто к тому, что фундаментально нельзя закладывать в код идею, что «всегда должно приходить», пропускать обработку ошибок и писать как вы всё в одну строчку... это неправильно.

Отдельный интерес, это ситуация, когда bid действительно должен прийти, но не приходит. То-есть когда стакан заполнен, а вы периодически получаете ноль. Подозреваю, что getParamEx работает асинхронно, то-есть, если имеющаяся информация о лучшем спросе уже устарела, а новая ещё не пришла по сети, то функция отрабатывает немедленно и возвращает ноль. В противном случае, она бы зависла на несколько секунд, пока ожидала бы новую информацию по сети, что приводило бы просто к постоянному подвисанию любых скриптов на таких функциях.
 
Ещё, такая же проблема с ценой последней сделки.
 
Цитата
Роман написал:
Ещё, такая же проблема с ценой последней сделки.
Беру цену последней сделки с OnAllTrade, и таких «проблем» нет. Да и bid ваш также можно брать по OnQuote.
Если вы не хотите обрабатывать холостые вызовы getParamEx с result == "0", то может лучше переделать логику скрипта на «колбэки»!?...
 
Suntor, это не тот вариант!
Ждём комментарий разработчиков, у меня при открытии рынка на волатиле, убытки возникают.
 
Цитата
Роман написал:
Suntor , это не тот вариант!
Ждём комментарий разработчиков, у меня при открытии рынка на волатиле, убытки возникают.
Не понятна ваша проблема... я выше вначале привёл простой код-шаблон... если будете как положено обрабатывать result, то price всегда будет считаться тоже правильно... откуда у вас могут быть убытки?
 
Ну вот сегодня косяк: из-за того что нельзя было получить аск вместо 117 204 купил по 118 052, разница - целая тысяча. Ребята, ну что это за ерунда. Мне нужно строчное решение!
 
В какой версии работает корректно CalcBuySell и  getParamEx(class_code, security, "BID") ?
 
Цитата
Роман написал:
Ну вот сегодня косяк: из-за того что нельзя было получить аск вместо 117 204 купил по 118 052, разница - целая тысяча. Ребята, ну что это за ерунда. Мне нужно строчное решение!
Это прикол такой?... а пропустить действие когда вам result = "0" вернуло вы не можете?... вы так специально скрипт сделали, чтобы он у вас в любом случае что-то покупал, даже когда цену не может правильную определить?... )))
 
Suntor, я написал выше, больше мне нечего добавить!
 
Цитата
Роман написал:
Suntor , я написал выше, больше мне нечего добавить!
Вы же с вопросом пришли, вам же отвечают как лучше код написать... а если не хотите, зачем вообще на форум приходить.
 
Suntor, я не маленький мальчик, сам знаю куда и зачем хожу, в ПО Квика есть серьёзный глюк и его нужно исправить, а не догатками тыка, а что если там на облачных фьючерсных БИДа нет вообще, каким боком мне это поможет, если то что должно не показывает - с карт торо что ли я должен правильное значение вытаскивать если его нет?
 
Цитата
Роман написал:
Suntor , я не маленький мальчик, сам знаю куда и зачем хожу, в ПО Квика есть серьёзный глюк и его нужно исправить, а не догатками тыка, а что если там на облачных фьючерсных БИДа нет вообще, каким боком мне это поможет, если то что должно не показывает - с карт торо что ли я должен правильное значение вытаскивать если его нет?
Так и не ведите себя как маленький мальчик тогда... если считаете что есть глюк, то обоснуйте это... а пока что всё что вы тут сообщили совсем на глюк не тянет, а просто показывает дыру в вашем коде...
 
Suntor, обязательно доклад по этому поводу напишу!

Egor Zaytsev, уточните как версия Квика корректно работает с getParamEx(class_code,security,"bid").param_value и CalcBuySell?
 
Добрый день.

Проблемы с данной функцией были в версии 7.2. Ошибки исправлены и сейчас все работает.
 
на втором сервере 7.14 стоит, такие же ошибки ...
 
Цитата
Роман написал:
на втором сервере 7.14 стоит, такие же ошибки ...
Пришлите архив рабочего места QUIK (без ключей доступа и ваш скрипт, который запускаете)
quiksupport@arqatech.com
 
ну сам скрипт я не смогу выслать, а вот копию вышлю ...
 
Цитата
Роман написал:
ну сам скрипт я не смогу выслать, а вот копию вышлю ...
Скрипт тоже нужен.
 
ну здесь увы, только если вы сами getParamEx(class_code, security, "BID") , а что у вас на 7.2 не работало, а на 7.14 работает? Просто мы 7.14 поверх 7.2 установили там, может имеет смысл переустановить ...
 
Роман, мы не сможем разобраться с проблемой по куску кода, нужен полный скрипт.
 
и как нам быть? это проблема в вашем ПО. Ваш вариант полностью работоспособный?
 
Цитата
Роман написал:
и как нам быть? это проблема в вашем ПО. Ваш вариант полностью работоспособный?
Такой вариант работает: getParamEx(class_code, security, "BID")
Ждем запрошенную информацию.
 
тогда сначало попробую переустановить полностью, надеюсь у брокера рабочая версия.
 
да ваш глюк, всё переустановил и всё равно то выскакивает, то нет.

Код дать не могу проверьте самостоятельно, в цикле запрос поставьте и в случае ошибки записывайте, а так если 7.2 имела аналогичную ошибку скорее всего это она и есть.  
Страницы: 1 2 След.
Читают тему
Наверх