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

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

Страницы: 1 2 След.
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Цитата
swerg написал:
Рассинхрон веремени.
Суть вопроса в том что "10:00:05" это серверное время и торги по времени уже начались, а функция status == false не дает торговать каое-то время. В принципе меня этот вопрос не особо волнует т.к. для опционов время в боте стоит - старт торгов в "10:01:00", финиш в "18:44:00" (вечерняя сессия по аналогии), но все же хотелось бы понять почему status живет своей жизнью. Был еще такой момент у одного из товарищей (писал об этом в другой ветке), бот торгует - у фьюча status == true в течение всей торговой сессии, а вот у опционов с утра все норм, а ближе к вечеру (точное время уже не помню) - status == false - и понятное дело бот не торгует опционы, а торговля то идет.
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Да и сама эта функция как то странно себя ведет: время "10:00:05", а status == false, (на 3-5 сек. на старте торгов задерживается), время "18:45:33", а status == true. Прокомментируете?
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Цитата
Evgeniy Karnaukhov написал:
Олег, здравствуйте.

Рекомендуем проверить статусы инструментов/классов, в момент создания транзакции. Это касается таких параметров, как "Состояние сессии" и "Статус торговли инструментом" в таблице текущих торгов. Если "Сессия" покажет "закрыта" и/или "Статус" будет "не торгуется", то транзакция не выполнится. Можете прописать в коде скрипта условие на проверку этих двух статусов перед отправкой.
 
Код
   if round(getParamEx(statusClass, statusCode, "status").param_value) == 1 then status = true else status = false end -- Торговля разрешена/не разрешена
Во всех скриптах вот такая проверка стоит, если status == false, то транзакция не уйдет и тем не менее однажды вылезла ошибка описанная здесь.
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Да я так и не понял в чем подвох был, а здесь то написал с целью привлечения внимания общественности - глядишь может кто и откликнется - подскажет в чем дело и как с этим быть.
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Цитата
Олег написал:
Указанная транзакция по указанному классу не найдена:
Сталкивался с таким вопросом.
Выскакивает ворнинг "Compare string with number", А его не должно быть, по идее!
 
Код
   ST = getInfoParam("SERVERTIME") -- Время сервера
   if #ST == 7 then ST = "0"..ST end
   
   if ST > "10:00:00" and ST < "14:00:00" then
      ...
   end
Как вариант
Status это работает ?
 
Цитата
dimka написал:
function main()
     Status =  getParamEx("SPBFUT",  "SiZ0", "STATUS ").param_value
     message("!!!"..Status)
end

Вот так = 1

Код
function main()
   Status = getParamEx("SPBFUT", "SiZ0", "STATUS").param_value
   message("!!!"..Status)
end
Status это работает ?
 
Поддержу вопрос. В Открытии статус фьючерсов и опционов - проблем нет - все работает, а в БКС например фьючи - работает, а опционы к вечеру статус = 0, хотя все торгуется.
Программисты на LUA, Требуются LUA программисты
 
Цитата
nikolz написал:
(как правило за символическую плату)
От себя добавлю - бесплатно - там же всего то надо чтобы было вот так и так, а сейчас просто на просто как то оно не так работает. Там все просто - "пару строк поправить" - делов то)))
Время ММВБ, Servertime не предлагать
 
Цитата
Незнайка написал:
У всех сегодня параметр "Начало вечерней сессии" показывает 19:00:00 ?
У всех
Цитата
Незнайка написал:
Во время клиринга поменяли на 19:05:00
Не обратил внимания, во сколько точно поменяли
Оно так всегда и меняется, а вот во сколько не могу сказать точно, где-то около 19:03:00 - приблизительно
Lua-таблицы. Интерфейс. Управление свойствами lua-таблиц., Как тонко настроить lua-таблицу? Механизмы взаимодействия пользователя с lua-таблицами.
 
Здесь кое что есть
Зависает скрипт QLua из примера, хотя даже убраны все коллбэки (v.8.8.4.3)
 
Код
   while is_run do
      ---
      sleep(100)
   end
Как убрать нуль после точки?, .0
 
Вот так можно
Код
function round(num, n) -- Функция округляет до указанного количества знаков
   local n = (n or 0)
   return tonumber(string.format("%."..n.."f", num))
end
Функция возвращает код класса по коду инструмента
 
Вот так работает
Код
function GetClassBySec(code) -- Функция возвращает код класса по коду инструмента
   --------------------------------------------------------------------------------------------------------------------------
   for class in string_gmatch("STOCK_USA,SPBXM,FQBR,TQBR,QJSIM,SPBFUT,", "(%P*_*%P*),") do
      for sec in string_gmatch(getClassSecurities(class), "(%P*%.*%P*-*%P*),") do
         if sec == code then return class end
      end
   end
   --------------------------------------------------------------------------------------------------------------------------
end
Функция возвращает код класса по коду инструмента
 
Спасибо
Функция возвращает код класса по коду инструмента
 
Код
function GetClassBySec(code) -- Функция возвращает код класса по коду инструмента
   --------------------------------------------------------------------------------------------------------------------------
   for class in string_gmatch("STOCK_USA,SPBXM,FQBR,TQBR,QJSIM,SPBFUT,", "(%P*),") do
      for sec in string_gmatch(getClassSecurities(class), "(%P*_*%P*_*%P*),") do
         if sec == code then return class end
      end
   end
   --------------------------------------------------------------------------------------------------------------------------
end

Здравствуйте. Функция не возвращает код класса: "STOCK_USA" и "FQBR" ("SPBXM" - не проверял). В чем подвох?

Ошибка в отрисовки таблиц
 
Вероятно таблица создается
function OnInit(script_path) -- Функция вызывается терминалом QUIK перед вызовом функции main()
  здесь
end
Создайте ее вот
function main() -- Функция, реализующая основной поток выполнения в скрипте
  здесь
end
Как отловить когда сработал стоп
 
Цитата
xorax написал:
Перечитайте мои сообщения.
А может ответы на ваши вопросы внимательнее изучать?)))
Цитата
В какой лимитной заявке? Когда выставляется стоп, ни какой лимитной заявки нет. Лимитная заявка выставляется только после того, как  условия выполнились согласно указанным условиям  в стоп заявке или в тейке.
Все верно. Теперь нам нужно
Цитата
Всё бы хорошо, но я не могу отловить сам результат выполнения стоп заявки, когда стоп исполнился.
В моём понимании когда срабатывает стоп, создаётся новая заявка с новым номером заявки которая не равна номеру стопа.
Хотелось бы увидеть схему OnStopOrder -> ...  -> ...  -> здесь признак того что стоп сработал.
Сработала стоп-заявка - нужно это действие отследить, так?
В таблице стоп-заявок есть поля: Номер и Номер заявки. Поле Номер - это номер нашей стоп-заявки, поле Номер заявки - это номер лимитной заявки - данное поле при выставлении стоп-заявки пустое, как только наша стоп-заявка превратится в лимитную - это поле заполнится - номер лимитной заявки - все.
контроль исколнения многоконтрактовой заявки в quik 8.6
 
Через Таблица сделок
Как отловить когда сработал стоп
 
Цитата
Демидков Юрий написал:
Дальше где-то откопать номер выставленной лимитированной заявки.
Пример для таблицы заявок.
linkedorder - в таблице стоп-заявок и есть номер лимитки.
Код
function CheckOrders() -- Функция проверяет таблицу заявок
   local gNOf = getNumberOf("orders")-1 -- Номер последней строки в таблице заявок
   for i = NumLineTO+1, gNOf, 1 do -- Перебирает строки в таблице заявок начиная от NumLineTO+1
      local orders = getItem("orders",i) -- Параметры заявки

      ...
   
      local num = 0 -- Номер заявки
      if bit.test(orders.flags, 0) then -- Заявка активна
         num = orders.order_num -- Контроль заявки
      end
      local stopNum = orders.linkedorder -- Номер стоп-заявки

      ...

   end
end
TRANS_ID, Значение на сегодня?
 
Цитата
Sergey Gorokhov написал:
2 147 483 647
Для id = 3 333 333 333 - транзакция уходит - и в таблице транзакций видим не 3 333 333 333, а присваивается № 2 147 483 647. Для id = 4 444 444 444 - ошибка - Неправильно указан идентификатор транзакции: "4444444444". По этому и возник вопрос. Ладно формат ххх ххх ххх - будет достаточно. Всем спасибо.
TRANS_ID, Значение на сегодня?
 
Из описания QLUA.chm: TRANS_ID -- Уникальный идентификационный номер заявки, значение от «1» до «2 147 483 647»
Реальное максимально допустимое значение на сегодня?
Работа с опционами, Где взять данные по дельте и временной стоимости опционов?
 
Цитата
Демидков Юрий написал:
Не могу найти, как получить данные, которые отображаются в доске опционов.
Эти данные не транслируются - надо рассчитывать в скрипте
Как отследить событие - перерыв в торгах на фортс
 
Цитата
Дмитрий написал:
Не знаю, может что делаю не правильно, но код выдает ошибку
Код
function Round(num, n) -- Функция округляет до указанного количества знаков
   local n = (n or 0)
   return tonumber(string_format("%."..n.."f", num))
end
Эту функцию еще добавить надо.
В принципе то можно без нее. Но тогда вот так
Код
Status = tonumber(getParamEx(CLASS_CODE, SEC_CODE , "status").param_value)
но опять результат будет = 1.0 например (8.5 квик). А функция Round - .0 уберет, это у меня бзик - по "феншую" должно быть и все))). А так эта функция в основном то нужна сейчас для объема и цены - приходит объем 3.0, цена по РТС например 100 000.0 - не порядок.
Как отследить событие - перерыв в торгах на фортс
 
Код
 Status = Round(getParamEx("SPBFUT", Fut, "status").param_value) -- Торговля разрешена/не разрешена
Постоянно проверяется. Такой вариант не подходит?
Как отследить событие - перерыв в торгах на фортс
 
Цитата
Дмитрий написал:
и после 18:45
Так фортс до 23-50
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
#18 - пост наглядный скрин
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Цитата
Egor Zaytsev написал:
В таком случае потребуется ваше рабочее место (без ключей) и скрипт или парочку на которых возникает проблема.
Вот здесь такая же проблема
https://forum.quik.ru/messages/forum10/message45090/topic5348/#message45090
а следовательно, дело не в моем терминале и тем более не в моих скриптах.
фьючерс на индекс ртс, в таблице сделок
 
Цитата
Anna Lozenko написал:
если изменилась стоимость шага цены
Изменение происходит во время клиринга или по ходу торгов?
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Цитата
Egor Zaytsev написал:
Добавьте скрипты в таблицу. Закройте QUIK, удалите файла scripts.dat (из директории с программой) запустите QUIK проверьте таблицу "Доступные скрипты". Сообщите результат.
Добавил, закрыл, удалил, запустил, проверил - "Доступные скрипты" - пустая таблица.
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Цитата
Egor Zaytsev написал:
С данным вопросом нужно разбираться. Попробуйте запустить QUIK от имени администратора, нажав правой кнопкой мыши по ярлыку с программой и выбрав "запуск от имени администратора"
Картина та же. Запустил 4 скрипта. 1,2,3,4. 2й - удалил. На место 2ого встал 3й скрипт, на место 3ого - 4й - все правильно, но только "зеленые треугольники" - осталось = 4. Далее удалил все скрипты - в терминале в РАБОЧЕМ состоянии остался один скрипт, при этом в поле Загруженные скрипты - НЕТ ни одного скрипта. Попытался добавить вновь удаленный скрипт пишет - "Выбранный скрипт уже был загружен. Добавить его еще раз?"
На первом добавлении скриптов - 3й скрипт с ошибкой - специально посмотреть на вывод ошибки - да выводит ошибку в поле "Ошибки выполнения скрипта" - все хорошо. После удаления из "Доступные скрипты" всех скриптов и повторном добавлении - 3ого (с ошибкой) скрипта - в поле "Ошибки выполнения скрипта" - сообщения об ошибке нет. Удалил все скрипты - закрыл терминал - открыл терминал - все ранее добавленные скрипты - оказались загруженными.
Заходил от имени администратора как вы и предложили.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
SPBOPT - класс опционов, месяц, неделя
OPTW - класс недельного опциона у некоторых брокеров
А по большому счету эта функция нужна для корректного ввода инструмента из меню.
Есть инструмент - все работает - нет инструмента - класс - nil - подсветка о ошибке ввода и ничего не работает.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Код
function GetClassBySec(sec_code) -- Функция возвращает код класса по коду инструмента
   for class_code in string_gmatch("QJSIM,TQBR,SPBFUT,SPBOPT,CETS,OPTW,", "(%P*),") do -- Добавить код если надо
      for sec in string_gmatch(getClassSecurities(class_code), "(%P*_*%P*_*%P*),") do
         if sec == sec_code then return class_code end
      end
   end
end
Заявка на покупку акции после определённого отката вниз от определённой цены., Заявка на покупку акции после определённого отката вниз от определённой цены.
 
Можно работа написать такого
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Цитата
swerg написал:
Этот колхоз имени 8 марта меня искренне поражает.
Я сам коды пишу на Lua. Прекрасно понимаю что такое процесс написания. В процессе - ошибки есть и будут - это нормально, но на выходе проверка идет тотальная - проверятся все от и до - чтобы все работало как надо. Понятное дело что все мы люди и ошибки какие то могут быть допущены. НО здесь то явно не скрытая ошибка которую тяжело выявить, здесь реальный косяк на лицо.
Удалил все скрипты из таблица Загруженные скрипты - выключил терминал - включил - все скрипты на месте как будто и не удалял.
Я пишу здесь не с целью критики или обвинений, а с целью обращения вашего внимания на явный недочет и скорейшее устранение этих неполадок.
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Как то так получилось - в таблице один скрипт запущен, а в квике 2 работают.
таблица Доступные скрипты 8.5.2.11, таблица Доступные скрипты 8.5.2.11
 
Квик 8.5.2.11. Беда прямо с этой таблицей. Уважаемые разработчики пожалуйста приведите в порядок. Добавляем несколько скриптов - при удалении из "середины" - начинается "карусель". При добавлении скрипта - пишет что этот скрипт уже есть. В общем там много сюрпризов. Это касается и демо и реала.
как решить проблему в новом квике 8.5, когда tostring (целое число) выдает дробь?
 
Цитата
Sergey Denegin написал:
но tostring упорно дает на выходе "1.0".
Код
function Round(num, n) -- Функция округляет до указанного количества знаков
   local n = (n or 0)
 return tonumber(string_format("%."..n.."f", num))
end
Несколько Lua-роботов на 1 инструменте
 
Цитата
Imersio Arrigo написал:
То ли я спрашивать не умею, то ли что...
Лыжи не едут)))
Цитата
Imersio Arrigo написал:
Не понимаю КОГДА это происходит?Просто в основном цикле main?
Да просто в main. При дисконекте какие там события, то? А так обрыв связи - лимитка прошла - связь восстановлена - проверили таблицу и 100% ни чего не потеряли.
Несколько Lua-роботов на 1 инструменте
 
Цитата
Imersio Arrigo написал:
Когда и как вы решаете, что пора проверить кол-во строк в таблице?
Пример уже приводил. Когда getNumberOf("trades")-1 (Номер последней строки в таблице сделок) станет больше чем NumLineTT (Запомнили последнюю строку таблицы сделок)
Несколько Lua-роботов на 1 инструменте
 
Цитата
Imersio Arrigo написал:
Это в цикле выполняется или по событию? когда и как вы узнаете что пора это делать?
Код
local gNOf = getNumberOf("trades")-1 -- Номер последней строки в таблице сделок

NumLineTT = gNOf -- Запомнили последнюю строку таблицы сделок
Несколько Lua-роботов на 1 инструменте
 
Цитата
Иван написал:
Судя по ответам прихожу к выводу что проблематично это нескольких роботов запускать на 1 инструмент в рамках 1 счета.
Каждый бот ведет свои и только свои сделки - ни каких проблем нет совсем.
Несколько Lua-роботов на 1 инструменте
 
Цитата
Imersio Arrigo написал:
А почему? Это же логично, чем все время опрашивать таблицу.
Обрыв связи - потеряли сделку. Не все время, а только при появлении новой строки.
Цитата
Imersio Arrigo написал:
А как вы узнаете что появилась новая строка?
Код
      if NumLineTT < getNumberOf("trades")-1 then -- Появилась новая строка в таблице сделок
         CheckDeal() -- Проверим таблицу сделок
      end
Несколько Lua-роботов на 1 инструменте
 
Цитата
Imersio Arrigo написал:
а контролировать OnTrade()
OnTrade() - не использую, только таблица сделок
Несколько Lua-роботов на 1 инструменте
 
Цитата
Иван написал:
нужно постоянно анализировать таблицу сделок?
Нет, анализ только если появилась новая строка в Таблице сделок - зашел посмотрел - мое не мое
Несколько Lua-роботов на 1 инструменте
 
Цитата
Иван написал:
идентификатор в поле комментарий при открытии/закрытии позиций
На одном инструменте хоть сто роботов могут торговать и каждый по свой логике. Фильтр по комментарию как раз дает такую возможность - новый бот - новый уникальный комент. У меня имя робота - это комментарий к заявке - если имена ботов разные - торгуем хоть миллиард стратегий на одном инструменте.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
swerg написал:
Давно есть метатрейдер с выходом на биржу.
Там опционов нет.
Разрыв соединения, Квик разрывает соединение при подключении с утра
 
Цитата
Sergey Denegin написал:
У вас какой брокер?
Открытие
Разрыв соединения, Квик разрывает соединение при подключении с утра
 
Цитата
Максим написал:
у меня еще скриптов много в Квике просто...
Скриптов у меня то же предостаточно (в данный момент 10 запущено). Версия 8.3.2.4 - раз в сутки примерно квик зависает и ни как не реагирует. Перезапуск только через Диспетчер задач. Об этом ни хотел даже писать все равно на 8.5 скоро переходить. Так вот раньше такого то же не было. На более ранних версиях гораздо больше скриптов работало и все нормально было. В общем одни претензии у этих пользователей, понапишут скриптов, а потом жалуются)))
Разрыв соединения, Квик разрывает соединение при подключении с утра
 
Цитата
Максим написал:
мне поддержка Финама
У вас Финам, у меня Открытие. Наводит на мысль что действительно дело не в серверах, а в квике? Пишу не просто так, а для того чтобы разработчики обратили внимание и сделали орг. выводы - надо что то делать.
Страницы: 1 2 След.
Наверх