Избранное трейдера Ray Intraday
Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих smart-lab.ru/vopros/703796.php
В Quik'е нельзя только предсказывать будущее.
Индикатор Breakout рисует на графике котировок точки пробоя для экстремумов заданного числа Num баров. Для последнего интервала Num баров показывает уровни экстремумов.
Значение Num и признак Print печати сообщений на пробои можно поменять через параметры индикатора.
Чтобы в Quik'е использовать этот индикатор, поместите нижеследующий код в текстовый файл Breakout.lua, а сам этот файл в подкаталог LuaIndicators в том каталоге Quik'а, где лежит файл info.exe.
Чтобы метки пробоев были виднее, индикатор следует поместить после графика котировок. Эти метки позволят на глазок определить прибыльность пробойной стратегии.
-- Ростислав Дмитриевич Кудряшов, СПб, 2021 -- Индикатор Breakout для Quik: min и max Num баров Settings = { Name = "_Breakout" ,line = { {Name = "Min" ,Color = RGB (255,0,0) ,Type = TYPE_LINE ,Width = 1} ,{Name = "Max" ,Color = RGB (0,255,0) ,Type = TYPE_LINE ,Width = 1} ,{Name = "Lwr" ,Color = RGB (255,255,0) -- Жёлтый ,Type = TYPE_TRIANGLE_DOWN ,Width = 1} ,{Name = "Upr" ,Color = RGB (0,128,255) -- Тёмно-Голубой ,Type = TYPE_TRIANGLE_UP ,Width = 1} } ,Num = 10 ,Print = 1 -- или 0 } Scan = 0 -- При загрузке Quik сканирует 1 раз function Init() return #Settings.line end function OnChangeSettings() Scan = 0 end function OnCalculate (index) local n, mn, mx, ini, fin, upr, lwr, printFlag n = Settings.Num if n < 1 or index <= n then if index == 1 then Scan = Scan + 1 SetRangeValue (3, 1, Size(), nil) SetRangeValue (4, 1, Size(), nil) end return nil end mn = math.huge mx = -math.huge ini = index - n fin = index - 1 for i = ini, fin do mn = math.min (mn, L(i) or mn) mx = math.max (mx, H(i) or mx) end printFlag = Settings.Print > 0 and index == Size() and Scan > 1 lwr = GetValue (index, 3) upr = GetValue (index, 4) if not lwr and L(index) and L(index) < mn then if printFlag then message (Settings.Name ..": Dn ".. mn) end lwr = mn end if not upr and H(index) and H(index) > mx then if printFlag then message (Settings.Name ..": Up ".. mx) end upr = mx end if index == Size() then SetValue (ini-1, 1, nil) SetValue (ini-1, 2, nil) SetRangeValue (1, ini, fin, mn) SetRangeValue (2, ini, fin, mx) else mn, mx = nil end return mn, mx, lwr, upr end -- OnCalculate()
Нашел интересный алгоритм.
https://www.youtube.com/watch?v=inJ8zuSoJTM
Показалась Грааль.
Написал робота под квик. Счастье не наступило.
Гонял на сбере, сишки, Евро-рубль.
Низкая доходность (меньше 1% в день) и все время разворачивается на откатах, из-за чего пытается задействовать большую часть депозита. В основном 2-4 разворота за цикл, но однажды 15 раз крутанулся, торговлю я ему конечно на 6 развороте отключил (в робота зашито).
Поменял алгоритм, сделал, чтоб торговал по тренду без начальной проверке, на втором цикле, и далее. Стало по лучше, но не существенно, необходимых 2% не добрал.
Если бы не попытки задействовать весь депозит, сгодился бы для разнообразия. А так блокирует пол депозита, а доходность маленькая.
Народ, если есть у кого интересные алгоритмы пиши, обкатаем.
Код робота: LUA, под 8 квик
Здесь только основной алгоритм, в нем задействованы библиотеке работы с окном, отчетность, общение с биржей, …
PORTFOLIO_EX 5ka;
DESCRIPTION 5ka;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
'========= НАСТРОЙКИ
INSTRUMENT=«SRM1»
ACCOUNT=«SPBFUT....» ' ПРОПИСЫВАЕМ АККАУНТ НА ФОРТС
' *********************
'========= ПЕРЕМЕННЫЕ
'========= ДАТА И ВРЕМЯ СЕРВЕРНОЕ
SERVERTIME=GET_INFO_PARAM(«SERVERTIME»)
SERVERDATE=GET_INFO_PARAM(«TRADEDATE»)
TIMESERV=SUBSTR(SERVERTIME,0,2)&SUBSTR(SERVERTIME,3,2)&SUBSTR(SERVERTIME,6,7)
HOUR=SUBSTR(TIMESERV,0,2)+0
MIN=SUBSTR(TIMESERV,2,2)+0
SEC=SUBSTR(TIMESERV,4,2)+0
TIME=TIMESERV+0
DATE=SUBSTR(SERVERDATE,6,4)&SUBSTR(SERVERDATE,3,2)&SUBSTR(SERVERDATE,0,2)
TRID=TIME&DATE
TRID=TRID+0
'========= ПРОВЕРКА СОЕДИНЕНИЯ С СЕРВЕРОМ
IF IS_CONNECTED()<>1
RETURN
END IF
OPEN=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«OPEN»)+0
HIGH=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«HIGH»)+0
LOW=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«LOW»)+0
VOLA=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«HIGH»)+0-GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«LOW»)
При определении состава инвестиционного портфеля я опирался на принципыДиверсификации, Постоянного дохода и Апсайда или потенциала роста цены актива. Давайте рассмотрим их подробнее.
📊Диверсификация — инвестирование средств в разные активы с целью снижения рисков. При этом в идеале снижение риска должно минимально влиять на доходность портфеля. В нашем случае это означает, что мы возьмём в портфель акции, облигации, фонды, а также будем принимать участие в IPO. Будем приобретать, как Российские, так и зарубежные компании.
💰Постоянный доход — регулярное получение денежных средств. В нашем портфеле это будут обеспечивать купонные облигации и дивидендные акции.
📈Апсайд — потенциал роста цены актива. Этот потенциал мы будем определять пользуясь специальным чек-листом(он же ✴️ Рейтинг БА) для оценки актива и средствами технического(ТА) и фундаментального анализа(ФА). ✴️ Рейтинг БА, ТА и ФА разберём подробно, но позднее.
Начну с того, что недавно я чуть не совершил серьезную ошибку. Мне как и многим, надоел «пресный» внешний вид Quik-а, и других торговых терминалов и захотелось «что-то свое», визуально красивое, интуитивно понятное, ну вообщем Вы поняли, я захотел «изобрести свой велосипед». Мне повезло, хватило буквально пары недель, для понимания масштаба задачи.
Вспомнил случай из жизни: примерно два года назад у меня «не случился» заказчик на разработку программного обеспечения. Заказчик сетовал на то, что кому бы он не обращался, все отказываются. И он открывает картинку стандартного графика цены и объема в Квике и со словами «вообщем мне надо также, только вот здесь и здесь надо добавить парочку штрихов» начинает на ней рисовать. Я ему начинаю объяснять, что стандартными средствами квика эту задачу не реализовать, а он в ответ «Вот мне именно так все и говорят! А я Вам показываю, что в квике все уже сделано, осталось чуть-чуть доделать вот здесь и здесь...»
На самом деле в этой идее больше вопросов, чем ответов, точнее чем больше ты вникаешь в задачу, тем больше вопросов возникает. Обычный пользователь как должное воспринимает что квик загружается очень быстро (например в сравнении с «Альфа Директ»), хранит и отражает данные за требуемый период, имеет относительно гибкий внутренний скриптовый язык ну и т.п.
Всем привет. В своих прошлых постах я писал, что увлекся анализом обезличенных сделок.
Вот что описывал:
https://smart-lab.ru/blog/583818.php
https://smart-lab.ru/blog/584792.php
В комментариях и личных сообщениях меня активно просили разработать аналог «Прилипалы» для Квика (Quik). Ну не прошло и полгода, как сделал. Забрать можно вот отсюда:
https://кбс.онлайн/soft.html
На странице есть бесплатная версия, полностью аналогичная таблице в Excel, пользуйтесь на здоровье.
Но… ну или как говорил Джобс «Ах да, забыл сказать… » — в своих поисках я ушел дальше, а именно:
1) Реализовал индикацию изменения скорости сделок. Как сделал и зачем? Как: считаю каждую минут число сделок, через минуту с момента запуска скрипта начинаю делить общее число сделок на количество прошедших минут. Так получаем среднюю скорость. Чем больше прошло времени, тем объективнее средняя скорость. Ну а резкое изменение скорости фиксируется когда текущая скорость вдвое выше средней. Зачем: на момент осуществления больших сделок резко вырастает скорость. Почему? Представьте «боковое» движение: цена меняется не сильно, кто-то «немного» покупает, кто-то продает. И тут приходят «ребята с большими деньгами» и выкупают большой объем акций, тем самым закрывая большой объем выставленных заявок. Поэтому и скорость резко увеличивается.
2) Подгружаю весь архив обезличенных сделок с начала торгового дня. Предидущая версия Прилипалы (та которая в Excel-е) — работала в режиме реального времени.
3) Начал экспериментировать с Телеграммом — создал канал kbs.online (