Sergey Gorokhov (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 ... 78 След.
Данные из стакана котировок
 
Цитата
Женя Логинов написал:
Вопрос в том, будут ли данные в ленте истории стакана, если я не видел её в стакане)
Стакан, также как и таблица текущих торгов транслируется срезами, т.е. раз в период. Если заявка исполняется сразу же то вполне возможно что она не успеет попасть в стакан.
Данные из стакана котировок
 
Цитата
Женя Логинов написал:
То есть даже для 10 бумаг нужно прописать все 10 проверок- выглядит не очень удобно. Или же есть другой способ?Спасибо
Вполне логично и правильно то что программа должна проверять поступающие ей данные, а не надеяться на пользователя.
Вы же в любом случае в программе будете где то прописывать нужные Вам инструменты.
Будь то таблица или просто строка со списком инструментов, но ведь будет же.
Что мешает проверить есть ли входящий sec_code в этом списке?


Цитата
Женя Логинов написал:
А таблица текущих параметров имёт ограничения по количеству бумаг?
Нет не имеет

Цитата
Женя Логинов написал:
Можно ли в одном скрипте сочитать работу со стаканами нескольких бумаг и обращение getParamEx?
Да можно.
Данные из стакана котировок
 
Цитата
Женя Логинов написал:
Описание лабораторной установки:квик версии см. выше. Через настройки получения данных отключены все рынки кроме ФОРТС, в рынке выбран только один инструмент - фьюч сбера; выбраны параметры лучшие цены спроса и предложения, и размеры спроса и предожения. Обезличенные сделки-отключены все рынки.Таким образом, думаю я исключил получение левых данных. В терминале открыт стакан по выбранному фьючерсу.В коде я задал переменные для класса и кода бумаги. И если удалось подписаться на заданный стакан, то ду вайл...

и тем не менее, просьба выполнить рекомендацию.

Цитата
Женя Логинов написал:
И такой ещё вопрос. Если я хочу подписаться на полные доски опционов по двум фьючерсам, на десяток стаканов по акциям и три десятка по облигациям- в сумме может превысить порог в 200 стаканов, про который написано в мануале по квику, или это количество установлено для рабочего места,- то как мне оптимально записать подписку на все эти стаканы, проверку их в ОнКвоут- очередью?  

Это максимальное количество разрешенное конкретному пользователю. Контролирует его сервер QUIK а не рабочее место.
И обойти это ограничение нельзя, только если брокер установит Вам другое ограничение.
Данные из стакана котировок
 
Женя Логинов,

У Вас в коде нет никакой проверки на инструмент, а значит легко может попасть цена от другого инструмента, если по нему открыт стакан в терминале или его заказал другой Lua скрипт.
Для решения добавьте проверку как в примере из документации
Код
function OnQuote(class, sec )   
  if class =="SPBFUT" and sec == "RIZ2" then
    ql2 = getQuoteLevel2(class, sec)   
  end
end


QLUA, вопросы начинающих.
 
Олег,
К сожалению без кода не ясно что и как у Вас происходит, следовательно и рекомендовать что либо затруднительно.
Просьба предоставить исходный код скрипта.
kill inactive stop order
 
s_mike@rambler.ru,
Проблема изучается. Постараемся в ближайшее время дать ответ.
QLUA, вопросы начинающих.
 
Олег,
Просьба выложить пример кода на котором воспроизводится проблема
От какого времени вести отчет для создания своего таймфрейма?
 
Цитата
sav 312 написал:
Как мое время "10:00:50" в этот формат перевести.
Только добавить текущую дату.
Хотя как сказал SDL,  это явно лишнее.
От какого времени вести отчет для создания своего таймфрейма?
 
Цитата
sav 312 написал:
Если в ленте сделок просто время в секундах без привязки к дате, то этот вариант самый простой и меня устраивает.

Опять не понятно. Ощущение что мы про разные вещи говорим.
Что значит с привязкой к дате?
Вы боитесь что время 10:00:50 может дать результат не сегодняшней сделки а вчерашней? Или как?
Если боитесь, то просто отфильтровывайте все сделки, у которых дата сделки не равна дате торгов (так фильтруются сделки вечерней сессии фортс).
Все остальные сделки и так только за текущую сессию, и нет смысла проверять дату.
QLUA, вопросы начинающих.
 
Например
Код
string.format("%.0f", StopShort.yvalue)
QLUA, вопросы начинающих.
 
Олег,
Понятно, на самом деле число у Вас не 113300.000000 а 113300.0000000001 (или как то так)
Это особенность чисел с плавающей точкой (в википедии есть целая статья на тему)
Для решения, Вам надо округлять число с заданной точностью
От какого времени вести отчет для создания своего таймфрейма?
 
Цитата
sav 312 написал:
время в секундах от какой-то древней даты)))
Совершенно не понятно зачем это?
Будет проще если Вы приведете конкретный пример, и поясните чем не устраивает предложенный вариант.
От какого времени вести отчет для создания своего таймфрейма?
 
sav 312,
Простая математика
часы умножаем на 3600 + минуты умножаем на 60 + секунды
Как получить время свечи?, Анализ индикатора
 
Андрей,
Функция T возвращает таблицу, состоящую из параметров {year, month, day, week_day, hour, min, sec, ms, count}.
По этому Вы видите не то что ожидаете.
Для решения надо перевести таблицу в строку.
например так:
T(index).hour..":"..T(index).min..":"..T(index).sec
От какого времени вести отчет для создания своего таймфрейма?
 
Цитата
sav 312 написал:
Вопрос в том, как стартовое время 10.00.50 текущего дня перевести в формат POSIX.
А почему просто не перевести время в количество секунд, и потом нормально сравнивать?
QLUA, вопросы начинающих.
 
Олег,
Не понятно чем не устраивает tostring?
Код
X = 113300.000000
message(tostring(X))

Обезличенные сделки за прошлые торговые сессии
 
mefisto mefisto,
Такой возможности нет
Получить значения индикатора Alligator
 
Dmitry Dimaka,
Функция Get_Candle_Ex возвращает массив из линий индикатора.
обратиться к нужной линии можно через  Get_Collection_Item указав номер нужной линии.
Пример есть в документации см "Раздел 8. Алгоритмический язык QPILE" глава "Функции для работы с графиками"
Проблемы с math.random
 
Цитата
Виктор Столетов написал:
Но что если шаг цены равен к примеру 0,5? Тогда число 78.61 следовало бы округлить до 78,5, но при p=1 оно округлится до 78,6, а при p=0 до 79. Хотя это уже мои проблемы, если найду решение, то напишу.

тогда так:
Код
function roundEX(V, P)
if math.fmod(P,1) == 0 then
   if (V >= 0) then return math.floor(V * (10 ^ P) + 0.5) / (10 ^ P)
   else return math.ceil(V * (10 ^ P) - 0.5) / (10 ^ P) end
else
   if (V >= 0) then return math.floor(V / P + 0.5) * P
   else return math.ceil(V / P - 0.5) * P end
end
end


можете переделать по своему.
Проблемы с math.random
 
Цитата
s_mike@rambler.ru написал:
--------------------------------------------------------------------
-- round (number, p = 0)
-- Округление до требуемого знака.
-- round(123.456,-2) = 100
-- round(123.456,1) = 123.5
-- round(123.456) = 123
function math.round(value, p)

local e = 10 ^ (p or 0)
return math.floor(tonumber(value) * e + 0.5) / e
end

Позвольте немного скорректировать.
дело в том что при округлении отрицательных чисел, эта функция может допустить ошибку.
так  round(-123.55,1) вернет -123.5 а должен вернуть -123.6
или  round(-123.5,0) вернет -123 а должен вернуть -124

для того чтобы избежать этого, надо немного исправить функцию для случая отрицательных чисел, вот так:
Код
function math.round(value, p)
   local e = 10 ^ (p or 0)
   if value >= 0 then return math.floor(tonumber(value) * e + 0.5) / e
   else return math.ceil(tonumber(value) * e - 0.5) / e end
end
Дневки не совпадают с биржей., Есть ли решение?
 
Цитата
Владимир написал:
Наверно, не так задал вопрос. Перефразирую его по другому. Почему в Quik начало свечек не такое, как на сайте биржи?

Потому что QUIK умеет работать далеко не с одной биржей и ориентироваться на какую-то одну биржу мы не можем.
Что означает параметр Settings.Period, Создание технического индикатора
 
Здравствуйте,
В QUIK автор LUA индикатора может создавать какие-то свои собственные параметры.
Просто автор индикатора создал такой параметр с названием Period.
Ровно также он мог назвать его как угодно.
Обновление пользовательской таблицы/окна
 
Цитата
BlackBoar написал:
Допустим я то что должно отображаться буду обновлять 2 раза в секунду, моему человеческому восприятию чаще и незачем. Судя по обсуждению можно считать что точно обновится, так?
Да верно.

Цитата
BlackBoar написал:
Если тема темная то заголовки действительно рисует оконный класс и SetWindowCaption действительно форсирует отрисовкуА если тема стандартная то заголовки в компетенции венды и все как обычно.
Вы правы, скрипт тестировался на темной теме.

Цитата
sav 312 написал:
На другом компе со sleep 100 работает, а с SetWindowCaption также нет.
С SetWindowCaption разобрались, см выше.
А вот что делать со sleep, к сожалению затруднимся что либо порекомендовать.
Пока только ясно что проблема локальная и связана с конкретным компьютером, скорей всего с процессором.
Но что это может быть, к сожалению идей нет.
Обновление пользовательской таблицы/окна
 
sav 312,
Хотя есть идея попросить повторить на другом компьютере, если это возможно.
Обновление пользовательской таблицы/окна
 
sav 312,
Идей нет.
Пришлите нам копию Вашего терминала (без ключей доступа) на адрес quiksupport@arqatech.com
Обновление пользовательской таблицы/окна
 
Цитата
sav 312 написал:
Почему со sleep не прокатывает сам не пойму.

А он в принципе работает?
Т.е. если вообще написать
message("begin")
sleep(100500)
message("end")
что произойдет?

И уточните версию терминала.
Обновление пользовательской таблицы/окна
 
sav 312,
Возможно терминал чем-то нагружен?
К сожалению у нас догадки кончились.
Проблема не воспроизводится.

Изначально же, суть в том что в терминале окна перерисовываются раз в 50мс. И если скриптом обновлять таблицу чаще, то она не успевает обновляться, в результате происходит эффект заморозки.
Лечится это как уже говорили другие пользователи принудительной перерисовкой окна, либо увеличением sleep до значений больше 50.
Обновление пользовательской таблицы/окна
 
sav 312,
Код
Run = true;
 
function main()
 CreateTable();
 while Run do
  SERVERTIME = tostring(getInfoParam('SERVERTIME'));
  PasteTable();
  sleep(10)
 end;
end;

-- Функция создает таблицу
function CreateTable()
   t_id = AllocTable();
  
   AddColumn(t_id, 0, "1", true, QTABLE_INT_TYPE, 15);
   AddColumn(t_id, 1, "2", true, QTABLE_INT_TYPE, 10);
   t = CreateWindow(t_id);
 
   SetWindowCaption(t_id,"ООО");
   SetWindowPos(t_id, 0, 0, 302, 864);
   InsertRow(t_id, -1);
   
end;
  
-- Функция заполняет таблицу
function PasteTable()
   SetCell(t_id, 1, 0, os.date());
   SetCell(t_id, 1, 1, tostring(SERVERTIME)); 
   SetWindowCaption(t_id, "ООО")
end
Обновление пользовательской таблицы/окна
 
Цитата
sav 312 написал:
Один из пользователей (выше найдете) запускал мой код, проблема подтвердилась.
Так и у нас она воспроизводится.
Но только если внести уже озвученные правки в виде sleep или SetWindowCaption то Ваш код начинает нормально работать.
Обновление пользовательской таблицы/окна
 
sav 312,

У Вас всё нет так. Вы на каком коде экспериментируете?
На том который Вы привели ранее, проблема не воспроизводится.
Возможно кроме него что то еще запущено?
Поделитесь, кто как отслеживает факт "готовности свечи"?
 
Цитата
sav 312 написал:
Подскажите, можно ли получить "open" текущей свечи, не дожидаясь ее закрытия?

Да можно.
Обновление пользовательской таблицы/окна
 
Цитата
BlackBoar написал:
Приходит в голову попробовать SetWindowPos не меняя ни размер ни положение
Это не единственный способ, можно также использовать SetWindowCaption
Обновление пользовательской таблицы/окна
 
sav 312,
К сожалению других вариантов предложить не можем.
Обновление пользовательской таблицы/окна
 
Цитата
sav 312 написал:
Проблема будет даже при  sleep (1000), проверено до обращения к вам.
Нет, это не так.
Проверьте еще раз внимательней.

Цитата
sav 312 написал:
У меня вопрос не в том, как затормозить скрипт, а как сделать так, чтобы данные в таблице обновлялись с каждым тиком.
Вариант уже был предложен.
Обновление пользовательской таблицы/окна
 
sav 312,
Проблема в отрисовке.
И SERVERTIME тут не причем, если его заменить на os.date() то симптомы будут те же.
Сделайте sleep(100) тогда проблемы не будет.
Дневки не совпадают с биржей., Есть ли решение?
 
Цитата
Владимир написал:
Почему начала свечек разные?
Потому что, на сайте биржи начало свечки совпадает с началом вечерней сессии.
А в QUIK это начало дневной сессии
Moving Averege - уровни, Построение канала на основе Moving Averege
 
Цитата
Andrey Malyar написал:
Так какие значения надо поставить что бы появились уровни?

Какую цифру укажите на том уровне цены и будете видеть.
У Вас цена на графике видна в районе от 112100 до 114500, значит и уровень Вы увидите если укажите значение в этом диапазоне.
Подсобите новичку с расчетом средней по фьючерсу., Как (где) взять инфо по сделкам на фьюче за несколько дней
 
Здравствуйте,
Для срочного рынка можно использовать параметр «Эффект. цена поз.» в таблице позиций по клиентским счетам.

Если хотите самостоятельно рассчитывать параметр, тогда придется каждый день сохранять свои сделки.
Сообщение при открытии позиции
 
Цитата
Олег написал:
Не совсем понял...

Добавить строку
message("PosNow="..PosNow)

перед строкой

if PosNow>0 then

Вот так:
Код
--остальной код
message("PosNow="..PosNow)
if PosNow>0 then
--остальной код
Сообщение при открытии позиции
 
Олег,
Тогда проверьте что попадает в PosNow перед if.
message("PosNow="..PosNow)
Сообщение при открытии позиции
 
Олег,
Добавьте sleep(1000) в цикл while is_run do
скорей всего причина в этом.
По остальному коду проблема у нас не воспроизводится.
Неадекватная волатильность
 
Здравствуйте,
Так транслирует биржа. К сожалению затруднимся назвать причины, возможно к торгам подключился какой-то робот, который портит картину.
переделать индикатор в робота
 
Цитата
Evgenia написал:
Помогите понять, что ещё нужно в коде поменять?

Надо поменять всю структуру кода. Он составлен абсолютно некорректно.
По простому, Вы создали кучу функций внутри функции main() и нигде ни разу эти функции не вызываете.
Раз нет вызова функций то и работать они естественно не будут.
Во первых, создавать функции внутри main() в данном случае является лишним, вынесите их за пределы main()
Во вторых, чтобы функция сработала ее надо вызвать. Исключение только функции колбеков, которые вызывает сам терминал при наступлении соответствующих условий.
У Вас сейчас в коде только один колбек OnStop.
В третьих, в QUIK срипты индикаторов и для остального, это разные вещи, и то что есть в индикаторах отсутствует в обычных скриптах. в связи с чем пересекать их нельзя.
Функция OnCalculate это функция индикаторов, в обычном коде она не будет работать также как в индикаторах.

В итоге, чтобы перенести код с одного ПО на другое, надо изучить оба ПО и понимать как в них надо работать.
Без этого перенести код не получится.
Графики, Почему графики такими странными стали (не опытный)
 
Здравствуйте,
К сожалению из описания не понятно что именно не так с графиком.
Если Вас не устраивает внешний вид графика "Бары" то Вы можете его поменять в свойствах графика на "Свечи"
Функция getBuySellInfo все время возвращает nil
 
Дмитрий Минеев,
10260 - это код клиента на фондовой секции, а не на срочной.
SPBFUT000000 - это фирма срочной секции.
Нельзя по фирме срочной секции получить данные по коду клиента от фондовой секции.
Если по простому, откройте в терминале таблицу Купить/продать (из таблицы Клиентский портфель) и посмотрите что там написано и сделайте также.

Так по акциям, для нашего демо, строка будет следующей:
result = getBuySellInfo("NC0011100000", "10260", "QJSIM", "LKOH", 0)
Рублёвый объём позиции фьючерсов с долларовыми пунктами, График рублёвой цены фьючерса по графикам фьючерса на индекс РТС и на курс доллара к рублю
 
Цитата
Ростислав Дм. Кудряшов написал:
После переноса строк local tbl1 = и tbl2 == из блока if not FirstValid ...
А зачем надо было переносить строки?
Видимо перенесли строки и по этому предложенный код не работает.
посмотрите как оно должно было быть
Скрытый текст


Цитата
Ростислав Дм. Кудряшов написал:
видно, что колонка второго исходного графика даёт нулевые close().,
Это не дает никакой новой информации, проблема и так предельно ясна, лишний раз ее показывать нет смысла.
Рублёвый объём позиции фьючерсов с долларовыми пунктами, График рублёвой цены фьючерса по графикам фьючерса на индекс РТС и на курс доллара к рублю
 
Ростислав Дм. Кудряшов,

Для решения, добавьте такой код:
Код
   if #tbl1 == 0 and #tbl2 == 0 and Size()==index then
        for idx = 1, index-1 do
          SetValue (idx, 1, CalcIt (idx))
        end
   end
Рублёвый объём позиции фьючерсов с долларовыми пунктами, График рублёвой цены фьючерса по графикам фьючерса на индекс РТС и на курс доллара к рублю
 
Цитата
Ростислав Дм. Кудряшов написал:
В работе Quik без подключения к серверу при смене тайм-фрейма наблюдается такая аномалия, что значения котировок close() и т.п. для второго графика Settings.GraphId2 оказываются все нулевые.
Это делает невозможным построение графика по двум другим сразу после смены тайм-фрейма. Для получения графика нужно открыть его диалог "Редактирование настроек графика" и нажать кнопку "OK".
Уточните версию терминала QUIK
Как рисуется прямоугольник.?, Квик, линии, фигуры, Qlua, Quik,
 
Цитата
RayIntraday написал:
Это некие элементы рисунка, которые добавляются на график или это просто соединённые линии которые по сути есть код?
Рисуется кодом.

Цитата
RayIntraday написал:
Подскажите как правильно написать код, который будет добавлять на график ежечасно прямоугольник, размером от хая до лоя, ограниченный начальной и конечной свечкой часа. Если открылся на хаях и закрылся на лоях, то отрисовывается красным, если открылся на лоях и закрылся на хаях, то соответственно зелёный.
В Lua это возможно только через механизм меток см функцию AddLabel
Отображение идентификатора графика в сообщении
 
Evgenia,
Если условие if не срабатывает, проверьте что попадает в это условие, т.е. какие значения у t[0].low, t[1].low, t[1].high, t[1].close и остальные.
Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 ... 78 След.
Наверх