Постов с тегом "Lua": 336

Lua


10 этапов разработки торгового робота под QUIK и TSLab от Robot Scalper

Торговый робот для QUIK на LUA

К нам поступил запрос на создание многопараметрического робота, с кучей условий торговой логики и в конце с припиской: «За работу я готов оплатить 800 рублей». Как у заказчика получилась такая сумма осталось не ясно. Возможно, всё тривиально, и это просто все его доступные средства, которые остались от торговли по интуиции. А возможно человек просто не понимает какую работу нужно проделать и из чего образуется цена на торговых роботов. Но это не страшно. Мы как раз сейчас и постараемся разобраться в этом.

Итак, чтобы разработать робота нужно выполнить определенные этапы. Рассмотрим их.
  1. Нужно определиться с торговой стратегией и формализовать её (точки входа, стоп-лоссы, тейк-профиты, фильтры и т.п.);
  2. Желательно создать прототип данного робота;
  3. Проверить работоспособность стратегии и прототипа на исторических данных;
  4. Желательно провести оптимизацию стратегии и найти оптимальные значения параметров;
  5. Нужно провести анализ сделок и добавить общие фильтры на ситуации в которых робот часто показывает убытки. Главное, нельзя примерять переоптимизацию! Иначе в реальной торговли результаты будут сильно отличаться! После этого возвращаемся к пункту 4. И работаем до тех пор пока стратегия не будет универсальной или пока мы её не забракуем как непригодную. Так тоже бывает, и не редко.


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

Загрузка процессора на 100% от запущенного скрипта lua. Что делать?...

Коллеги, Всем добрый день!

Раньше не приходилось работать с lua.  Но здесь накатал небольшой скрипт в рамках которого происходит запросы текущей цены инструмента и запись её файл и столкнулся с проблемами производительности.
До запуска скрипта  доля нагрузки Quik-a на процессор составляла порядка 2%.
После запуска скрипта нагрузка на процессор увеличилась до 30%.   На рабочем компьютере все работает, но вот на виртуалке, где производительность ниже, всё виснет.
Ребят кто сталкивался с подобным и возможно ли оптимизация данной ситуации?

Скрипт скрипта прилагаю, но не думаю, что в нём проблема:

local stopped=false
local FileNameRead=getScriptPath().."\\poz.txt"
local FileNameWrite=getScriptPath().."\\data.txt"
local FileRead
local ID
local code
FileRead=io.open(FileNameRead,«r»)
local Read
code,ID=FileRead:read(4,"*n")
FileRead:close()
--message(code)
local ID_back=ID
local direct

function OnStop()
stopped=true
return 5000
end


function main()

local TableSI=AllocTable()
AddColumn(TableSI,1,«Дата»,true,QTABLE_DATE_TYPE,10)
AddColumn(TableSI,2,«Время»,true,QTABLE_TIME_TYPE,10)
AddColumn(TableSI,3,«Код»,true,QTABLE_STRING_TYPE,10)
AddColumn(TableSI,4,«Цена»,true,QTABLE_INT_TYPE,10)
AddColumn(TableSI,5,«Позиция»,true,QTABLE_INT_TYPE,10)



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

Изучаем QLua: Ассиметричные фракталы

Добрый.
В одном из видео автор рассказывал об уровнях и использовал индикатор фрактал. Но для того чтобы потенциальные точки находились быстрее, он использовал ассиметричный показатель, например, 4 слева и 3 справа.
Такой индикатор можно построить с помощью Lua.
Параметры: количество свечей слева и справа
Отображение в виде треугольников. Один треугольник было плохо видно, я добавил несколько )
Второй раз пошло легче. Работаем дальше

Исходник (версия «лесенкой»)

скачать

Версия, реализующая логику схожую с типовым индикатором

скачать

  • обсудить на форуме:
  • Quik Lua

Изучаем QLua: Относительный ATR

Доброго дня

Решил попробовать написать некоторые индикаторы для Quik.
Была прочитана книга по языку Роберту Иерузалимски «Программирование на языке Lua» и Документация по языку LUA в QUIK и примеры.
Надо заметить, что язык мне понравился. В нем так мало и так много одновременно!

Первый блин индикатор — что-то похожее на Волатильность Чайкина, только попроще.
Идея: хочется изучить циклы волатильности. За основу берем ATR. Но если рассматривать большие интервалы, то цена может гулять в больших пределах, соответственно приводим ее к текущей цене.
Сделал первый вариант, получил ошибки выполнения — надо добавить обработку ошибок.
Следующий вариант заработал, я посмотрел — очень большой разброс, надо добавить сглаживание. 
Добавил сглаживание, разброс стал поменьше, но все равно немного не то. Добавил отдельное сглаживание для диапазона и для цены (предполагая, что цена меняется медленнее чем периоды волатильности). Уже лучше.
А что если брать не цену закрытия, а например среднюю? Добавил, но оказалось что влияние мизерное.
В общем, уже можно поиграться. 
Исходник

Продолжаю эксперименты. 
  • обсудить на форуме:
  • Quik Lua

Робот Богатырь 2.0

    • 18 января 2019, 01:09
    • |
    • Albus
  • Еще
Доработал робота Богатыря, описанного в этом посте: https://smart-lab.ru/blog/458269.php
Описание.
Робот анализирует ленту всех сделок, ищет в ней крупные сделки и накладывает их на график. Он рисует метки двух видов.
1. Обычные одинарные крупные сделки.
Зелёные метки — покупки, красные — продажи. Если навести на птичку курсор, то всплывёт надпись как на скриншоте с указанием цены и объёма, в данном случае по 202 рубля было куплено 8000 лотов Сбера.
Робот Богатырь 2.0
Метка рисуется СПРАВА от свечи, на которой была обнаружена большая сделка. Я выбрал в качестве метки знак <. Он похож на указатель направления куда смотреть.
2. Горсти. Горсть — это когда крупный игрок ударяет большим объёмом по стакану. В результате одна его заявка исполняется через множество мелких сделок. Признак горсти — у всех маленьких сделок будет одинаковое время в микросекундах как на скриншоте. По этому критерию робот определяет «горсть».

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

Торговый робот на Lua для QUIK.

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

4 года и 4 месяца прошло с выхода поста «Торговый робот на LUA для QUIK» (https://smart-lab.ru/blog/200767.php) про конструктор Lbot. За это время он повзрослел, лишился графического интерфейса и… превратился в младшего брата для Lbot3D. И если раньше для Lbot была пробная версия (с одним инструментом и одним лотом), то теперь, фактически, сам превратился в пробную версию для Lbot3D и, с этого дня, предоставляется в свободное пользование с полным функционалом:

Торговый робот на Lua для QUIK.

Скачать Lbot180.zip можно тут: drive.google.com/open?id=1DL9jGEBm2Uhk89PcQdlK-ObaOe2zihnx
INI-файл написан для демо-QUIK на 3 инструмента — Сбербанк, Газпром и Лукойл. Стратегия на Газпроме — безиндикаторная, на Сбербанке — на скользящих средних, на Лукойле — на пересечениях MACD.

encoding = "UTF-8"
FREQUENCY = 1000
account = NL0011100043, 10110
PositionSize = 300000
xy = 421, 0, 859, 118
;-------------------------------------------------------------------------------
[GAZP]
Security = GAZP, QJSIM, Gazp_moex
WorkSize = 3		//  рабочий объем, в штуках;
LossLimit = 100		// ограничение на убыток по стратегии
OpenSlippage = 10	// допустимое проскальзывание на сделке, в количестве минимальных шагов цены;
OpenLong =  {Close, 1} < {High, 2}	// цена 'close' предыдущей 'полной' свечи превысила 'high' предшествующего ей бара;
OpenShort = {Close, 1} > {Low, 5-2}	// цена 'close' предыдущей 'полной' свечи принизила 'low' 5-2 баров;
StopLoss = 2
TakeProfit = 3, 1, 1
EOD = 18:29:00	//закрытия позиции в указанное время.
autoBot = Y
[SBER]
Security = SBER, QJSIM, Sber_moex
WorkSize = 10
LossLimit = 100
OpenSlippage = 10
OpenLong	= {Ema1} > {Ema2}
CloseLong	= {Ema1} < {Ema2}
OpenShort	= {Ema1} < {Ema2}
CloseShort	= {Ema1} > {Ema2}
autoBot = Y
[LKOH]
WorkSize = 2
Security = LKOH, QJSIM, Lkoh_moex
LossLimit = 225
OpenSlippage = 10
OpenLong	= cross(macd_Lkoh.0, macd_Lkoh.1)
OpenShort	= cross(macd_Lkoh.1, macd_Lkoh.0)
;OpenLong =  {Close, 1} < {Low, 5-2}
;OpenShort = {Close, 1} > {High, 2}
StopLoss = 30
TakeProfit = 50, 10, 10
autoBot = Y


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

Подскажите, люди добрые

Достаточно-ли будет книг

Программирование на языке Lua
Автор:Роберту Иерузалимски

Чистый код: создание, анализ и рефакторинг
Автор:Роберт Мартин


чтобы со временем писать программки, помощников и роботов для себя под QUIK? Со временем  и для себя?

А то коллективное макание Смарт-Лабом в помои кбробота наводит на определённые мысли… «Надо? Сделай сам!» ©

Fn044.lua, версия 2.1

    • 29 октября 2018, 16:07
    • |
    • XXM
  • Еще

В своей торговле применяю комбинации рыночных и лимитированных заявок, (методику описывал ранее, "Настоящая торговая стратегия."  и "US500: Объемы больше, спреды уже!" ). Временами количество одновременно работающих стратегий зашкаливало за сотню и на некоторые из них не хватало денег под выставление заявок, они отключались, иногда ломая логику работы связанных с ней стратегий. В QUIK в таблице «Состояние счета» считается цифра — «Свободно» — свободные средства под заявки, но сходу вытащить ее из Lua у меня не получилось. И пришлось вписать расчет этой величины в робота.
Сегодня предлагаю вашему вниманию доработанный скрипт Fn044.lua (https://yadi.sk/d/O-6JzZdXkOxyow)
Fn044.lua, версия 2.1

в котором реализован расчет свободных средств для заявок на ФОРТС с учетом имеющихся контрактов и заявок.
Один в один вывести не получилось, как смог.
As is, и все такое!

  • обсудить на форуме:
  • Quik Lua

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

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


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

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






fn044.lua

    • 09 октября 2018, 15:33
    • |
    • XXM
  • Еще
fn044.lua — скрипт для расчета стоимости фьючерсных контрактов в портфеле относительно депозита.
Скачать: https://yadi.sk/d/e7XRt3CQ2v7Miw

fn044.lua

Файл настроек:
-- fn044set.lua расчет стоимости фьючерсных контрактов в портфеле относительно депозита
-- © smart-lab.ru/profile/xxm 08.10.2018

-- торговый счет (из таблицы «Позиции по клиентским счетам (фьючерсы)»)
account = 'SPBFUT0003f'

--положение окна с таблицей. Левый верхний угол в координаты left,top и размеры в width и height.
xy = {} 
xy.left, xy.top, xy.width,xy.height = 0, 232, 722, nil

--ширина столбцов таблицы
t_width = {12, 6, 10, 8, 10, 10, 9, 7, 6, 11, 10, 11}

-- месяц и год исполнения, 2 символа, https://www.moex.com/s205
MonthYear = "Z8"
-- код базового актива, 2 символа
-- если 4 символа, то переменная "MonthYear" не учитывается
SecCodes={
	{"MM"}, --контракт на индекс МосБиржи
	{"Si"}, --руб/доллар FORTS
	{"SR"}, --Sber FORTS
	{"LK"}, --контракт на Лукойл
	{"GZ"}, --контракт на Газпром
	{"BRX8"}, --контракт на нефть Брент, месяц и год - "X8"
	{"ED"}, --контракт на ED
	{"RN"}, --контракт на Роснефть
	{"GD"}, -- Gold
	}

--Если xy.height == nil, то вычислить ее.
--Для разных мониторов коэффициенты (17, 45 и 868 - подобраны эмпирически) будут разными.
local height = xy.height or ((#SecCodes + 1)*17 + 45)
if height > 868 then height = 868 end
xy.height = height


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

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