Постов с тегом "qlua": 180

qlua


скрипт для quik

скрипт для отслеживания бумаг по системе BWS:

--Массив с Тикерами, добавьте нужные тикеры
aTickerList = {"MSNG", "GAZP", "LKOH",
	    "SIBN", "GMKN","ROSN",
	    "SBER", "TATN", "NVTK",
	    "IRAO", "RSTI", "SBERP",
	    "PHOR", "SNGS", "TRNFP",
	    "VTBR", "FEES", "MVID",
	    "RASP", "MFON", "AFLT", 
	    "MAGN", "ALRS", "MTSS", "MOEX",
	    "RTKM", "MGNT", "NLMK", "SNGSP",
	    "CHMF", "MTLR", "HYDR", "MFON",
	    "RSTI", "PLZL", "BANEP", "POLY"
	    };

--Функция поиска цены
function fGetPrice(sTickerName, sNum)
	--Подключаемся к источнику данных
	local ds=CreateDataSource("TQBR", sTickerName, INTERVAL_D1);
	while (Error=="" or Error == nil) and ds:Size() ==0 do sleep(10) end;
	if Error ~="" and Error ~=nil then message("Error: "..Error, 1) end;
	local sSize=ds:Size();
	local sCurrentPrice=ds:O(sSize);
	
	local sLastWeekPrice7=0;
	local sLastWeekPrice14=0;

	--Берем цену закрытия свечи неделю назад
	sLastWeekPrice7=ds:C(sSize-4);
	--Берем цену закрытия свечи 2 недели назад
	sLastWeekPrice14=ds:C(sSize-8);

		--Вычисляем проценты
		local sPrc7=math.floor((100-((sLastWeekPrice7*100)/sCurrentPrice))*100)/100;
		local sPrc14=math.floor((100-((sLastWeekPrice14*100)/sCurrentPrice))*100)/100;

		--Заполняем таблицу значениями
		SetCell(t_id, sNum, 0, tostring(sTickerName));
   		SetCell(t_id, sNum, 1, tostring(sCurrentPrice),sCurrentPrice);
   		SetCell(t_id, sNum, 2, tostring(sLastWeekPrice7),sLastWeekPrice7);
   		SetCell(t_id, sNum, 3, tostring(sLastWeekPrice14),sLastWeekPrice14);
   		SetCell(t_id, sNum, 4, tostring(sPrc7),sPrc7);
		SetCell(t_id, sNum, 5, tostring(sPrc14),sPrc14);

		--Текущая цена больше цены прошлой недели - раскрашиваем зеленым
		if sCurrentPrice>sLastWeekPrice7 then 
			fGreen(sNum);
		end;
		--Текущая цена меньше цены прошлой недели - раскрашиваем красным
		if sCurrentPrice<sLastWeekPrice7 then
			fRed(sNum);
	   	end;
		--Текущая цена больше цены прошлой недели и цена прошлой недели больше цены позапрошлой недели
		--раскрашиваем желтым
		if sCurrentPrice>sLastWeekPrice7 and sLastWeekPrice7>sLastWeekPrice14  then 
			fYellow(sNum);
	   	end;
end;

--- Функция создает таблицу
function CreateTable()
	-- Получает доступный id для создания
	t_id = AllocTable();	
	-- Добавляет 6 колонок
 	AddColumn(t_id, 0, "Тикер", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 1, "Сегодня", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 2, "Неделя", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 3, "2 Недели", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 4, "Неделя (%)", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 5, "2 Недели (%)", true, QTABLE_INT_TYPE, 15);
	
	-- Создаем
	t = CreateWindow(t_id);
	-- Даем заголовок	
	SetWindowCaption(t_id, "7 Days");

   -- Добавляем строки
      for k,v in pairs(aTickerList) do
		InsertRow(t_id, k);
      end;
end;

--- Функции раскрашивают ячейки таблицы
function fRed(col)
	SetColor(t_id, col, -1, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0));
end;
function fGreen(col)
	SetColor(t_id, col, -1, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0));
end;
function fYellow(col)
	SetColor(t_id, col, -1, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0));
end;

--Основная функция
function main()
	-- Создаем таблицу
 	CreateTable();

 	--Пробегаемся по массиву тикеров
	for k,v in pairs(aTickerList) do
	  fGetPrice(v, k);
	end;

end;
как выглядит в квике:

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

Lua индикатор тикера ищу.

Доброго времени всем.
Я ищу Lua индикатор в Quik, который пишет на графике в левом верхнем углу название инструмента. Однажды наткнулся на него в интернете, счёл что бесполезная вещь и не стал его сохранять. А вот теперь понадобился и самому, но не могу вспомнить где я его видел. Может он есть у кого или кто-нить знает с какого ресурса его можно качнуть? Буду очень признателен в помощи его отыскать.

Как обойтись без склейки фьючей при тестировании и оптимизации торговой стратегии в Wealth-lab

Ответ на комментарий Дмитрия Власова «А как процесс «Перекладки» организован? График эквити в итоге один получается?» в посте «Как обойтись без склейки фьючей при тестировании и оптимизации торговой стратегии в ТСЛаб»
 
 

При тестировании и оптимизации в Wealth-lab 6.9 я раньше использовал склеенный фьючерс.
В коде прописывал даты выхода из всех позиций и даты, когда уже можно было входить (после гепа склейки и нормализации индикаторов).

Сейчас я использую портфель фьючерсов и влд отлично с этим справляется (он может тестировать и оптимизировать портфель инструментов).

Начнем с тиккеров. Нужно было сделать так, чтобы они шли по порядку по алфавиту.
Поэтому пришлось заняться переименовкой: самый первый SiH8 (2008г. выпуска) переименован в SI11, далее SiM8 (2008) ->SI12 ……  SiH9 (2019) ->SI55.



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

Захват откатов скольжением.

    • 17 декабря 2018, 13:09
    • |
    • XXM
  • Еще

          В программе Lbot3D появилась реализация вычисления скользящего экстремума в конкретной стратегии при наличии позиции. Слово «конкретной» звучит потому, что этот самый экстремум можно использовать в других стратегиях из портфеля стратегий. Согласен, это нужно не всем. Скорее так: мало кому он нужен. Тем не менее, продолжу.

          Допустим мы придумали стратегию на некотором активе, рассчитанную на тренд:
Покупаем на четверть портфеля. Если цена пошла против нас (пусть на 1%)- стопимся, но если в нашу сторону +1%, то в предположении, что мы тренде, выставим лимитированную заявку на покупку второй четверти на 0.5% ниже достигнутого экстремума: откат вероятен, и после того, как на откате вытряхнут часть пассажиров, (самых пугливых, самых недостойных :)), наш портфель зацепит еще несколько лотов и едем дальше, «на север». Но если первая четверть бумаг размещена в нашем портфеле на «долгосрок», то вторая четверть будет сразу же выставлена на продажу с профитом, например, в 1%.



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

Онлайн-курс: Портфель роботов на 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 месяца поддержки по скайп.



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

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

    • 25 октября 2018, 19:48
    • |
    • gardist
  • Еще
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
Всячески пытался найти хозяина этого видео но всё безрезультатно.
Может кто знает что это за индикатор (его название) и где его можно найти?
Я буду очень признателен, если вы им поделитесь.


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

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






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

    • 09 апреля 2018, 08:32
    • |
    • XXM
  • Еще

Мацуо Басё



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

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



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

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

    • 07 апреля 2018, 17:06
    • |
    • nicknh
  • Еще

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

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

yadi.sk/d/M2x1Y23V3NLFqT

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

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



....все тэги
UPDONW
Новый дизайн