Блог им. Burger |Тестирование работоспособности робота

Периодически встаёт задача протестировать корректность работы робота после
добавления нового кода. Естественно делать это на реальных торгах глупо.
Поэтому в робота добавляю демо-режим.
Суть этого режима в том, данные подаются на обработку не из терминала,
а из заранее подготовленного файла. Например с реальными тиковыми данными
за прошлый день. Через таймер генерится событие, скажем через 200 миллисекунд,
забирается блок данных и подаётся под видом данных из терминала.
Таким образом решаются 2 задачи:
— тестирование нового кода на корректную работу;
— вычисление пиковой нагрузки на робота сделок в секунду, когда он в теории
может перестать успевать за рынком.

Блог им. Burger |Тестирование МТС: проскальзывание и масштабируемость.

Очень много чего читал по-поводу создания МТС и роботов,
но вопрос выбора проскальзывания как-то нигде обычно
не поднимается. Между тем если теоретизировать
о будущих прибылях, также необходимо рассмотреть
и этот момент. Какое проскальзывание ожидать по инструменту
на выбранное количество лотов.
Здесь всё совсем не весело и падение ликвидности
очень заметно.
Я торгую фьюч Сбера, поэтому вот статистика для него.
Строки — количество лотов.
Столбцы — количество пунктов цены, которое потребуется
на вход в позицию.
Собственно вероятность, что такая поза будет набрана
и сдвиг цены не превысит указанное число пунктов.
Тестирование МТС: проскальзывание и масштабируемость.
Расчёт делался без исключений: гепы, вечерка, спайки и пр.
Если в Вашей МТС оценки ситуации не ведётся,
то расчитанные величины справедливы для неё.
Если вероятность попадания в проскальзывание
Вас не устраивает на выбранный сайз, то необходимо
придумывать способ дробить вход.

Блог им. Burger |Роботы: техническая памятка.

Есть очень важный момент, о котором как-то не принято
писать, хотя на практике с ним сталкиваешься постоянно:
ТЕХНИКА.
Перед запуском робота, особенно если планируете
сидеть за монитором редко, проверьте следующее.

— полностью отключите «спящие режимы»;
— либо выключите обновления системы, либо укажите
«по запросу», причём в нерабочее время;
— проверьте закачивает ли ещё какое ПО на компьютере
одновления (тоже бывают безакцепторные перезагрузки),
по возможности вообще ничего не устанавливайте
на рабочий компьютер;
— следите за объёмом свободной дисковой памяти, пусть
 её будет заметно больше, чем хочет система;
— отключите запуски ативируса по расписанию или укажите
нерабочее время, также для всего сервисного ПО, если есть;
— используйте проводное подключение к Интернет;
— поставьте компьютер в недоступном для детей месте!!!
- заранее выясните все ньюансы настройки вашего терминала,
чтобы он неожиданно что-то не спросил;
— ставьте «галки» сохрянять пароли в окнах, которые
робот не умеет перехватывать;
— желательно, чтобы у робота была функция теста связи
 робот-терминал и терминал-робот;
— используйте ПО типа TeamViewer для удалённого мониторинга.

Вроде бы всё. Ещё сталкивался, что комп отключал флешку,
как диск, а на ней была ЭЦП, но это для меня загадка.
Может у кого ещё найдутся рекомендации.

Блог им. Burger |Робот под Alfa-Direct 24х7

Если в роботе используется обработка рыночных данных
через массивы, а не через SQL, то с наступлением
нового дня возникает необходимость сохранения
накопленных данных (если ведётся архив), очистки
и сброса счётчиков на начало торгов, если робот
должен работать круглосуточно 7 дней в неделю.
В случае с Alfa-Direct для этого удобно использовать
2 события:
— автоматическое отключение терминала в 00:00;
— автоматическое подключение терминала в 00:15.
В API это событие OnConnectionChanged, имеющее
2 статуса: Connected и Disconnected.
Вешаем на это событие обработчик. Добавляем
в него дополнительное условие по времени,
чтобы исключить ложные рестарты при дисконнекте
внутри сессии:
if ((DateTime.Now.Hour == 23 && DateTime.Now.Minute > 50)
|| (DateTime.Now.Hour == 0 && DateTime.Now.Minute < 20))
Теперь робот можно крутить 24х7, если нужно куда-то
уехать, но не закрывать позицию.

Блог им. Burger |Робот: поиск линий тренда.

Рынок находится в некоей точке Х и хочется нарисовать
линии трендов сверху и снизу.
Сверху ищем линию сопротивления нисходящего тренда.
Снизу линию поддержки восходящего тренда.
Определения.
Линия сопротивления — линия, проходящая через максимумы
2-х свечей в диапазоне, для которой разница между
ценами на линии и максимумами цен свечей >=0.
Линия поддержки — линия, проходящая через минимумы
2-х свечей в диапазоне, для которой разница между
минимумами цен свечей и ценами на линии >=0.
Сначала находим минимум и максимум на диапазоне.
Далее есть выбор:
1. Искать линии перебирая все свечки.
2. Искать линии перебирая все цены.
По хорошему чего меньше: пунктов цены или свечек
в диапазоне — так и быстрее искать.
линию сопротивления мы ищем от максимума на диапазоне
до текущей свечи.
Линию поддержки от минимума до текущей свечи.

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

Блог им. Burger |Вопрос к программерам на C#.

Есть 3 переменных:
a — тип Int;
b — тип Int;
c — тип Long
Столкнулся с тем, что в выражении:
с = a * b;
правая часть, по умолчанию, сначала преобразуется
в Int, а потом в Long. Соответсвенно при больших
a и b и «переполнении» Int (скажем 300 000 и 10 000)
результат получается некорректный.
Приходится заморачиваться конструкцией:
c = Convert.ToInt64(a) * Convert.ToInt64(b);
По-другому никак не реализовать корректный расчёт?

Блог им. Burger |Извращённый способ удалённого управления роботом Alfa-Direct.

Способ реально извратный, но рабочий.
Как известно в «Личный кабинет» на сайте Альфв-Директ
можно войти и параллельно управлять позициями,
когда где-то в другом месте у Вас крутится робот.
Из личного кабинета формируете заявку, любую кривую,
которую система тут же скинет в утиль, например,
покупка фьюча по 1 рублю. Заявку система
свалит в удалённые, однако она останется в списке
заявок и терминал, где рулит робот, её тоже увидит.
Если в комментарий к этой заявке запихнуть
Управляющий «флаг», а за ним код для робота,
то робот, сканируя таблицу заявок, её отловит
по комментарию и обработает, как Вами задумано.

Блог им. Burger |Роботы: оцифровка консолидаций.

Выложу ещё немного из накопленного.
Прежде всего хочу начать с формулировки задачи.
Консолидация — это движение цены в диапазоне.
Но такая формулировка не имеет «торговой» составляющей.
Она скорее характеризует собственно сам график.
Нас же интересует «потециальная энергия», которую собирает
консолидация, чтобы потом превратить её в «кинетическую
энергию» движения. Думаю такая аналогия с физикой уместна.
Поэтому для трейдинга:
Консолидация — это движение цены в диапазоне при существенном объёме.
Существенный может варьироваться:
— для актива внутри дня, относительно среднего в день за неделю;
— для актива за неделю
и тд.
Рассмотрим самый простой вариант — интрадей, поскольку такие
консолидации формируются маркетмейкерами и реализуются внутри дня.
Пусть у нас уже есть некий робот, который собирает распределение
объёма по цене, считает некие средние, может спрос/предложение и тп.

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

Блог им. Burger |Роботы: алгоритмы целочисленных и распределённых вычислений.

При создании робота, как и любой задаче по программированию,
есть стадия формирования решения в виде логической блок-схемы,
и есть стадия технического воплощения элементов.
Качество робота, кроме чёткости исполнения алгоритма,
в значительной степени определяется скоростью расчёта
актуальных рынку команд.
Для начала сделаем общую оценку. Самая хлопотная,
ресурсоёмкая и «бесполезная» часть робота — взаимодействие
с «хомосапиенсом»: графики, формы, таблицы и прочие
штуки никакой полезности собственно алгоритму не дают,
поэтому по-возможности хорошо бы от них избавиться.
Далее, компьютер в своей основе — это инструмент обработки
целых чисел 0 и 1. Все прочие он с определённой точностью
и скоростью выражает при помощи этих двух. Поэтому данные,
которые будет обрабатывать алгоритм, следует изначально
выразить в формат, удобный компьютеру.

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

Блог им. Burger |Роботы на VB (Excel)

Использую для рутинных операций робота, написанного в Excel под Альфу.
Поскольку пока трейдинг не является моим единственным источником дохода
встал вопрос удалённого управления роботом и через него терминалом, т.к.
войти под одним логином с разных компов нельзя — первое соединение
терминалится.
Для реализации удалённого управления в Excel завёл источник данных —
html-страничку, т.к. у меня есть свой домен.
Собственно «страничка» — это лишь буквенно-цифровой код из 10 символов,
который забирает Excel через «Подключение к источнику данных».
Дальше робот этот код «разбирает» на команды.
Для ввода кода написал простую html+php форму, которая сохраняет
управляющик код в страничку. Так что можно даже с телефона ввести
новую настройку робота.
Но столкнулся с проблемой, что при частом рефреше «Подключения» в Excel
выпадают ошибки:
Роботы на VB (Excel)
или
Роботы на VB (Excel)
Что завешивает робот.
Посоветуйте как перехватывать такие ошибки в Execl?

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