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

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

Страницы: 1
Тиковый график QuikJunior и рабочего Quik
 
Хотелось бы все-таки услышать грамотный и развернутый ответ разработчиков.
Тиковый график QuikJunior и рабочего Quik
 
Добрый день!

Расскажите пожалуйста как формируется тиковый график QuikJunior для срочного рынка, точнее используются ли для его формирования реальные торговые данные каких-то дней или он эмулируется вашим сервером самостоятельно?

Дело в том, что наблюдаю для инструмента SiU1 абсолютно разное поведение тикового графика для QuikJunior и рабочего терминала Quik брокера ВТБ. Настроенные параметры торговли по тиковому графику для SiU1 для QuikJunior не подходят для терминала Quik брокера ВТБ из-за разного поведения инструмента на тиках там и там. Для QuikJunior характерно хаотичное перепрыгивание отдельных сделок на тиковом графике для линий Болинджера от нижней линии к верхней и наоборот. Для реального тикового графика характерно движение змейкой в любую сторону, т.е. если пошло движение цены в одну сторону, то продолжается или разворачивается или замирает, но нет отдельных перепрыгиваний. Эти перепрыгивания дают также эффект после остановки торгов для клиринга, когда H или L первой свечи улетает в "даль". Все это не позволяет оптимизировать торговлю на QuikJunior, чтобы перенести ее в дальнейшем на рабочий quik.

В связи с этим еще вопрос, планируется ли адаптация QuikJunior под реальные торги (пусть дни будут совсем другие или сдвинуты графики на какую-то задержку от реальных торгов) или можно зарегистрировать такое пожелание?
Об ответе на отправленную заявку.
 
Еще сейчас при перезагрузке quik, тиковый график стал загружаться заново, т.е. не с момента разрыва, с начала дня. Какие настройки надо включить в quik, чтобы он сохранялся с момента разрыва, а не загружался заново?
Об ответе на отправленную заявку.
 
Версия quik 8.10.1.1, брокер ВТБ.
Об ответе на отправленную заявку.
 
Добрый день!
Подскажите пожалуйста. Написал робота, который генерирует заявки и ждет появления ее в таблице заявок, включая счетчик времени. На Juniore все работало, задержка составляла порядка 200-500 мс. Сегодня запустил на реальном счете. Открыт один тиковый график, по нему торговля. Через пару часов заметил, что робот задумывается и увидел, что задержка появления заявки в таблице заявки составляет 1,5 минуты. При этом тиковый график движется и время сервера не отстало от реального. Выключил робота и вручную отправил заявку, заявка появилась секунд через 40. Теперь не понимаю куда вообще копать и с чем разбираться..
Не торгуются фьючерсы на QUIK Junior.
 
Заработало. Тему можно закрыть и удалить
Не торгуются фьючерсы на QUIK Junior.
 
Всем добрый день!
В QUIK Junior замерли фьючерсы SiU1 и SiZ1 на времени 9:14, стакан не двигается, в таблице указано, что сессия открыта и торгуется. По акциям Сбербанка торги идут, стакан двигается. Это у меня что-то или у всех так?
Вопрос по индикатору.
 
Цитата
s_mike@rambler.ru написал:
И ещё нужно учитывать, что на тиковых интервалах  все свечи имеют разное время. Непонятно, что вы хотите увидеть, вычитая значение Газпрома в один момент времени из значения Лукойла в другой момент.
не, я графически строил дельту АМА для текущего и предыдущего значения одного графика. для наглядности)
Вопрос по индикатору.
 
Цитата
Nikolay написал:
Необходимо еще учитывать то, что при старте терминала индикаторы не могут инициализироваться одновременно. Текущий запустился первый, а два других, с которых данные считываются - еще нет. Или в другой последовательности.
думаю вы правы, спасибо
Вопрос по индикатору.
 
Пардоньте, сейчас все работает. Тогда не очень понимаю, почему при перезагрузке до этого не работало.
Цитата
s_mike@rambler.ru написал:
Может быть потому, что у разных инструментов разное количество свечей?
Да, конечно разное, даже для одного инструмента. Но в индикаторе оно не статично.
Вопрос по индикатору.
 
Добрый день!
Пытаюсь разобраться с индикаторами. Появился вопрос. Есть индикатор, который вычисляет разность между двумя свечками другого индикатора. Добавляю его на тиковый график в quikjunior, он работает и показывает разность двух свечей-тиков. Перезапускаю quikjunior, оставив индикатор на графике, он перестает работать и вычислять разность, так как свеча s0 все время равна нулю. Подскажите ошибку и что делаю не так.

Settings = {
Name = "**Raznost_SiU1_MyRobot",
tag_graf="SMA_SiU1",
line = {
{
Name = "AMA",
Type = TYPE_LINE,
Color = RGB(221, 44, 44)
}
},
}

function Init()
return 1
end

function OnCalculate(Index)
local Candle_Count = getNumCandles(Settings.tag_graf)
local candel_prav=Candle_Count-Index
PrintDbgStr("Candle_Count"..type2str(Candle_Count))
PrintDbgStr("candel_prav"..type2str(candel_prav))

local s1=GetGraphValueByCandle(Settings.tag_graf, candel_prav+1, 0)
local s0=GetGraphValueByCandle(Settings.tag_graf, candel_prav, 0) or s1
PrintDbgStr("s0"..type2str(s0))
PrintDbgStr("s1"..type2str(s1))
s0=math_round(s0.close,7)
s1=math_round(s1.close,7)

PrintDbgStr("Index"..type2str(Index))
PrintDbgStr("s0"..type2str(s0))
PrintDbgStr("s1"..type2str(s1))


local razn=s0-s1
PrintDbgStr("razn"..type2str(razn))
return razn
end



--Функция преобразования переменной любого типа и таблицы в строку
function table2string(table)--запись таблицы в строку
local k,v,str=0,0,""
for k,v in pairs(table) do
if type(v)=="string" or type(v)=="number" then
str=str..k.."="..v..';'
elseif type(v)=="table"then
str=str..k.."={"..table2string(v).."};"
elseif type(v)=="function" or type(v)=='boolean' then
str=str..k..'='..tostring(v)..';'
end
end
return str
end

--Функия добавления типа переменной и значения при использовании PrintDbgStr()
function type2str(value)
local t,str=type(value),""
if t=="string" or t=="number" then
str=":|"..t.."|"..value
elseif t=="table"then
str=table2string(value)
str=":|"..t.."|"..str
elseif t=="function" or t=='boolean' then
str=":|"..t.."|"..tostring(value)
end
return str
end

------------------------------------------------------
--Функция возвращает свечу (таблицу) графика
------------------------------------------------------
function GetGraphValueByCandle(tag, candle_num, line)
--[[
tag - тэг графика\индикатора,
candle_num - номер запрашиваемой свечи(СПРАВА): 0 - текущая, 1 - предыдущая и тд,
line - номер линии графика\индикатора]]
  --PrintDbgStr("Пуск GetGraphValueByCandle,tag="..type2str(tag))
local CandleCount = getNumCandles(tag)--получает количество свечей по идентификатору tag
--PrintDbgStr("GetGraphValueByCandle,CandleCount="..type2str(CandleCount))
   local LinesCount = getLinesCount(tag)--получения количества линий в графике
   local c_num = candle_num
   if ( candle_num == nil or candle_num==0 ) then
       c_num = CandleCount-1
   end
   if (candle_num>0)then
       c_num = CandleCount-1-candle_num
   end
   if ( line == nil ) then
       line = 0
   end
   if (CandleCount == nil or LinesCount == nil) then
       message("qlib.GetGraphValueByCandle(): error occured, cannot aqquire candle or line data"..tag,3)
       return 0
   end
   if (tag == nil) then
       message("qlib.GetGraphValueByCandle(): error occured, tag is nil"..tag,3)
       return 0
   end
   t, num, legend = getCandlesByIndex(tag, line, c_num, 1)--получения информации о свечках по идентификатору, график должен быть открыт
--[[Формат вызова getCandlesByIndex():
TABLE t, NUMBER n, STRING l getCandlesByIndex (STRING tag, NUMBER line, NUMBER first_candle, NUMBER count)
Параметры:
• tag – строковый идентификатор графика или индикатора,
• line – номер линии графика или индикатора. Первая линия имеет номер 0,
• first_candle – индекс первой свечки. Первая (самая левая) свечка имеет индекс 0,
• count – количество запрашиваемых свечек.
Возвращаемые значения:
• t – таблица, содержащая запрашиваемые свечки,
• n – количество свечек в таблице t,
• l – легенда (подпись) графика.]]
   --PrintDbgStr("t"..type2str(t))
--PrintDbgStr("num"..type2str(num))
--PrintDbgStr("legend"..type2str(legend))
if ( num == 0 ) then
       message("qlib.GetGraphValueByCandle(): error occured, no candles aqquired"..tag,3)
       return 0
   end
--PrintDbgStr("return GetGraphValueByCandle,t[0]"..type2str(t[0]))
   return t[0]
end

function math_round( roundIn , roundDig ) -- первый аргумент - число которое надо округлить, второй аргумент - количество символов после запятой.
    local mul = math.pow( 10, roundDig )
    return ( math.floor( ( roundIn * mul ) + 0.5 )/mul )
end
О субсчетах на демо quik.
 
1. Результат Вашего метода  для демо quik ничем не будет отличаться от того, что брокер предоставляет quik с несколькими субсчетами? Просто не хотелось бы в дальнейшем натыкаться на какие то нюансы..

2. В таком случае можно как-то это реализовать, чтобы в дальнейшем через месяц после сброса пароля не надо было заново создавать несколько демо доступов и писать вам, чтобы вы слили все в один и так каждый месяц?

3. А вообще данное пожелание можно все-таки зарегистрировать для удобства пользователей? Например на Вашей странице демо-доступа добавить кроме галочек выбора рынков, галочку два субсчета, этого было бы достаточно.
О субсчетах на демо quik.
 
Здравствуйте!
Зарегистрируйте пожалуйста в вашей системе заявку по реализации субсчетов в демо версии quik, чтобы можно было тестировать стратегию торговли скрипта lua одновременно по нескольким субсчетам в демо версии quik, а вылавливать свои ошибки на боевом терминале.
Страницы: 1
Наверх