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

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

Страницы: 1 2 След.
Останавливается скрипт
 
Цитата
Николай Камынин пишет:
Попробуйте так:
------------------------------
local t=getSecurityInfo('',left .name)
if t~=nil then
local ClassCode=t .class_code
if ClassCode~=nil and type(ClassCode~="table") and ClassCode~="" then
Subscribe_Level_II_Quotes (ClssCode, left .name)
end
end
Да Николай! Так действительно помогло! Скрипт не останавливается. Большое спасибо!
Останавливается скрипт
 
Да понятно. Придется этот момент переделать. Всем спасибо!
Останавливается скрипт
 
и как быть в таком случае?
Останавливается скрипт
 
Кстати, при явном указании кода класса, проблем таких действительно не возникает.
Что же делать?
Останавливается скрипт
 
Цитата
Michael Bulychev пишет:
Цитата
Юрий пишет:
getSecurityInfo('',left .name).class_code
Искать код класса по коду бумаги не очень хорошая идея, можно запросто получить неверный результат. Судя по коду бумаги, проще явно указать код класса "SPBFUT"
Хочется универсальности -  сегодня торгую фьючерсы, а завтра акции - вот и проблема с явным указанием кода класса.
Останавливается скрипт
 
Цитата
Николай Камынин пишет:
ClassCode~=nil and type(ClassCode~="table") and ClassCode~=""then
К сожалению тоже самое: ошибка возникает в строке - local ClassCode = getSecurityInfo('',left[i].name).class_code
Останавливается скрипт
 
Нет изменений - скрипт останавливается! Сделал так:

function main()
     if isConnected() then  
     for i = 1, #left do
     Subscribe_Level_II_Quotes (getSecurityInfo('',left[i].name).class_code, left[i].name) -- заказ стаканов через цикл
           end
     while aRun do
           oprosstakanov()            -- опрос стаканов
--остальной код
           end
     end
end

Потом так:
function main()
while QRun do
     if isConnected() then       --делал и так: if isConnected() == 1 then
           QRun = fals
     for i = 1, #left do
     Subscribe_Level_II_Quotes (getSecurityInfo('',left[i].name).class_code, left[i].name) -- заказ стаканов через цикл
           end
     end
end
     while aRun do
           oprosstakanov()            -- опрос стаканов
           --остальной код
     end
end
Останавливается скрипт
 
Спасибо понял пробую!
Останавливается скрипт
 
Что ж такое? что никому не понятная проблема? Как по мне то она точно странная. Квиковцы жду от Вас ответа!
При выводе информации в лог-файл выводится тарабарщина
 
Для начала выведи сообщение на экран (message). И скорее выведет ту же тарабарщину, а это ошибка расчетов.
Останавливается скрипт
 
Всем доброго! Подскажите в чем может быть причина остановки скрипта по ошибке: "attempt to index a nil value" (попытка индекса нулевой стоимости)? Скрипт останавливается только при запуске Квика (скрипт не выключаю - только закрываю и открываю квик)?
local left =    -- эмитенты в таблице left задаем в самом начале
{
{
name = "SiU5"
     }
}
function oprosstakanov()                                   -- функция получения данных стакана работает не прекращая
     for i = 1,#left do                                         -- здесь перебираются эмитенты
local b = getQuoteLevel2(getSecurityInfo('',left[i].name).class_code, left[i].name)   -- ОШИБКА в этой строке
if b.bid and b.bid_count+0>0 then
local a = tonumber(b.bid[tonumber(b.bid_count)].price) * left[i].quantity
                 ------
           end
     end
end

Если запускать скрипт, при запущенном Квике - все в полном порядке.
Выставление "рыночных" заявок
 
Тебе что дать пример выставления рыночной заявки?
переменная с ошибкой
 
а в чем вопрос: infinity = 1/0 if a == infinity or a == -infinity then print("Неожиданный результат") end - работает. Все получилось, Не совсем понял почему у меня 1.#IND с минусом получается, но из статьи http://habrahabr.ru/post/171203/ видно, что не все однозначно. Будем проверять и с + и с -.
переменная с ошибкой
 
Спасибо большое!
переменная с ошибкой
 
Да понятно, но думал можно и а идентифицировать как-то
переменная с ошибкой
 
неправильно написал:
a = b/c - в результате (понятно по какой причине) получаем -1.#IND  
переменная с ошибкой
 
пожалуйста подскажите, как идентифицировать переменную с ошибкой:  -1.#IND
a = 0;
a = b + c - в результате (понятно по какой причине) получаем  -1.#IND
пробую так:
1) if a == "-1.#IND" - не получается; 2)  if a == -1.#IND - не получается; 3)  if a == nil - не получается;
не соответствует время
 
хорошо. Еще подскажите в таком случае:
1) скрипт запоминает время getInfoParam("SERVERTIME"), как я понимаю время последней сделки и т.д. из ТПП перед моими действиями
2) далее я что-то делаю
3) я обращаюсь к данным из таблицы, пусть Сделок (ведь моя сделка все равно будет не раньше чем придут данные из ТПП даже если это будет моя сделка), ссылаясь на время равное или более того, что запомнил SERVERTIME.

В этом случае все равно могут возникнуть проблемы из-за разницы времени биржи и сервера?

Если да, то может мне тогда брать из ТПП время последней сделки, ведь это уже будет время биржи?
не соответствует время
 
Ну вот развели демагогию, а умный человек подсказал, что все действительно придумано до нас:
getInfoParam("SERVERTIME") - время сервера, а с миллисекундами:
в таблице «Таблица сделок» («trades») в datetime есть поле с миллисекундами и поле с микросекундами, т.е.
getItem(«trades»,e).datetime.ms и getItem(«trades»,e).datetime.mcs соответственно.
Вот и все.
не соответствует время
 
Спасибо за подсказку. Значит копать надо в другом месте.
не соответствует время
 
Я конечно не силен в программировании, да и логика насколько позволяет, так задачи и решаю. Просто у меня идет серия сделок и через номер сделки приходится создавать кучу доп кода (а оно же может лень, а может не хватает знаний). Понятно что все проблемы можно решить разными способами и я их решаю, но не иметь возможности получить точное время, согласно которого я могу ориентироваться для меня не понять.
графический интерфейс, библиотека для создания формы ввода
 
Тоже заморачивался этой проблемой, но на одном сайте по моей просьбе сделали скрипт и после этого я пока обхожусь подобными штучками. Вот http://quikluacsharp.ru/quik-qlua/primer-skripta-qlua-lua-vypolnyayushhego-torgovye-operatsii-v-terminale-quik/  вдруг кому поможет (для начинающих).
не соответствует время
 
Сделал по совету sam063rus (синхронизация времени причем с разных серверов пробовал). На глаз видно разница 0,5 сек Квика и компа. А потом еще ИНТЕРЕСНЕЕ: на компе стоит 2 платформы Квика одного брокера и у них тоже секунды тикают в разницу пол секунды. Вот прикол! Жаль, придется решать задачи другими способами.
К разработчикам: зарегистрируйте пожелание получения времени (типа os.time() ) именно платформы (конечно если это время будет совпадать со временем в таблице сделок)
не соответствует время
 
Да нет: 1-2 сек
Что приходит в OnTransReply ?
 
да  конечно регистрируйте
Что приходит в OnTransReply ?
 
Разработчики пожалуйста выдайте информацию.
не соответствует время
 
А как их можно синхронизовать?
Скорость получения данных OnParam OnQuote
 
О Спасибо большое! А я уже наделал через OnQuote - надо переделать
не соответствует время
 
Перед выставлением ряда заявок запоминаю время t = os.time().
Далее после делаю "проверку" всех сделок из табл Сделок, время которых позже t :

for e = 0,getNumberOf("trades") - 1 do
    if os.time(getItem("trades",e).datetime)>= t and getItem("trades",e).sec_code ==name then

Так вот: скрипт не находит некоторые сделки, т.к. время в таблице Сделок меньше, чем t , которое было сделано ранее (перед выставлением заявки).
Вопрос: 1) какое отличие между t = os.time() и временем в таблице сделок.
2) постоянная ли это величина
3) как  это обойти? (
Скорость получения данных OnParam OnQuote
 
Подскажите откуда быстрее получить данные: 1) из OnParam
или 2) из OnQuote

интересуют цены эмитентов
Что приходит в OnTransReply ?
 
а при перестановке заявки статус№3 - Заявка успешно переставлена (фраза не точная) с указанием номера заявки.
Может статус зависит от вида транзакции. Вот приходится гадать, а нужна верная информация.
Если все-таки зависит от вида транзакции, то меня интересуют: маркет ордера, лимитные, перестановка и снятие заявок.
Разработчики пожалуйста выдайте. Ждемс.
Что приходит в OnTransReply ?
 
Сегодня биржа не работает и не могу точно указать № статуса, но фраза (я по ней фильтрую, т.к. не знаю расшифровки всех номеров) "Не найдена активная заявка для перестановки" (скорее всего №4)
Что приходит в OnTransReply ?
 
наверное я не договорил, Статус из OnTransReply
А эти, по крайней мере, те, что попадались, не совпадают.
поэтому пож-та дайте правильные.
Что приходит в OnTransReply ?
 
Подскажите, где можно посмотреть информацию по:
status NUMBER Статус

(расшифровку статусов)
MOVE_ORDERS - замена заявки
 
Да спасибо все заработало
MOVE_ORDERS - замена заявки
 
да на опционах тоже снимается хорошо, но есть функция перестановки! Работает она? все равно не понимаю на сегодняшние вопросы поддержка находит время отвечать, а на вчерашние нет!!!
MOVE_ORDERS - замена заявки
 
Поддержка где Вы???
MOVE_ORDERS - замена заявки
 
подскажите пож-та, где ошибка?
Скрипт выставляет одну лимитную заявку на ФОРТС (по опционам) - определяем ее № (OrderNum_OPT) - order.order_num
далее надо переставить эту заявку на другую цену. Делаю так:

function perestavit_order_OPT()
local trans_id=math.random (1,999999)
     local transaction = {
["ACTION"]= "MOVE_ORDERS",
["TRANS_ID"]= tostring(trans_id),
["CLASSCODE"]=tostring(CLASS_CODE),
["SECCODE"]=tostring(SEC_CODE),
["FIRM_ID"]=tostring(FIRM_ID),                                             -- берем из табл. Сделок  "Дилер"
["MODE"]="0",    
["FIRST_ORDER_NUMBER"]=tostring(OrderNum_OPT),      --№ ранее выставленной заявки
["FIRST_ORDER_NEW_PRICE"]="3200",                              -- новая цена для лимитной заявки
["FIRST_ORDER_NEW_QUANTITY"]="0"
     }
local res=sendTransaction(transaction)

if res~="" then
return nil, "send_LimitFUT():"..res
else
return trans_id
end
end
move_orders, Send Transaction - замена заявки
 
Здравствуйте! Сюда же еще несколько вопросов:
1) "FIRST_ORDER_NUMBER" мы взяли order.order_num , а "SECOND_ORDER_NUMBER" - можно подставить тот же номер и тогда при новом обращении order.order_num мы получим тот же номер. Это я правильно понимаю?
2) если 1-я лимит. заявка была выставлена на 2 лота, в OnOrder(order) программа увидела, что прошла сделка на один лот - я могу переставить на другую цену только оставшийся лот, указав "FIRST_ORDER_NEW_QUANTITY" = "2", а "SECOND_ORDER_NEW_QUANTITY" = "1" ?
3) что произойдет (что выдаст res=sendTransaction(transaction), если я, не проверяя исполнился ли второй лот, буду вызывать эту функцию (пытаться делать перестановку множество раз, меняя цену - для гарантированного получения второго лота)? в программе пытаюсь сделать так:

NotBuy_OPT = true
function OnOrder(order)
  -- Если исполнилась заявка полностью
  if order.trans_id == trans_id_OPT and order.balance == 0 then
     -- Меняет значение флага
     NotBuy_OPT = false
end

function perestavit_order_OPT()
     local transaction = {
["ACTION"]= "MOVE_ORDERS", -- изменить количество в заявках на новые
["TRANS_ID"]= tostring(trans_id_OPT),
["CLASSCODE"]=tostring(classcode),
["SECCODE"]=tostring(seccode),
["FIRM_ID"]="UNIKA",
["MODE"]="1",
["FIRST_ORDER_NUMBER"]=tostring(OrderNum_OPT_),
["FIRST_ORDER_NEW_PRICE"]=tostring(price_put),
["FIRST_ORDER_NEW_QUANTITY"]=tostring(vol_kratno),
["SECOND_ORDER_NUMBER"]= ?
["SECOND_ORDER_NEW_PRICE"]=tostring(price_put+10),
["SECOND_ORDER_NEW_QUANTITY"]="1"
}
local res=sendTransaction(transaction)
sleep (50)
if NotBuy_OPT then
price_put = price_put + 10
local res=sendTransaction(transaction)
end; sleep (50);
if NotBuy_OPT then
price_put = price_put + 10
local res=sendTransaction(transaction)
end; sleep (50);
if NotBuy_OPT then
price_put = price_put + 10
local res=sendTransaction(transaction)
end; sleep (50);
if NotBuy_OPT then
price_put = price_put + 10
local res=sendTransaction(transaction)
end; sleep (50);
local res=sendTransaction(transaction)
if res~="" then
return nil, "send_LimitFUT():"..res
else
return trans_id
end
end
4) Хотя в программе и идет проверка на полное исполнение заявки (and order.balance == 0), но суть в быстром получении второго лота после первого и не использование маркет ордера
5) если думаю неправильно, пожалуйста подскажите (может пример)
6) возможно ли не использовать в примере sleep (50)?
Вопросы по совместной работе, quik junior и доске опционов., Два пользователя за одним терминалом. Программный доступ к доске опционов ...
 
Подскажите, а можно ли теоретическую цену получать в реальном времени. Ведь она как-то расчитывается. Не поможете ли еще и с этим?
sendLimitFO, параметры
 
Спасибо буду далее разбиратся
sendLimitFO, параметры
 
Такое ощущение, что я задал вопрос сверх какой-то сложности! Если бы я не начал изучать Lua 2 недели назад я бы его не задавал. По-моему здесь на форуме только те кто пишут программы. Простой вопрос - почему не получить простой пример? "Вы думаете не правильно, надо вот так ..."
sendLimitFO, параметры
 
Цитата
Цитата
С правилами ввода заявок на СРОЧНОМ рынке Вы можете ознакомиться в правилах торгов на СРОЧНОМ рынке
Я не о правилах ввода заявки вручную, я спрашиваю как это реализовать QLua. Неужели нельзя сделать примеры всех видов заявок - ВСЕ ни одного вопроса не найдется.
Импорт данных в QUIK из CVS?, Как можно импортировать данные в QUIK из CVS?
 
sam063rus неужели нельзя не выделываться, а хотя бы один раз ответить на вопрос (у вас же все такие коменты)? ну знаешь - отлично, поделись с другими. Зачем писать вещи которые знают только "знающие".
например что такое RFC и LUA.org (на английском языке)?
sendLimitFO, параметры
 
вместо абры кадабры:

EXECUTION_CONDITION
Условие исполнения заявки, необязательный параметр. Возможные значения:
«PUT_IN_QUEUE» – поставить в очередь (по умолчанию),
«FILL_OR_KILL» – немедленно или отклонить,
«KILL_BALANCE» – снять остаток
sendLimitFO, параметры
 
Как не ведомо, я же не просто так убрал с вопроса вообще слово "QL"?
Это Ваша документация. а т.к. она скудненькая (в том числе по работе с заявками), я понимаю надо искать похожее - вот нашел в документации QPile (я подумал это в ряде случаев идентичные вещи).
Выборка из Вашей документации:

EXECUTION_CONDITION
Условие исполнения заявки, необязательный параметр. Возможные значения:
[img]file:///G:/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%A0%D0%BE%D0%B1%D0%BE%D1%82%D1%8B/Qpile/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/PicExportError[/img] «PUT_IN_QUEUE» – поставить в очередь (по умолчанию),
[img]file:///G:/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%A0%D0%BE%D0%B1%D0%BE%D1%82%D1%8B/Qpile/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/PicExportError[/img] «FILL_OR_KILL» – немедленно или отклонить,
[img]file:///G:/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%A0%D0%BE%D0%B1%D0%BE%D1%82%D1%8B/Qpile/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/PicExportError[/img] «KILL_BALANCE» – снять остаток Поэтому повторно и задал вопросы.

Пож-та скажите где можно ознакомится с привилами ввода заявок на СРОЧНОМ рынке (интересуют фьючерсы и опционы). Заявки использую лимитные и маркетом.
sendLimitFO, параметры
 
просто надо по другому задать вопрос:
В признаке execution_condition - KILL_BALANCE (Снять остаток) - как работает при указании цены лимитной заявки и количества?
1) если не дали сразу по лимитной цене, значит сделка отменяется;
2) если дали половину объема , то остальная часть отменяется;
3) надо ли параметр KILL_BALANCE указывать в " "
4) признак expire_date - TODAY (до окончания текущей торговой сессии) надо ли указывать в " "
sendLimitFO, параметры
 
понял спасибо
sendLimitFO, параметры
 
А что сюда такие вопросы задавать нельзя? Вроде бы тоже к квику относится.
sendLimitFO, параметры
 
Здравствуйте. Функция библиотеки QL  sendLimitFO.
в признаке execution_condition - KILL_BALANCE (Снять остаток) - как работает при указании цены лимитной заявки и количества?
1) если не дали сразу по лимитной цене, значит сделка отменяется;
2) если дали половину объема , то остальная часть отменяется;
3) надо ли  параметр KILL_BALANCE указывать в " "
4) признак expire_date - TODAY (до окончания текущей торговой сессии) надо ли указывать в " "
Страницы: 1 2 След.
Наверх