qlua


Онлайн-курс: Портфель роботов на QLua под ключ

Тип мероприятия: Вебинар
Уровень: Углубленный
Начало: 19 Ноября 2018 19:00
Цена: 25000
Продолжительность: 5 дней по 2 часа
Телефон: +7 (495) 981 06 06, 8 800 700 00 55 доб. 44026
Обучение проводит: Евгений Ни
Организатор: КИТ Финанс Брокер

Цель предлагаемого обучающего курса научить вас создавать мульти-таймфреймовых, много-параметрических роботов на языке QLua для Quik.
Начнем мы с нуля, т.е. с самых азов языка Lua, далее научимся программировать полностью автоматических роботов на Lua.
Проведем тестирование и оптимизацию параметров в Wealth-Lab 6.
Выберем не один наилучший набор параметров, а 30-50% от возможных комбинаций параметров.
С помощью корреляционной матрицы зададим веса нашим системам.
И наконец, поставим наших боевых роботов на защищенный виртуальный сервер.
В конце курса Вы получите готового много-параметрического, мульти-таймфреймового робота на QLua для QUIK. Скрипт для запуска терминала КВИК без ввода логина и пароля

После курса 3 месяца поддержки по скайп.



( Читать дальше )

график Газпром в долларах для Квика

1. В папке с Квиком создаем директорию LuaIndicators.
2. В этой папке создаем файл gazp_usd.lua, туда записываем:
Settings = 
{
   Name = "GAZPROM_USD",
   tag = "GAZP",
   tag1 = "GAZP_USDRUB",
   line=
   {
      {Name = "line1", Color = RGB(0, 0, 255), Type = 1,Width = 1}
   }
}

vPrice=1;

function Init()
   return 1
end

function OnCalculate(index)
	local vOutFlag=0;
	local vGazp =(getCandlesByIndex(Settings.tag, 0, index-1, 1)[0].close or 1) ;
	local vUSDRUB=(getCandlesByIndex(Settings.tag1, 0, index-1, 1)[0].close or 1);
	if vGazp>0 then
		vOutFlag=1;
	else
		vOutFlag=0;
	end;
	if vUSDRUB>0 then
		vOutFlag=1;
	else
		vOutFlag=0;
	end;
	if vOutFlag > 0 then
		local Out = vGazp/vUSDRUB;
		vPrice=Out;
	end;
	return  vPrice
end
3. В Квике создаем график с курсом доллара (USDRUB_TOM).
4. К графику добавляем график Газпрома (ГАЗПРОМ ао).
5. Идем в настройки графика, в разделе «Дополнительно» указываем «Идентификатор»: GAZP -для графика с ценой Газпрома, GAZP_USDRUB -для графика с курсом.
6. Добавляем индикатор (выбираем из выпадающего списка GAZPROM_USD).
график Газпром в долларах для Квика
7. Уменьшаем ненужные поля. Если график не отобразился — даблкликаем на графике — жмем «Применить»:

( Читать дальше )
  • обсудить на форуме:
  • QUIK

QUIK: Бенчмарк ОФЗ к ставке ЦБ

    Может кому будет интересен скрипт на QLUA, который выступает простым бенчмарком ОФЗ с постоянным купоном к ставке ЦБ.
Основные параметры доходность и премия к ставке ЦБ, с учетом дюрации.
Скрипт не работает онлайн (оперативность тут не принципиальна), при запуске собирает параметры в таблицу и выводит на экран.
В дальнейшем планируется эти данные использовать для анализа премии доходности по дюрации для муниципальных и корпоративных облигаций к ОФЗ.

QUIK: Бенчмарк ОФЗ к ставке ЦБ


    Код скрипта на github (на github две версии одна в utf-8 для просмотра и основная версия в win1251, т.к. quik понимает только его):
github.com/trantor77/lua_scripts/boundsOFZ.lua

    Код скрипта:
--переменные
keyRateCB = 7.5
classCode = "TQOB"

function CreateTable()
    t_id = AllocTable()
    AddColumn(t_id, 0, "Бумага", true, QTABLE_STRING_TYPE, 15)
    AddColumn(t_id, 1, "Цена", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 2, "Доходность, %", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 3, "Дюрация, лет", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 4, "Купон, %", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 5, "Премия к ЦБ, бп", true, QTABLE_INT_TYPE, 15)
    AddColumn(t_id, 6, "Погашение", true, QTABLE_STRING_TYPE, 15)
    t = CreateWindow(t_id)
    SetWindowCaption(t_id, "ОФЗ")
end

function string.split(str, sep)
    local fields = {}
    str:gsub(string.format("([^%s]+)", sep), function(f_c) fields[#fields + 1] = f_c end)
    return fields
end

function getParamNumber(code, param)
    return tonumber(getParamEx(classCode, code, param).param_value)
end

function formatData(prm)
    return string.format("%02d.%02d.%04d", prm%100, (prm%10000)/100, prm/10000)
end

CreateTable()

arr = {}
sec_list = getClassSecurities(classCode)
sec_listTable = string.split(sec_list, ',')
j = 0
for i = 1, #sec_listTable do
    secCode = sec_listTable[i]
    securityInfo = getSecurityInfo(classCode, secCode)
    short_name = securityInfo.short_name
    if short_name:find("ОФЗ 26") ~= nil then
        j = j + 1
        r = {}
        r["short_name"] = short_name
        r["price"] = getParamNumber(securityInfo.code, "PREVPRICE")
        r["yield"] = getParamNumber(securityInfo.code, "YIELD")
        r["duration"] = getParamNumber(securityInfo.code, "DURATION")/365
        couponvalue = getParamNumber(securityInfo.code, "COUPONVALUE")
        couponperiod = getParamNumber(securityInfo.code, "COUPONPERIOD")
        r["coupon"] = ((365/couponperiod) * couponvalue)/10
        r["bonus"] = (r["yield"] - keyRateCB)*100
        r["mat_date"] = getParamNumber(securityInfo.code, "MAT_DATE")
        table.insert(arr, j, r)
    end
end

table.sort(arr, function(a,b) return a["duration"] < b["duration"] end)

for j = 1, #arr do
    row = InsertRow(t_id, -1)
    SetCell(t_id, row, 0, arr[j]["short_name"])
    price = arr[j]["price"]
    SetCell(t_id, row, 1, string.format("%.2f", price), price)
    yield = arr[j]["yield"]
    SetCell(t_id, row, 2, string.format("%.2f", yield), yield)
    duration = arr[j]["duration"]
    SetCell(t_id, row, 3, string.format("%.2f", duration), duration)
    coupon = arr[j]["coupon"]
    SetCell(t_id, row, 4, string.format("%.2f", coupon), coupon)
    bonus = arr[j]["bonus"]
    SetCell(t_id, row, 5, string.format("%.0f", bonus), bonus)
    mat_date = arr[j]["mat_date"]
    SetCell(t_id, row, 6, formatData(mat_date), mat_date)
end
  • обсудить на форуме:
  • Quik Lua

Помогите найти вот это...

Всем доброго дня.
Как-то на просторах ютуба я наткнулся на один интересный индикатор.
Вот ссылка на видео https://www.youtube.com/watch?v=3NWVbY_NgC4
Всячески пытался найти хозяина этого видео но всё безрезультатно.
Может кто знает что это за индикатор (его название) и где его можно найти?
Я буду очень признателен, если вы им поделитесь.


Благодарю всех, кто поделился плюсами в прошлый раз. 

Помогите найти вот это...






Настоящая торговая стратегия.

Мацуо Басё



Что нужно для того, чтобы торговать так, как нарисовано ниже?

Сбербанк, 2017 год



( Читать дальше )

Обновил индикатор регрессии

Обновил индикатор регрессии. Для меня это основной индикатор определения тренда.

Теперь он показывает историю. Становится видно, как над применять данный индикатор. Без истории видно, что тренд вниз. Но вот начало разворота (возможного) как раз видно по истории. Меняя degree, меняем тип: линейная, параболическая, кубическая.

yadi.sk/d/M2x1Y23V3NLFqT

github.com/nick-nh/qlua/blob/master/iReg.lua

Обновил индикатор регрессии



QUIK 7.14 Метки на чёрном фоне

Приветствую всех после длительного перерыва, связанного с рождением сына и временным переходом в реальной сектор.

В QUIK 7.14 и выше, при использовании индикаторов и скриптов QPILE / QLUA, метки могут отображаться на чёрном фоне. Решение проблемы не требует особых знаний программирования.
QUIK 7.14 Метки на чёрном фоне

1. Откройте файл скрипта текстовым редактором, например Блокнотом (у меня Notepad++).

2. Нажмите Ctrl+F и введите «TRANSPARENT_BACKGROUND», подтвердите поиск. Найдётся параметр, который отвечает за прозрачность меток. Он должен иметь значение «1».

ЕСЛИ НЕ УДАЛОСЬ НАЙТИ:

Нажмите Ctrl+F и введите «ADD_LABEL», подтвердите поиск. Найдётся функция, которая отвечает за вывод меток. Рядом должны быть параметры. Нужно добавить где-нибудь среди них строку: «_map = SET_VALUE(_map,«TRANSPARENT_BACKGROUND»,1)». В вашем коде массив _map, скорее всего, будет называться иначе.

QUIK 7.14 Метки на чёрном фоне

3. После изменений сохраните файл скрипта и загрузите его в QUIK снова.



( Читать дальше )
  • обсудить на форуме:
  • QUIK

график нефть в рублях для Квика

1. В папке с Квиком создаем директорию LuaIndicators.
2. В этой папке создаем файл br_rub.lua, туда записываем:

Settings = 
{
Name = "BR_RUB",
tag = "USDRUB",
tag1 = "BR",
line=
{
{Name = "brent_rub", Color = RGB(0, 0, 255), Type = 1,Width = 1}
}
}

function Init()
return 1
end

function OnCalculate(index)
local Out = (getCandlesByIndex(Settings.tag1, 0, index-1, 1)[0].close or 0) * (getCandlesByIndex(Settings.tag, 0, index-1, 1)[0].close or 0)
if Out > 0 then
return Out
else
return nil
end
end

1. В Квике создаем график с курсом доллара (USDRUB_TOM).
2. К графику добавляем график с брентом (BR-3.18).
3. Идем в настройки графика, в разделе Дополнительно указываем Идентификатор: BR -для графика с брентом, USDRUB- для графика с курсом.
4. Добавляем индикатор (выбираем из выпадающего списка BR_RUB).
график нефть в рублях для Квика
5. Уменьшаем ненужные поля. Если график не отобразился — даблкликаем на графике — жмем Применить:
график нефть в рублях для Квика



( Читать дальше )

Вопрос к программистам

Приветствую вас, опытные программисты!!

Я слышал, что скомпилированный код можно декомпилировать. Это правда? Вопрос относиться к языку QLUA

Автологин в QUIK (на Lua).

Узнал, что продается робот на Lua, «Автологин терминала QUIK».
Продается то, что есть в открытом виде на quik2dde.ru  

Выкладываю тут: 

-- quik_login.lua
-- Автологин терминала QUIK
-- © http://qui2dde.ru/
-- Версия: 2.0
-- для Quik от версии 7.11.1.5

local w32 = require("w32")

-- логин и пароль для терминала
QUIK_LOGIN = "Uxxxxxxx"
QUIK_PASSW = "yyyyy"

function FindLoginWindow()
  hLoginWnd = w32.FindWindow("", "Идентификация пользователя")
  if hLoginWnd == 0 then
    hLoginWnd = w32.FindWindow("", "User identification")
  end
  return hLoginWnd
end

timeout = 1000  -- таймаут между попытками поиска окна логина
is_run = true

function OnStop()
  timeout = 1
  is_run = false
end

function main()
  while is_run do
    sleep(timeout)

    if isConnected() == 0 then
  
      local hLoginWnd = FindLoginWindow()
      if hLoginWnd ~= 0 then

        local n1 = w32.FindWindowEx(hLoginWnd, 0, "", "")
        local n2 = w32.FindWindowEx(hLoginWnd, n1, "", "")
        local n3 = w32.FindWindowEx(hLoginWnd, n2, "", "")
        local n4 = w32.FindWindowEx(hLoginWnd, n3, "", "")

        w32.SetWindowText(n2, QUIK_LOGIN)
        w32.SetWindowText(n3, QUIK_PASSW)


        w32.SetFocus(n4)
        w32.PostMessage(n4, w32.BM_CLICK, 0, 0)

      end 
    end

  end
end
Благодарности, как понимаю, следует адресовать swerg  
  • обсудить на форуме:
  • QUIK

....все тэги
Регистрация
UPDONW