Страницы

7 апреля 2012 г.

Metastock - TAutoTraderDLL. Впечатления после небольшого периода работы

       Доброго времени суток.
       Вот более недели я периодически ковыряюсь в метастоке и библиотеке (TAutoTraderDLL) с внешними функциями для взаимодействия с Quik. За это время я реализовал пару стратегий предоставленных мне финансовым аналитиком на работе. Я не могу сказать, что разобрался до конца в этой системе, но сейчас работать куда проще чем в начале и вопросов с каждым разом становится все меньше. Чтобы разобраться со всеми возможностями метастока необходимо намного больше временных ресурсов. Хотя мне как программисту, задача которого - техническая реализация стратегий роботов, знать там все вовсе не обязательно. :)



Metastock.
  • Графическое отображение индикаторов;
  • Возможность создания собственных индикаторов. Многострочный редактор формул;
  • Большой набор уже имеющихся индикаторов которые можно использовать с своих собственных;
  • Возможность подключения внешних (!) DLL с набором пользовательских функций;
  • Использование внешних функций при создании собственных индикаторов.
  • Тестер. Который подскажет оптимальные параметры для тестируемых стратегий.
       Метасток поражает своей функциональностью, он умеет многое. По моему мнению он является идеальным инструментом для анализа, но далеко не идеальным для разработки роботов. Я хочу сказать, что если Вам необходимо визуально отобразить различные индикаторы чтобы принять решение о дальнеших действиях на рынке - метасток идеален. Если необходимо написать механическую торговую систему (МТС), то тут возникнут некоторые трудности:
  • Метасток имеет ограничение по длине текста пользовательских формул. Это чревато тем, что не удастся "повеселиться на полную катушку" при реализации более-менее усложненных.
  • Ограничение на количество используемых переменных (максимум - 20). Это тоже мешает, т.к. всегда хочется результаты сложных сочетаний операций занести в переменные, и далее пользоваться именно ими, дабы не нагружать текст программы "копи-пастом" частей формул. К тому же, потенциально изменяемые параметры стратегии удобнее вывести в начало формулы чтобы при необходимости долго не искать их в тексте формулы.
  • Формулы индикаторов подхватывают значения массивов данных (показания других индикаторов, стандартный массив данных) только текущей итерации. Т.е. при наступлении следующего периода скрипт формулы подхватывает только те значения на который в ДАННЫЙ МОМЕНТ указывают индикаторы. И это правильно и логично! Но, например, найти первую (справа - налево) минимальную цену (за прошедшие периоды) из всех что больше текущего значения, при условии, что всегда при текущей итерации текущее значение больше любой цены (нахождение того о чем я говорю возможно при падении тренда) - проблема. Но тут спасает подключение внешних библиотек (DLL). Но во-первых, это не всегда приемлемо, во-вторых, если вы не программист, то самому очень трудно реализовать все "хотелки" внешними библиотеками (DLL).

 TAutoTraderDLL.

       Что я могу сказать о этой библиотеке? В принципе ничего плохого.  Она полностью реализует тот функционал который завялен в справке (выставление заявки, получение информации о портфеле, получение информации о свободных денежных средствах и о полном размере счета).
Среди плюсов можно отметить:
  • Хорошее подробное логирование. Логиуется каждая транзакция, что позволяет в деталях проанализировать корректность работы механизма Metastock - Quik;
  • Асинхронный режим отправки транзакций. Это позволяет быстро отправлять транзакции и не вешает API терминала Quik (как-то из-за ошибки отправилось 499 транзакций на 40 секунд. Совершилось 407 сделок. Неплохой показатель скорости :) ).
  • Простота настройки.
Из минусов:
  • Было бы неплохо иметь возможность снимать не принятые заявки;
  • Нет возможности отправлять стоп-заявки;
  • Нет средств для лимитирования выставления заявок на продажу и на покупку. Например, если нужно ограничить количество покупаемых бумаг какой-либо величиной. Если заявки исполняются не сразу то имеем шанс сгенерировать кучу транзакций на покупку. Это нельзя решить средствами библиотеки, но зато можно средствами специальных пользовательских индикаторов которые будут анализировать количество транзакций на покупку или продажу, или нечто иное.
       Подведя итог описания минусов могу сказать, что создание более-менее непростых роботов потребует не мало времени и фантазии. Функционал ограничен для создания сложных роботов.


       Пока писал этот пост пришла в голову идея как реализовать тот самый контроль позиций. Надо попробовать, если получится - опишу процесс. А вот со стоп-заявками и с отменой выставленных - думаю никак...

Комментариев нет:

Отправить комментарий