Коллеги, всем добрый день! Представляю вашему вниманию свою небольшую разработку в области автоматизации торговли. Будет правильно, если упомяну автора концепции данной программы — это всем небезызвестный Артём Крамин (пост). Я думаю, многие старожилы данного форума помнят его автоматический исполнитель приказов. К сожалению, Артём перестал поддерживать своё детище, более того, мне не удалось найти ни одной работающий ссылки на дистрибутив его программы, поэтому ничего не оставалось, как
написать данную программу самому. У Артёма программа была реализована на языке С#, у меня — на Java. Писал данную программу, в первую очередь, для себя, но выкладываю её для всеобщего использования, может кто-нибудь найдёт данное ПО полезным для себя.
Лично я в свое время очень активно использовал TSLab, но цена на него значительно выросла. Платить 4500 тыс.р. в месяц, откровенно говоря, жалко + если еще добавить стоимость виртуального сервера (это ещё порядка от 500 до 2500 тыс.р. в месяц), получается довольно
приличная сумма. Если у кого-то есть стойкое желание сократить свои затраты на торговлю и хоть как-то автоматизировать процесс своей торговли (без знания языка программирования), то решение, предлагаемое мной, может оказаться крайне полезным. Напомню основную
концепцию данной программы.
Допустим, у вас есть советник, который реализован в какой-нибудь программе технического анализа (я например, для этих целей использую сайт tradingview). Используя советник, мы можем преследовать разные цели - непосредственная передача сигналов от данного советника
непосредственно в торговую систему или просто получение уведомлений на почту или телефон без непосредственного выставления заявок в торговую систему. Последнее, кстати, может оказаться крайне полезным, если вы предпочитаете не отдавать полностью контроль над
выставлениям заявок своему торговому советнику, а решение принимаете только сами, например, только в определенной фазе рынка (как вариант, при резком снижении уровня волатильности). Моя программа реализует обе эти цели.
Ниже представлен скриншот программы. Принцип работы крайне прост.
1.Вы задаёте индикативные цвета покупки, продажи или выхода
из позиции(делается это в окне FullSceen c помощью кнопок BUY,SELL,HOLD)
Определение цвета работает пока только в рамках размера окна заданного
по умолчанию!!!
2.Далее выделяете сканируемую область экрана, в которой собственно и будет производиться
поиск сигнала (окно FullScreen). А в окне Screen_Area будет непосредственно отображаться
сканируемая область. Область сканируется каждую секунду.
3.Далее в диалоговом окне настроек (Set), помимо самих настроек Вам
нужно указать, в каком виде Вы хотите получить сигналы, есть три варианта:
E-mail signals: Указываем почту (пока работает только под Яндекс) и пароль и получаем сигналы
в режимы реального времени.
Phone signals: Возможно получение сигналов виде смс на телефон. Но сразу скажу, что
принципиального отличия между получением сигналов на почту или на телефон нет, так как
приходят они практически одновременно. Кроме того, данное решение платное. Нужно
зарегистрироваться на сайте и пополнить счёт. Стоимость 1 смс
порядка 1 рубля.
TS Signals (Quik)-направление сигналов непосредственно в Quik.
Режим поставки сигналов реализован не через API, а через запись транзакций в файл с
расширением .tri, который Quik считывает каждые 5 секунд. Для этого Quik в разделе настроек
надо указать расположение файлов расширений:.tri/.tro/.trr.
УСТАНОВКА:
1. JAVA под Вашу операционную систему:
https://java.com/ru/download/manual.jsp#win
2.Дистрибутив программы (Parse_Signal):
https://yadi.sk/d/2mp9z6Gc3SbiYq
P.S.:В случае необходимости выложу видео инструкцию работы с программой. Будут вопросы, пишите в личку.
1. В папке с Квиком создаем директорию LuaIndicators.
2. В этой папке создаем файл br_rub.lua, туда записываем:
Settings =
{
Name = «BR_RUB»,
tag = «USDRUB»,
tag1 = «BR»,
line=
{
{Name = «brent_rub», Color = RGB(0, 0, 255), Type = 1,Width = 1}
}
}
function Init()
return 1
end
function OnCalculate(index)
local Out = (getCandlesByIndex(Settings.tag1, 0, index-1, 1)[0].close or 0) * (getCandlesByIndex(Settings.tag, 0, index-1, 1)[0].close or 0)
if Out > 0 then
return Out
else
return nil
end
end
1. В Квике создаем график с курсом доллара (USDRUB_TOM).
2. К графику добавляем график с брентом (BR-3.18).
3. Идем в настройки графика, в разделе Дополнительно указываем Идентификатор: BR -для графика с брентом, USDRUB- для графика с курсом.
4. Добавляем индикатор (выбираем из выпадающего списка BR_RUB).
5. Уменьшаем ненужные поля. Если график не отобразился — даблкликаем на графике — жмем Применить:
ссылка на файл
кросспост rffx.ru
Узнал, что продается робот на Lua, «Автологин терминала QUIK». Продается то, что есть в открытом виде на quik2dde.ru
Выкладываю тут:
-- quik_login.lua -- Автологин терминала QUIK -- © http://qui2dde.ru/ -- Версия: 2.0 -- для Quik от версии 7.11.1.5 local w32 = require("w32") -- логин и пароль для терминала QUIK_LOGIN = "Uxxxxxxx" QUIK_PASSW = "yyyyy" function FindLoginWindow() hLoginWnd = w32.FindWindow("", "Идентификация пользователя") if hLoginWnd == 0 then hLoginWnd = w32.FindWindow("", "User identification") end return hLoginWnd end timeout = 1000 -- таймаут между попытками поиска окна логина is_run = true function OnStop() timeout = 1 is_run = false end function main() while is_run do sleep(timeout) if isConnected() == 0 then local hLoginWnd = FindLoginWindow() if hLoginWnd ~= 0 then local n1 = w32.FindWindowEx(hLoginWnd, 0, "", "") local n2 = w32.FindWindowEx(hLoginWnd, n1, "", "") local n3 = w32.FindWindowEx(hLoginWnd, n2, "", "") local n4 = w32.FindWindowEx(hLoginWnd, n3, "", "") w32.SetWindowText(n2, QUIK_LOGIN) w32.SetWindowText(n3, QUIK_PASSW) w32.SetFocus(n4) w32.PostMessage(n4, w32.BM_CLICK, 0, 0) end end end endБлагодарности, как понимаю, следует адресовать swerg
«Технический анализ изучает движения массовой психологии на финансовом рынке. Каждые торги являются битвой между «быками», получающими прибыль от роста цен, и «медведями», получающими ее от их падения. Цель технического анализа состоит в том, чтобы узнать сравнительную силу обеих групп и поставить на победителя», – писал в своей книге Александр Элдер.
Стоит отметить, что у теханализа существуют как сторонники, так и критики, которые не верят в эффективность этого метода. К ним относится известный инвестор Уоррен Баффет. «Я понял, что технический анализ не работает, когда перевернул графики цен вверх ногами и получил тот же самый результат», — заявил он. Однако, несмотря на всю критику, использование теханализа в качестве дополнительного инструмента для выбора точки открытия и закрытия позиции, является незаменимым методом.
За многолетнюю историю в техническом анализе были созданы сотни индикаторов. Среди них можно выделить два основных вида – это трендовые индикаторы и осцилляторы, которые имеют разные функции и особенности.
ADX (Average Directional Movement Index, Индикатор среднего направленного движения)
Alligator (Индикатор Аллигатор)
AMA (Adaptive Moving Average, Адаптивная скользящая средняя)
Moving Average (MA, Скользящая средняя)
Bollinger Bands (Полосы Боллинджера)
Parabolic SAR (Parabolic Stop and Reverse, Параболическая Система SAR)
Bears/Bulls power (Индикатор силы Медведей/Быков)
Fractals (Фракталы Билла Вильямса)
TRIX (Triple Exponential Moving Average, Тройная экспоненциально сглаженная скользящая средняя)
Williams’ A/D (Williams’Accumulation/Distribution, Индикатор Накопления/Распределения Вильямса)
Relative Vigor Index (RVI, Индекс относительной бодрости)
Williams’ % Range (Williams’ %R, Процентный диапазон Вильямса)
A/D (Accumulation/Distribution, индикатор Накопления/Распределения)
Chaikin Oscillator (Осциллятор Чайкина)
BW MFI (Bill Williams’ Market Facilitation Index, Индекс облегчения рынка Билла Вильямса)
Elders Force Index (Индекс силы Элдера)
Money Flow index (MFI, Индекс денежных потоков)
On Balance Volume (Индикатор балансового объема)
Volume Oscillator (Осциллятор объема)
Average True Range (ATR, Средний истинный диапазон)
CCI (Commodity Channel Index, Индекс товарного канала)
Chaikin’s Volatility (Индикатор волатильности Чайкина)
Vertical Horizontal Filter (Вертикальный горизонтальный фильтр)
AC (Acceleration/Deceleration, индикатор Ускорения/Замедления)
AO (Awesome Oscillator, Чудесный осциллятор)
CMO (Chande Momentum Oscillator, Осциллятор скорости рынка Чанде)
MACD (Moving Average Convergence/Divergence, индикатор Схождения/Расхождения Скользящих Средних)
Momentum (Индикатор скорости рынка)
Price Oscillator (Ценовой осциллятор)
Rate of Change (ROC, Темп изменения цены)
Relative Strength Index (RSI, Индекс относительной силы)
Stochastic Oscillator (Стохастический осциллятор)
Комментарий эксперта БКС Экспресс Вероники Завадовской:
Технические индикаторы могут существенно облегчить работу трейдера, показывая точки смены тенденции, удобные места для выставления ордеров и другую полезную информацию. Конечно, для каждого актива, вашей стратегии и таймфрейма придется подбирать индикаторы и осцилляторы, которые будут давать истинные сигналы, выставлять параметры. Тем не менее, есть ряд основных, которые подойдут почти под любой инструмент – это, например, скользящие средние, Полосы Боллинджера, RSI, ADX, MACD. Важно помнить, что каким-либо одним индикатором пользоваться не стоит, осцилляторы и трендовые индикаторы необходимо сочетать. Удачной торговли!
Комментарий эксперта БКС Экспресс Игоря Галактионова:
Индикаторы являются хорошим дополнительным инструментом для торговли. На мой взгляд, они полезны тем, что представляют доступную техническую информацию в более наглядной форме и позволяют проще и быстрее оценить состояние рынка: его волатильность, изменения объемов, положение относительно среднего значения. Сейчас, конечно, они дают не такое весомое преимущество, как было в те годы, когда их разрабатывали. Но их грамотное использование и в сегодняшних реалиях может повысить качество принимаемых торговых решений.
Не стоит использовать индикаторы для прогнозирования в чистом виде – их ниша определение подходящей точки входа и подтверждающие сигналы. Для меня наиболее понятными и полезными являются объемные и канальные индикаторы. Это могут быть Полосы Боллинджера, Accumulation/Distribution, OBV, Elders Force Index. Также очень удобна адаптивная скользящая средняя AMA. Рекомендую присмотреться к этим индикаторам и изучить их поведение на истории.
БКС Экспресс
Привет всем от начинающего трейдера. Последние четыре месяца торгую в системе (торговом терминале) QUIK(далее Квик). Терминал от БКС v.7.14.1.7. Дошёл в своих начинаниях на этом поприще до ведения журнала торгов и анализа. Поднял данные прежних своих беспорядочных безучётных спекуляций. Выяснил, что мои расчёты расходятся с анализом и расчётами Квика. Первое подозрение появилось, когда заметил, что при продаже части акций пакета по цене отличающейся от «балансовой цены»(я так понял, то это средняя цена акции в пакете), балансовая цена не меняется. Почему?
Начал фотографировать таблицу «Состояние счёта» после каждой операции. Открыл калькулятор и прибавлял или вычитал стоимость операции(произведение количества акций на их цену при сделке) к или из балансовой стоимости, соответственно для операций докупа или частичной продажи акций. Получилось, что при докупе акций всё считается правильно, а при частичной продаже, калькулятор и Квик дают разный результат. Почему?
Решил загрузить в Excel данные по сделкам с одним из инструментов, с такими частичными продажами и докупом акций. Поиграл с формулами, как я считал балансовую цену, балансовую стоимость и параметр «±», я его назвал «Прибыль/убыток», и как же всё-таки считает Квик. Что я выяснил на модели в Excel.
Открытие позиции, последующий докуп акций, одинаково считаем и я и Квик. А вот после частичной продажи акций, Квик не правильно пересчитывает новую балансовую стоимость и соответственно неправильно пересчитывается балансовая (средняя) цена, вернее она остаётся той же, что до операции. В чем ошибка?
Так считает Квик
А так должно быть
Квик при частичной продаже акций из текущей балансовой стоимости вычитает произведение количества продаваемых акций на текущую балансовую цену, а не на цену продажи акций. Именно поэтому новая балансовая цена акций остаётся неизменной, ведь балансовая цена это простое деление новой балансовой стоимости на оставшееся количество акций в пакете. Причём это только при частичной продаже. При докупе акций, Квик почему то балансовую стоимость пересчитывает правильно — количество приобретаемых акций умножает на их цену покупки и добавляет к последней балансовой стоимости. К чему это приводит?
А приводит это к:
занижению балансовой цены;
занижению балансовой стоимости;
выдаче ложного сигнала в параметре «±» таблицы «Состояние счёта», что после некоторого количества манипуляций с частичными продажами и докупом акций убыток перешёл в разряд допустимых, а то и уже начал приносить прибыль и от него можно избавиться.
Мой файл Excel с моделью и примерами: https://yadi.sk/i/PpgBc2LJ3Qe8KT
Можете ввести свои данные подобных сделок в форму( до столбца G) и сравнить.
Одинаково жду подтверждения своей правоты или опровержения.