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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 След.
описание полей ТТП, где взять полное и актуальное
 
Здравствуйте!
По названиям параметров ТТП, к которым можно обращаться с помощью функции getParamEx, иногда бывает трудно однозначно понять, что эти параметры означают и/или как рассчитываются их значения.
Подскажите, пожалуйста, где можно взять подробное и актуальное описание всех параметров, которые транслируются с Московской биржи?
Если оно есть на сайте биржи, то подскажите ссылку.
повторное открытие окна
 
Цитата
Серж пишет:
Да неужто? Это вы где, в инструкции прочитали?
Серж прав. Потому и задал здесь вопрос. Хотел понять - так задумано или это ошибка в терминале...
В какой таблице найти информацию о short
 
Цитата
Андрей пишет:
Забыл куда звонить нужно.
8-800-200-99-66
бесплатный телефон, указан на их сайте
В какой таблице найти информацию о short
 
Цитата
Андрей пишет:
разрешающая информация для сделки - это именно сервер, а не документы файлы, информация брокера
Ну строго говоря, на сайте и в документах можно написать все что угодно, но если то же самое не прописать в настройках сервера Quik, то работать это все равно не будет.
Поэтому доверять нужно в первую очередь информации из терминала, а не с сайта. Тем более, что на сайте ее могут просто забыть или не успеть обновить.

Кстати, вы этот вопрос уже задавали три недели назад... Что мешало узнать подробности у брокера?
Цитата
Дмитрий пишет:
А вот это лучше у брокера спросить. Позвоните ему, не стесняйтесь. И пусть объяснит, почему информация в квике и на сайте разная.
А Вы нам потом расскажите, что Вам ответил брокер - нам тоже интересно...
Расширение функций управления окном.
 
Поддерживаю пожелания sam063rus
Лично меня напрягает процесс создания с помощью небогатых средств QLua для работы с экранными таблицами таких в общем-то стандартных элементов, как кнопки, переключатели, списки выбора, поля ввода и т.п.
А пользоваться сторонними библиотеками без крайней необходимости не хочу (из соображений надежности и устойчивости работы скрипта).
повторное открытие окна
 
И еще один вопрос:
Если окно было закрыто не вручную, а с помощью вызова функции DestroyTable, то какое значение после этого должна вернуть функция IsWindowClosed?
повторное открытие окна
 
Здравствуйте!
В документации в описании функции IsWindowClosed сказано, что окно может быть открыто повторно с помощью функции CreateWindow.
В связи с этим вопрос - после закрытия окна вручную (крестиком) можно сразу вызвать повторно CreateWindow, указав в качестве ее параметра старое значение идентификатора таблицы t_id?
Или все-таки при повторном открытии окна необходимо перед вызовом CreateWindow опять вызывать AllocTable для получения нового идентификатора таблицы?
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
Цитата
sam063rus пишет:
Я, конечно, не спорю но, если можно, приведите примеры когда это имеет большое значение?
Цитата
Дмитрий пишет:
В качестве примера можно привести такой оператор:
if (t_id ~= nil) and not IsWindowClosed(t_id) then ...
Например, я подумал, а что если в результате вызова IsWindowClosed(t_id) или какой-нибудь другой функции (в том числе самописной) в таком же условном операторе при обработке ею значения параметра, равного nil, возникнет ошибка, которая приведет к аварийной остановке работы скрипта.
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
То же самое написано и в официальном описании языка.

Lua 5.1 Reference Manual :
The conjunction operator and returns its first argument if this value is false or nil; otherwise, and returns its second argument. The disjunction operator or returns its first argument if this value is different from nil and false; otherwise, or returns its second argument. Both and and or use short-cut evaluation; that is, the second operand is evaluated only if necessary.
http://www.lua.org/manual/5.1/manual.html#2.5.3

Lua 5.3 Reference Manual :
The conjunction operator and returns its first argument if this value is false or nil; otherwise, and returns its second argument. The disjunction operator or returns its first argument if this value is different from nil and false; otherwise, or returns its second argument. Both and and or use short-circuit evaluation; that is, the second operand is evaluated only if necessary.
http://www.lua.org/manual/5.3/manual.html#3.4.5
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
Цитата
Constantin Constantin пишет:
Это стандарт языка, а не оптимизация. Можно смело полагаться на такое поведение.
Вы правы, судя по тому, что написано в книге Programming in Lua (first edition) by Roberto Ierusalimschy:
The operator and returns its first argument if it is false; otherwise, it returns its second argument. The operator or returns its first argument if it is not false; otherwise, it returns its second argument.
Both and and or use short-cut evaluation, that is, they evaluate their second operand only when necessary.

http://www.lua.org/pil/3.3.html
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
Цитата
Constantin Constantin пишет:
Это стандарт языка, а не оптимизация
А почему я не нашел ничего на эту тему в официальной документации?
Или я плохо искал? Если не трудно, можете дать ссылку на упоминание об этом?
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
Спасибо!
Я правильно понимаю, что это стандартное поведение для Lua?
Или все же не исключено, что в разных версиях/реализациях языка поведение в данном случае может быть различным?
вычисление логического выражения в операторах if, while и repeat, вопрос разработчикам
 
Здравствуйте!
Хотелось бы узнать, всегда ли интерпретатор Lua (и в частности QLua) вычисляет логические выражения полностью в операторах if, while и repeat, или же он прерывает их вычисление в том случае, когда результат уже заведомо известен?
В качестве примера можно привести такой оператор:
if (t_id ~= nil) and not IsWindowClosed(t_id) then ...
Если t_id == nil, то будет ли в данном случае осуществляться вызов функции IsWindowClosed(t_id)? Ведь и без этого ясно, что данное выражение будет равно false.
В компиляторах языков программирования типа Pascal или C (уже не помню точно какого из них) для управления поведением программы в таком случае была опция, которая называлась кажется "complete boolean eval", поскольку иногда этот вопрос имеет большое значение.
А как с этим обстоят дела в (Q)Lua?
Скользящие средние из другого таймфрейма
 
Думаю, что нельзя, если только не писать собственный индикатор.
А вы умножьте период скользящей средней, построенной по часовому графику, на число торговых часов в сутках - и получите примерно то же самое (хотя отличия конечно будут).
Опционы
 
Цитата
Sergey Gorokhov пишет:
Вам нужно попросить брокера предоставить историю графиков по волатильности.
Значит, у брокера есть возможность накапливать и затем передавать клиентам историю за предыдущие дни не только цен сделок и объемов, но и любых других параметров из ТТП?
Ограничение на количество отображаемых свечей на графиках
 
Цитата
sam063rus пишет:
точные замеры тут не имеют смысла
Отсюда надо сделать вывод, что если важна быстрая реакция на события, по которым происходят срабатывания коллбэков, то полную обработку такого события нужно делать только внутри самого коллбэка, не доверяя это функции main() ?
Ограничение на количество отображаемых свечей на графиках
 
Цитата
sam063rus пишет:
это справедливо на случай форс-мажора, т.е. при зависании одного из тредов
Значит, если сам терминал не зависнет (то есть его основной поток), то main() в описанном примере всегда сможет уже через доли секунды отреагировать на события, зафиксированные коллбэками (к примеру, не более чем через 100 мс)?
Ограничение на количество отображаемых свечей на графиках
 
Цитата
sam063rus пишет:
таким образом, чтобы не терять в потери производительности - они остановились на этом варианте
По умолчанию можно оставить ту же самую настройку, что и сейчас - не более 3000 свечей.
А если кому-то надо больше (невзирая на потерю памяти и производительности) - то это будет его выбор. Главное, чтобы возможность выбора была.

Цитата
sam063rus пишет:
по документации максимальное время гарантированного переключения между тредами может доходить до 5 сек, а вреальности и того больше
Это значит, что если у нас работает скрипт на QLua, в котором используются коллбэки для фиксации каких-то событий (типа изменения ТТП, приход сделки и т.п.), а затем на эти события каким-то образом должен отреагировать алгоритм, описанный в функции main() (которая работает в отдельном потоке), то фактически такая реакция может отставать на несколько секунд?
Ограничение на количество отображаемых свечей на графиках
 
Цитата
Серж пишет:
При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Если ограничение на количество свечей будет снято, то было бы хорошо добавить подобную настройку в основное меню, чтобы один раз введенное значение применялось ко всем вновь открываемым графикам.
А уже при необходимости пользователь мог бы изменить его потом в свойствах отдельных графиков.
Ограничение на количество отображаемых свечей на графиках
 
Цитата
Серж пишет:
Уберите, наконец, это ограничение на отображение максимум 3000 свечей. Неудобно анализировать историю на младших таймфреймах.
Полностью поддерживаю это пожелание!

Тем более что квик сейчас вполне способен отобразить на графике как минимум в 100 раз больше свечей - это видно при построении тиковых графиков.
как прокручивать график?, графики
 
Внизу есть полоса прокрутки, аналогичная той, которую вы видите в редакторе Ворд справа от текста.
Если ее нет и кнопка "показать весь график" неактивна, то вероятно вы и так уже видите весь график.
нужно ли использовать Clear() при завершении скрипта
 
Michael Bulychev, спасибо за исчерпывающий ответ!
Вопрос по ЛУА (округление)
 
А то, какие выражения вы используете при сравнении этих чисел, никак не повлияет на Ваши дальнейшие вычисления, так как значения этих чисел в результате сравнения все равно не изменятся.
Вопрос по ЛУА (округление)
 
Цитата
Максим пишет:
но потом нужно делать арифметические операции, и вновь эта проблема всплывет
А что мешает делать эти операции с исходными числами, без всяких преобразований?
Отображение прибыли и убытка по конкретной сделке (и не только), доход, расход, статистика, интерфейс
 
Не за что :)
Вообще согласен с Вашим пожеланием на доработку, так как сам страдал от неудобности этого способа выставления оповещений по цене.
Отображение прибыли и убытка по конкретной сделке (и не только), доход, расход, статистика, интерфейс
 
Не слишком удобно, но задачу отслеживания цены выполнит
Отображение прибыли и убытка по конкретной сделке (и не только), доход, расход, статистика, интерфейс
 
Такое средство уже есть:
Меню Сообщения / Оповещения / Создать оповещение / На изменение ТТП...
Вопрос по ЛУА (округление)
 
Выражение даже можно упростить:
qt.bid[i].price*PRICE_SCALE == math.floor(current_order_price_buy*PRICE_SCALE + 0.5)
Вопрос по ЛУА (округление)
 
Тогда Вам поможет следующий вариант, уже написанный мною выше:
math.floor(qt.bid[i].price*PRICE_SCALE) == math.floor(current_order_price_buy*PRICE_SCALE)
или правильней так, чтобы округление было по правилам математики, а не просто отсечение дробной части:
math.floor(qt.bid[i].price*PRICE_SCALE) == math.floor(current_order_price_buy*PRICE_SCALE + 0.5)

Michael Bulychev, подскажите, пожалуйста, а отдельной функции округления по правилам математики в Lua нет?
Вопрос по ЛУА (округление)
 
Так наверное будет лучше:
Код
math.floor(qt.bid[i].price*PRICE_SCALE) == math.floor(current_order_price_buy*PRICE_SCALE)

 
Вопрос по ЛУА (округление)
 
Можно вместо tonumber(qt.bid[i].price)==tonumber(current_order_price_buy) попробовать написать
qt.bid[i].price == tostring(current_order_price_buy)
Вопрос по ЛУА (округление)
 
*PRICE_SCALE - это правильно. А зачем потом делить на эту же величину?
Лучше умножить на нее current_order_price_buy
Вопрос по ЛУА (округление)
 
И кстати значение current_order_price_buy=91.7027 откуда берется? Если в результате какой-то арифметической операции, то разряды. дающие разницу между этими переменными, могут быть просто не видны, т.к. больше 6 разрядов после точки не отображается.
Вопрос по ЛУА (округление)
 
А если умножать оба числа на 10000 перед сравнением ?
цвет уровней(цены/обема/даты)
 
Два раза левой кнопкой мыши по пустому месту на графике щелкнули - открылось окно "настройка параметров диаграммы", закладка "параметры отрисовки", там все что Вам надо, в том числе можно выбрать шрифт и цвет шрифта.
Как отобразить все графики в quik?, Можно ли как то автоматически отобразить графики всех акций в квике? или только руками каждый график добавлять?
 
Цитата
Андрей 77 пишет:
Причем каждый раз, несмотря на заданное наименование бумаги, РУКАМИ вбивать его в форму.
ну вообще-то можно построить текущую таблицу параметров по классу "акции" и уже по каждой строчке нажимая строить график. Так что вводить названия руками нет нужды.
В какой таблице найти информацию о short
 
Выводил все параметры, чтобы убедиться, что функция getBuySellInfo() возвращает хоть что-то, похожее на правду.
В какой таблице найти информацию о short
 
Версия 6.16.1.15

Код
function main()
  file = io.open("C:\\DATA\\test_short.txt", "w+t")
  local firm_id = "XXXXXXXXXXXX"
  local client_code = "XXXXX"
  local sec_list = getClassSecurities("TQBR")
  count = 0
  for sec in string.gmatch(sec_list, "%w+") do
    count = count + 1
    local t = getBuySellInfo(firm_id, client_code, "TQBR", sec, 0)
    if t == nil then
      file:write(count .. " : " .. sec .. " - nil\n")
    else
      file:write(count .. " : " .. sec .. "\n")
      for key, v in pairs(t) do
        file:write(key .. " - " .. v .. "\n")
      end
      file:write("\n")
    end
  end
  file:close()
end
В какой таблице найти информацию о short
 
По которым разрешен шорт - указано "ДК".
А получил 0 я по всем 315 акциям класса TQBR
В какой таблице найти информацию о short
 
Цитата
Дмитрий пишет:
is_margin_sec - Признак маржинальности инструмента.
Возможные значения:   «0» – не маржинальная;   «1» – маржинальная
Под маржинальной имеется в виду акция, доступная для короткой продажи (т.е. продажи в долг)?
Цитата
Egor Zaytsev пишет:
Да.
Добрый день!
Сейчас прогнал тест по всем акциям - ни одна из них не имеет значения "1" в поле is_margin_sec, хотя заведомо знаю (по таблице купить/продать), что акций, по которым разрешена короткая продажа - почти два десятка.
Сохранение всех сделок
 
Цитата
Серж пишет:
функция CreateDataSource() заказывает данные по интересующему параметру только в том случае, если этот параметр задан вручную в настройках меню "Связь - Списки..."
А если у меня включена настройка "Формировать список получаемых инструментов и параметров - Исходя из настроек открытых пользователем таблиц"?
Тогда по идее терминал никак не должен реагировать на настройки в меню "Связь - Списки..."
В таком случае мне нужно открывать соответствующую таблицу с нужными мне параметрами?
Сохранение всех сделок
 
Цитата
Серж пишет:
Но, к сожалению, она бесполезна (равно, как и вариант с запоминанием значений по времени) без шаманства в меню "Связь - Списки..." (CQ01544135).
А можно немного подробней - о чем в данном случае речь (почему бесполезна и что за шаманство)?
По указанному номеру (CQ01544135) статей на форуме не нашел.
Сохранение всех сделок
 
А нельзя сохранить значения этих параметров по состоянию, например, на 9:55, 18:50 и 23:55 ?
А потом вычесть значение на 9:55 из значения на 18:50, затем прибавить к этой разности значение по состоянию на 23:55
Сохранение всех сделок
 
Цитата
Серж пишет:
Для ФОРТС сложнее: с вечерней сессии отсчёт начинается по-новой.
Проблема в том, что нет сделок за вчерашнюю вечернюю сессию?
Если так, то включите получение всех сделок по классу FUTEVN (для фьючерсов) или OPTEVN (для опционов)
функция обратного вызова для SetUpdateCallback(), как понять, по какому инструменту она сработала?
 
Понятно, спасибо!
функция обратного вызова для SetUpdateCallback(), как понять, по какому инструменту она сработала?
 
Цитата
s_mike@rambler.ru пишет:
Троеточия - часть синтаксиса Lua
А как же это? Значит, можно и без них?
Горячие клавиши
 
Поддерживаю
функция обратного вызова для SetUpdateCallback(), как понять, по какому инструменту она сработала?
 
А если в приведенном примере внутри функции mycallbackforallstocks мне нужно получить номер изменившейся свечки, то нужно добавить в ее описание третий параметр index ?

Код
function mycallbackforallstocks(class,security,index,...) 
   message(class .. " " .. security .. " - " .. tostring(index), 1)
end

ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,index,...) end) 
нужно ли использовать Clear() при завершении скрипта
 
А после DestroyTable() функцию Clear() вызывать нельзя?
функция обратного вызова для SetUpdateCallback(), как понять, по какому инструменту она сработала?
 
Цитата
Sergey Gorokhov пишет:
Но так как действия будут производиться одни и те же, будет удобней создать одну функцию, а через колбеки просто ее вызывать
Проблема в том, что эта функция должна как-то узнать, источником данных по какому инструменту (и таймфрейму) в данный момент она была вызвана.


s_mike@rambler.ru, спасибо за подсказку.
Только я не совсем понял, в приведенном ниже коде должны быть именно троеточия или на их месте должно стоять что-то другое:

Код
function mycallbackforallstocks(class,security,...) 
   message(class .. " " .. security,1)
end

function DataSource(class,security,interval)
   local ds = CreateDataSource(class,security,interval)
   ds:SetUpdateCallback(function(...) mycallbackforallstocks(class,security,...) end)
   return ds
end
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 След.
Наверх