Новый скринер для SD
Сегодня почитав инструкции языка для Strategy Desk решил, что вполне способен написать скринер под свои нужды.
Поясню идею. В Дейтрейдере нас учат определенным образом отбирать акции на домашку. Есть набор четких правил и критериев для стаков. Как выясняется, SD позволяет большую часть механической работы автоматизировать.
Формула, которую я сегодня оформил, позволяет не лазить вообще в финвиз и на сайт дейтредера для отбора акций.
Я предлагаю всем, кто торгует по той же школе, да и остальным, кому критерии фильтра подходят, проверить работу кода, если будут недостатки, вместе их устранить.
Итак начнем: код я достаточно подробно закомментировал, чтоб было понятно где что и как работает, и можно было корректировать по своим потребностям критерии.
Код следующий:
{Фильтр для домашки. цена от 8 до 100 + ATR>0.5 + текущий объем >500k +средний объем >300k +тренд по дневке за три дня +Изменение цены > 1}
(MovingAverage[MA,High,65,1,D]-MovingAverage[MA,Low,65,1,D] >0.5) AND { ATR за 65 дней > 0.5 }
(Bar[Volume,D,0] > 500000) AND { Объем последнего дня больше 500к }
(MovingAverage[MA,Volume,65,0,D]>300000) AND {средний объем больше 300к}
(Bar[Close,D] > 7) AND (Bar[Close,D] < 100) AND { цена от 7 до 100 }
(Bar[High,D] - Bar[Low,D] > 1) AND {изменение цены последнего бара больше 1}
{лонговая часть тренда}
(((Bar[Close,D] > Bar[Open,D]) AND
(Bar[Close,D,1] > Bar[Open,D,1]) AND
(Bar[Close,D,2] > Bar[Open,D,2]) AND
(Bar[Open,D] > Bar[Open,D,1]) AND
(Bar[Open,D,1] > Bar[Open,D,2])) OR
{шортовая часть тренда}
((Bar[Close,D] < Bar[Open,D]) AND {то же самое с днями только наоборот.}
(Bar[Close,D,1] < Bar[Open,D,1]) AND
(Bar[Close,D,2] < Bar[Open,D,2]) AND
(Bar[Open,D] < Bar[Open,D,1]) AND
(Bar[Open,D,1] < Bar[Open,D,2])))
Код однозначно без ошибок, потому что я его скопировал с терминала. Если у вас после набора или копирования не работает, то ищите причину не в этом.
Фильтр ищет акции, в которых последние три бара либо идут вверх, либо вниз, т.е. кто то явно продает или покупает акцию. Цена акций фильтруется от 7 до 100 долларов, ATR за 65 дней больше 0,5, объем протогованный в последний день больше 500к, и средний объем больше 300к и изменение цены акции в предыдущий день было больше чем 1 доллар.
После этого нам останется скопировать из скринера получившийся список акций на лист с домашкой, пробежаться по нему отсеяв уже визуально акции с некрасивыми пятиминутками.
Получается, что не придется больше лазать по сайтам и собирать каждый раз акции для домашки. Они нам выскочат при включении SD. По моему дак автоматизация. По моему дак удобно.
Теперь о том, как правильно его забить в программу:
1. В главном окне SD идем в меню File – New – Screener и в открывшемся окошке в поле Formula копируем код так, как он выложен у меня. Комментарии можно оставить, они значения не играют для работы программы. Они только для людей написаны.
2.1 Я предварительно сходил на финвиз и взял оттуда акции по фильтрам “только NYSE” и “stocks only”(ссылка). Этот список меняться не будет (пока на рынке не появятся новые стаки) и таким образом мы получаем еще два критерия в скринере, что еще сильнее облегчает задачу.
2.2 В поле Symbols копируем полученный (или свой) список акций. По нему мы будем фильтровать в скринере.
Должно получиться примерно вот так:
Если что-то не будет получаться, пишите, я буду обновлять пост, исправляя ошибки.
И еще просьба. Если будут замечены неточности или будете корректировки вносить, отпишитесь пожалуйста в комментариях, чтоб и другим полезно было.
P.S.: У меня сегодня выскочило около 70 акций в список. Сначала подумал, что маловато как то, но поразмыслив, получается, что вполне нормальное количество, учитывая то, что мы выбираем акции, которые три дня шли в одну сторону.
Вообщем жду результатов того, что мои труды не пропали и вам это пригодилось )))
26 ответов Оставить комментарий
а почему 500к нас же вроде учили выше 300к объем
Только NYSE, остальные биржи исключить;
Только американские компании, ADR и фонды исключить;
ATR больше 50 центов;
Средний объем более 300 тысяч;
Цена более $7.
в последний раз вова говорил, что можно смотреть чтоб вместо среднего объема в 300к, можно смотреть чтоб было объем последнего дня больше 500к.
по поводу “только nyse и только акции”, то их нельзя отфильтровать в SD, но этот список постоянный и поэтому их можно заранее забить в фильтр (я написал об этом, и даже ссылку дал).
если надо средний объем больше 300к, то это только одну строчку исправить. я добавлю в блоге запись.
и вот что хотел спросит он учитывает только три последних три зеленых свечек на дневке а если там 7 или 10 дней подряд зеленых будет он находит или нет?
ну если будет 7 подряд, то последние три будут подходить под критерий, и акция вылезет все равно по фильтру. так то можно добавить чтоб искала 7 подряд баров. это не сложно. но тогда количество акций сильно уменьшиться
нет. я имел веду что если в стаке 7 или 10 дней подряд рост то попадет в эту формулу или нет
ну я тебя правильно значит понял. и ответил, что все попадет
главное, чтоб другие критерии тоже попадали.
поправил запись. добавил в фильтр плюс ко всему еще и средний объем на 300к. получается что будет фильтроваться и по среднему объему, и по объему последнего дня. не много ли это уже?? хм…
Игорь, это не годится для домашки !!! во первых не нужно АТР на домашке резать, во вторых если акция стреляет сильно в 1 день а в предыдущий она падала то она тоже на домашку попадает, в третьих не нужно ставить средний объём 300К средний, можно хорошие бумаги провтыкать. Мораль сей басни такова, нужно тратить время просматривать побольше акций !!!
как так? ты же сам учил все эти фильтры использовать при отборе акций на домашку? АТР больше 0,5 + акция должна два-три дня идти в одну сторону + на финвизе стоит фильтрация на средний объем в 300к ??
ладно, в скайпе напишу сегодня.
Добрый день!
Сегодня включил Strategy Desk и обнаружил, что скринер с этой формулой перестал работать. Какой то символ в формуле требуется исправить. Интересно, как у вас – работает или нет?Если можно, помогите, пожалуйста, исправить проблему.
Перестал работать потому что фильтровал не во время торгов. Изменить 8-ую строку кода который сверху, добавить 0. (Bar[High,D,0] — Bar[Low,D,0] > 1) AND. Большое спс автору за сринер – молодчага. Но Владимир тоже прав так, что напрявляем усилия в нужное русло)))
мда хрень какая то сначала перед торгами не захотел принимать формулу сказал синтаксическая ошибка, добавил 0 началась фильтрация, во время торгов вообще скринер не работал. А сей час фильтрует, как без 0 (не пишет ошибку), так и с ним. Вообщем жесть…ручками надежней.
не. там работает все вполне ничего. просто если 0 ставить, то это исключительно для офлайна. потому что 0 – это значит, что последний бар учитывается. а чтоб во время сессии работало, то надо 1 ставить, потому как последний бар не закончен еще и его учитывать нельзя никак.
Сорри… Как ни странно, но проблема со скринером решилась сама собой.Удачи!
Добрый день.
Подскажите (можно ссылку), как из Финвиза извлечь список тикеров для скринера.
Ответ можно на скайп или E-mail.
Спасибо, Александр.
Скайп: alex2511k
Разобрался.
ну я на почту ж написал вчера )
Я так понимаю ATR не меньше 0,5?
Я не торгую через Стратеджи Деск, хотел уточнить если есть подобный аналог для Тос-а?
исправил, спасибо
в разделе “Скачать” куча аналогов.
торопишься вопросы задавать, все выложено на блюдечке..
Да, я пока второй день на блоге тут
пытаюсь все по диагонали охватить…
Посмотрел сканеры, там есть но по отдельности условия…
Решил собрать все в одно. Получилось вроде довольно полезная штука, выдает не много акций но довольно интересных! Хотя если условия изменять – можно получить и больше акций… Вот выставляю тут код, может кому пригодится:
==================================
#ATR***Выдает акции с указанным в настройках ATR за 65 дней + тренд за 3 дня + проверка вчерашнего обьема + средний обьем за период + движение цены за вчера. Период и все условия можно изменять в первой части кода где комментарии.
def period = 14; #указать период дней за которых считать средний обьем и ATR
def iATR = 0.5; #указать минимальный ATR
def X = 500000; #минимальный объем за вчера
def aVol = 300000; #минимальный средний объем
def N = 1.00; #минимальное движение за вчера в долларах
def bATR = if (round((Average(high, period)-Average(low, period)),2)>=iATR) then 1 else 0;
def b2DayTrend = if
((high[1]>=high[2]) and (open[2]<=close[2]) and (open[1]<=close[1]) and (open=high[1])) or
((low[1]=close) and (open[1]>=close[1]) and (open[2]>=close[2]) and (low=X and Average(volume[0],period)>=aVol and absvalue (close[0] – open[0]) >= N;
Коряво получился прошлый ответ, вот тут полный код:
#ATR***Выдает акции с указанным в настройках ATR за 65 дней + тренд за 3 дня + проверка вчерашнего обьема + средний обьем за период + движение цены за вчера. Период и все условия можно изменять в первой части кода где комментарии.
def period = 14; #указать период дней за которых считать средний обьем и ATR
def iATR = 0.5; #указать минимальный ATR
def X = 500000; #минимальный объем за вчера
def aVol = 300000; #минимальный средний объем
def N = 1.00; #минимальное движение за вчера в долларах
def bATR = if (round((Average(high, period)-Average(low, period)),2)>=iATR) then 1 else 0;
def b2DayTrend = if
((high[1]>=high[2]) and (open[2]<=close[2]) and (open[1]<=close[1]) and (open=high[1])) or
((low[1]=close) and (open[1]>=close[1]) and (open[2]>=close[2]) and (low=X and Average(volume[0],period)>=aVol and absvalue (close[0] - open[0]) >= N;
Мдам… не помещается никак…
1. это все таки тема для SD, а не для ТОСа.
2. удобнее это все использовать в сканерах и по отдельности, потому что комбинировать проще для тех, кто в программировании не шарит.
рвение очень классное, мне нравится, но спешите, спешите, александр.. все эти этапы на блоге уже пройдены, вы тупо повторяетесь
Массажные услуги Делаю массаж, недорого, качественно.Срок работы больше 4 лет. Возможен выезд на дом.Звоните!