qlua


QUIKSharp 1.0 feedback

Товарищи, всем привет! 

Кажется в течение последнего года не было серьезных вопросов к функционалу QUIKSharp, и мы собираемся наконец объявить его стабильным (версия 1.0, была бэтой очень долго) и доступным через NuGet, без необходимости клонировать проект с ГитХаба и строить его самим.

Очень важно, что цель проекта: «повторить API QLUA в C# максимально точно и качественно». Ничего больше, но не меньше.

Тут обсуждение: https://github.com/finsight/QUIKSharp/issues/195

Кто уже пользуется библиотекой и кого всё устраивает, просто поставьте +1 на ГитХабе (и может оставьте пожелания для версии 2.0). Кто пользуется, но испытывает неудобства, опишите их пожалуйста по ссылке.

Кто видит этот проект впервые и умеет прогать в C# — попробуйте, пожалуйста! Там есть пример с графической оболочкой и много отвеченных вопросов по тэгу question: https://github.com/finsight/QUIKSharp/labels/question, плюс readme на русском: 

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

Профиль рынка QUIK

А существует ли вообще нормальный, добротный профиль рынка который отображается на графике в Quik-e?
С нормальными адекватными настройками, так что бы можно было регулировать глубину профиля.?
Помогите найти если таковой действительно существует.
  • обсудить на форуме:
  • QUIK

скрипт для 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.



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

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

          В программе 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 месяца поддержки по скайп.



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

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

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

....все тэги
UPDONW