dimka (Автор тем)

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

Страницы: 1
как за AddLabel() отметку цены
 
Quik 9.3.1.11. Win10 - 64

Хочется на график вывести красоту типа "Отметка цены"(хвост понравился) и подвигать ее через SetLabelParams() - 1.jpg берем график Si тег графика = "jbd"

Код
Setup = {
class = "SPBFUT",
sec = "SiH2"
}


local tostring__ = tostring
function tostring(x)
return tostring__(math.tointeger(x) or x)
end

function metka(pos, price)
   local h,m,t = string.match(getInfoParam("SERVERTIME"),"(%d%d)%p(%d%d)%p(%d%d)")
   local time_pos = h..m..t
   local d,m,y = string.match(getInfoParam("TRADEDATE"),"(%d%d)%p(%d%d)%p(%d%d%d%d)")
   local date_pos = y..m..d

   label_params = {
      TEXT = tostring(price),
      IMAGE_PATH = "",
      ALIGNMENT = "LEFT",
      YVALUE = price,
      DATE = date_pos,
      TIME = time_pos,
      R = 80,
      G = 80,
      B = 180,
      TRANSPARENCY = 0,
      TRANSPARENT_BACKGROUND = 1,
      FONT_FACE_NAME = "Arial",
      FONT_HEIGHT = 10,
      HINT = tostring(pos)
   }
   return label_params
end

function main()
   local curp = getParamEx2(Setup.class, Setup.sec, "LAST").param_value+0
   up_label_id = AddLabel("jbd", metka("UP", curp+100))
   dwn_label_id = AddLabel("jbd", metka("DWN", curp-100))
   SetLabelParams("jbd", up_label_id, metka("UP", curp+100))
   SetLabelParams("jbd", dwn_label_id, metka("DWN", curp-100))
end


получаем 2.jpg.  Это обычная метка без хвоста.
Вопрос можно ли хвост приделать как у "Отметка цены".
Пока нашел такой вариант...
Кидаем на график парочку "Отметка цены" и перебором находим их.

Код
Setup = {
class = "SPBFUT",
sec = "SiH2"
}


local tostring__ = tostring
function tostring(x)
return tostring__(math.tointeger(x) or x)
end

function metka(pos, price)
   local h,m,t = string.match(getInfoParam("SERVERTIME"),"(%d%d)%p(%d%d)%p(%d%d)")
   local time_pos = h..m..t
   local d,m,y = string.match(getInfoParam("TRADEDATE"),"(%d%d)%p(%d%d)%p(%d%d%d%d)")
   local date_pos = y..m..d

   label_params = {
      TEXT = tostring(price),
      IMAGE_PATH = "",
      ALIGNMENT = "LEFT",
      YVALUE = price,
      DATE = date_pos,
      TIME = time_pos,
      R = 80,
      G = 80,
      B = 180,
      TRANSPARENCY = 0,
      TRANSPARENT_BACKGROUND = 1,
      FONT_FACE_NAME = "Arial",
      FONT_HEIGHT = 10,
      HINT = tostring(pos)
   }
   return label_params
end

function search_metka(idmetka, inum)
   local q = GetLabelParams(idmetka, inum)
   if q ~= nil then
      return inum
   end
      return -1
end

function main()
   local curp = getParamEx2(Setup.class, Setup.sec, "LAST").param_value+0
   up_label_id = -1
   dwn_label_id = -1
   local q = 0
   for i = 0, 100, 1 do
      q = search_metka("jbd", i)
      if q ~= -1 then
         if up_label_id < 0 then
            up_label_id = q
         elseif dwn_label_id < 0 then
            dwn_label_id = q
            break
         end
      end
   end
   SetLabelParams("jbd", up_label_id, metka("UP", curp+100))
   SetLabelParams("jbd", dwn_label_id, metka("DWN", curp-100))
end

Получаем 3.jpg  

Но так делать мне кажется это не комильфо ...
Status это работает ?
 
В рабочую торговую сессию при активном инструменте
Status =  getParamEx("SPBFUT",  "SiZ0", "STATUS ").param_value
Выдает:
Status = 0.0
Шоткат для LUA скриптов
 
Шоткат ctrl-f11 открывает список QPILE скриптов
Шотката для открытия списка LUA скриптов нету! Можно добавить ?
Подгонка по содержимому или названию в таблице
 
Таблица созданна через CreateWindow(t_id).

1. Запускаю все отлично
2. Делаю подобрать ширину столбцов и ширина столбцов вместе с названием подгоняется не по названию столбцов, а по содержимому ячеек.
Вариант подгонки ширины столбцов по содержимому ячеек это неплохо, но можно ли как то сделать подгонку по названию столбцов ?
getCandlesByIndex опа опа а что это у нас тут, getCandlesByIndex опа опа а что это у нас тут
 
1) Открываем график ставим ему идентификатор
getCandlesByIndex() - показывает 3677 свечей
2) Ставим в "Диаграмма" -> "Диапазон данных" -> Ставим последние 500 интервалов и ставим фильтр времени "10:00 - 18:40"
getCandlesByIndex() - 3677
То есть getCandlesByIndex() просто тупо выводит все свечи и никак не фильтруется ?
Ежели так то можно как-то добавить фильтрацию от "Диаграмма" -> "Диапазон данных".
Таблица не обновляется
 
скрипт у меня находится в папке c!Quik!scripts
Из "Руководство пользователя Интерпретатора языка Lua" взял методом copy&paste 2 файла:  quik_table_wrapper.lua и ntime.lua.
Файл table_object.lua обрезал до  https://pastebin.com/TrMfSzrH
Запуск и ...  таблица пустая а вот этот код(в ссылке строки 43-53) выдает 2 и 4 а должен 1 и 3
  1. row = t:AddLine()
  2. if SetCell(t.t_id, row, 0, "time") == true  then
  3.    message("1")
  4. else
  5.    message("2")
  6. end
  7. if t:SetValue(row,"ai","ai") == true then
  8.    message("3")
  9. else
  10.    message("4")
  11. end
SetCell():
Функция возвращает «true» в случае успешного завершения, иначе – «false».
как перевести rts в рубли
 
1) Нашел формулу в интернете 0.02* курс ЦБР*фьюч RTS. Смотрел спецификации не нашел этой формулы,решил работать через квик.
2) Нашел в квике " стоимость шага цены"(12.56008) + "стоимость шага цены в валюте"(0.2) . Что делать с ними не понял.
Например фюч ртс 156730 сколько это в руб(формула). так и не понял.
2-3-4 как считать будем индикаторы
 
Беру график цены одного инструмента в стакане и правой кнопкой делаю график ... потом добавляю цену другого инструмента прям на этот график... Один график привязан к левой шкале графику другой к правой...
Вопрос !
Может ли индикатор вытащить С()   для 1 графика и второго(при том что 2-3 и т.д. инструментов рисуются в одной области) и как это сделать ?
Пример:
Выбираю rts стакан делаю построить график .. добавляю к нему график в эту же зону рисования например si. И накидываю индикатор... как он может ловить O,H,L,C,T для каждого инструмента и строить свой график
Баг в таблице котировки фьючей ?, Баг в таблице котировки фьючей ?
 
Поставил терминал от брокера (в нем есть преднастроенный info.wnd с графиками, таблицами и т.д.).
В таблице "котировки фьючерсов" удаляю все и делаю один инструмент rts9-19.
Сохраняю info.wnd.
Оставляю терминал включ. на пару недель(иногда комп перезагружаю) и захожу на вкладку и вижу что rts9-19 уже не один ...
P.S. пробовал удалять все графики, все вкладки и таблицы и делал одну эту таблицу и один график + стакан и через пару дней опять левые инструменты набежали...

Квик 7.27.2.1
Кстати и год и 2 назад(тогда были другие версии квика) такая же проблема ... вот решился описать эту проблему.
Опционный модуль неверно считает ?
 
В разработчике стратегий выбрал например купленый стрэдл.
Факт. показывает одну прибыльность(тету вег и т.д.) по сценарию1 значения другие ...
Вот картинка
Может ли луа-скрипт перезагружаться от сессии к сессии ???
 
1) Может ли луа-скрипт перезагружаться от сессии к сессии ??? то есть запускаться как бы с нуля ?
2) как обьяснить такую картинку(ID транзакции 1,2,3 а дальше пусто - что(кто) это???)  http://s017.radikal.ru/i434/1603/f4/b158e3bbe6ad.png. Причем по скрипту это должно было в 19-00 - 19-20 но никак в 20-52 !!! Я допускаю лишь то что скрипт как бы заново запустился ... Да судя по схеме(если просто посчитать, а в теории должно быть 3 купленных си) у меня должен быть 0 !!!фьючей в 20-52,но по таблице портфель 3 си проданных фьюча(на момент 22-20) и маржа меняется. Че-то видать совсем нето с терминалом 6.17
видимо баг в getNumCandles и getCandlesByIndex
 
Quik 6.17.3.6
Берем график любой, например si-6.16, накидываем(можно в новом окне) индикатор MACD(указываем в нем идентификатор например siq10 + включил опцию показ посл. значение)
Временной интервал взял 10 минутки(не обязательно)
Запускаем DebugView чтоб видеть PrintDbgStr
Дальше Lua->Доступные скрипты и запускаем ниже описанную программу и получаем след. картинку:
- В районе строк в DebugView = 500-1500 вывод в DebugView - останавливается
- quik терминал наглухо зависает
Перезагрузка терминала, компа роли не играет ... терминал виснет наглухо
Естественно и без DebugView терминал виснет
Я так вижу проблема в getNumCandles и getCandlesByIndex

require ('math')
MAX_T_INFO = 12
tag = 'siq10'
s4et = 1

function PrintDbgStr2(pds)
PrintDbgStr(''..pds)
end

function main()

t_info =AllocTable()
AddColumn (t_info , 1, "T", true, QTABLE_STRING_TYPE,80)
CreateWindow(t_info)
for i=1,MAX_T_INFO do InsertRow(t_info , -1) end

while not_stopped do
sleep(50)
local t,n,l
local smz = getNumCandles(tag) or 0
if smz > 2 then
t,n,l = getCandlesByIndex(tag,0,smz-2,1)
t1,n1,l1 = getCandlesByIndex(tag,0,smz-1,1)
end

PrintDbgStr2('t:'..t[0].close..' t1:'..t1[0].close)

end--end while
end--end function
про печать
 
Почему графики в квик распечатываются ч/белыми ? ... тот же пайнт(любые в нем цветные картинки) печатает цветом(то есть дрова работают и в настройках дров разрешена печать цветом)...
снятие заявок ..., снятие заявок ...
 
atri брал через atri = getItem("orders", t1[i])
дальше kill_order(atri)
...
function kill_order(atri)
local trans = {
   ["ACTION"] = "KILL_ORDER",
   ["CLASSCODE"] = atri.class_code,
   ["SECCODE"] = atri.sec_code,
         ["ACCOUNT"] = TRADE_ACC,
         ["CLIENT_CODE"]=CLIENT_CODE,
   ["ORDER_KEY"] = tostring(atri.order_num),
   ["TRANS_ID"] = tostring(atri.trans_id)
   }
   local res = sendTransaction(trans)
   PrintDbgStr('kill:'..atri.order_num..'@'..atri.trans_id)
end

Получаем [508] kill:15125099165@0
Но заявка не снимается ...

P.S. заявку(не стоп-заявка!) ставил вручную через стакан(не используя луа)...
Как работает
 
Кратенько:
Нужно снять все заявки ...
Нажимаем левую кнопку мыши и через установленный обработчик(методом SetTableNotificationCallback) на это нажатие
выполянем kill_all_order() ... также установлен OnOrder()...OnTrade()

-- убираем 1 заявку
function kill_order(atri)
   local trans = {
   ["ACTION"] = "KILL_ORDER",
....тыр-тыр
   }
   local res = sendTransaction(trans)
end

local function fnorder(psecode,pflags)
   if psecode ~= sec then return false end
   if bit.band(pflags, 1)~=0 then return true end
end

-- убираем все заявки
function kill_all_order()
local t1 = SearchItems("orders", 0, getNumberOf("orders") +1, fnorder,"sec_code,flags")
           if t1 ~= nil then
               for i = 1, #t1, 1 do
                   atri = getItem("orders", t1[i])
                   kill_order(atri)
               end
           end
end

Вопрос!
1) Во время работы kill_all_order() будут срабатывать OnOrder(),OnTrade() ?
2) Если выполняется OnOrder() остальные On...() ждут последовательно в очереди или пришло событие начинаем отрабатывать ?
3) Нельзя ли это осветить в документации ?
Как насчет пинга?
 
Раньше серваки одного брокера(их у него не меньше 4) мог пинговать для уменьшения лага ... терь пинги брокер блокирует ... Добавьте в квик возможность пинговки серваков хотя бы через меню списка серверов ....
Страницы: 1
Наверх