Строим МТС на Метастоке за полчаса.

  • Автор темы Dim_plus
  • Дата начала

Dim_plus

New member
На днях у меня состоялся такой диалог:

[ В ] : Слушай.. вопрос такой... в Мете чтобы сделать робота... нужно какие то дополнительные библиотеки скачивать??
[ O ] : Чтобы автоматизацию сделать т.е. связь между Метой и АД надо пару файлов с моего сайта скачать из Раздела 2 http://stockgraphics.narod.ru/autotrading_complex.htm
[ В ] : Про завязку Меты к АДу это ясно... а чтобы заставить Мету автоматически исполнять заявки при сигнале ТС ..то достаточно самой Меты и знание языка Меты??
[ O ] : Да, достаточно. В файлах с моего сайта содержатся три дополнительных функции для Метастока, для рынка ММВБ, ФОРТС и РТС стандарт. Когда файлы поставишь в каталоги Меты как сказано в инструкции, то эти функции появятся в Мете (будут доступны в индикаторах в списке стандартных функций Меты) и уже с помощью этих функций по сигналам из индикаторов Меты (которые ты напишешь) будут формироваться заявки в АД с нужными параметрами, стопами и т.д
[ В ] : Немного уже начал понимать что к чему...) если я его быстро успею собрать я тоже выйду в ЛЧИ ))

[ В ] : Думаю для тебя будет легко ответить на мой вопрос такой:
Какая формула у такой стратегии .. есть 2-е средние первая с периодом 15 .. вторая с периодом 5 ... при пересечении второй первую снизу вверх лонг, а при пересечении сверху вниз шорт и сделать ее реверсивной

Я ответил пользователю на этот вопрос и потом решил опубликовать свой ответ в виде статьи: "Как за полчаса сделать торгового робота в Метастоке по нужной стратегии".

* * *
Итак, для создания робота используем торговый терминал Альфа-Директ и программу Метасток любой версии, начиная с 7-й по 11-ю.

ШАГ 1. Сначала скопируем на компьютер файлы библиотеки и модуля, необходимые для автоматизации подачи заявок из Метастока в АД-терминал. Прямые линки на файлы http://stockgraphics.narod.ru/Borisoff.dll и http://stockgraphics.narod.ru/MoveOrderADirect3_v59.exe А инструкция по установке файлов здесь http://stockgraphics.narod.ru/Razdel_2.htm
(Эти файлы бесплатные, поэтому у них величина открываемых позиций ограничена одним лотом (контрактом), но эти файлы могут использоваться в реальной автоматической торговле).

ШАГ 2. Теперь в программе 'Блокнот' или в любом текстовом редакторе напишем формулы стратегии, с использованием обычных функций Метастока. Текст заданной нам стратегии - "есть 2-е средние первая с периодом 15 .. вторая с периодом 5 ... при пересечении второй первую снизу вверх лонг, а при пересечении сверху вниз шорт и сделать ее реверсивной", в виде формул будет следующий:

MA15:=Mov(C,15,S); {медленная скольз.средняя МА с периодом 15}
MA5:=Mov(C,5,S); {быстрая скольз.средняя МА с периодом 5}

FBuy:=Cross(MA5, MA15); {формула сигнала на покупку при пересечении линией быстрой МА снизу вверх линии медленной МА}
FSell:=Cross(MA15, MA5); {формула сигнала на продажу при пересечении линией быстрой МА сверху вниз линии медленной МА}

BuyTrend:=BarsSince(FBuy)<BarsSince(FSell); {формула определения лонг-тренда после появления на графике Buy-сигнала}
SellTrend:=BarsSince(FBuy)>BarsSince(FSell); {формула определения шорт-тренда после появления на графике Sell-сигнала}

FNull:=If(BuyTrend, ExtFml("Borisoff.MoveFORTS","хххх-000",-1,0.5, B,0,Simple,0,BuyTrend,0), False); {формула подачи из Метастока в АД-терминал заявки на покупку НА БАРЕ с BuyTrend-сигналом}
{здесь вместо 'хххх' подставляется номер рабочего или демо-портфеля в АД-терминале который выбран для автоматической торговли. Эта заявка на покупку одного контракта на рынке ФОРТС, по инструменту, на график которого будет прикреплен этот индикатор}
FNull:=If(SellTrend, ExtFml("Borisoff.MoveFORTS","хххх-000",-1,0.5, S,0,Simple,0,SellTrend,0), False); {формула подачи из Метастока в АД-терминал заявки на продажу НА БАРЕ с SellTrend-сигналом}
{здесь вместо 'хххх' подставляется номер рабочего или демо-портфеля в АД-терминале который выбран для автоматической торговли. Эта заявка на продажу одного контракта на рынке ФОРТС, по инструменту, на график которого будет прикреплен этот индикатор}

False; {False это ноль, т.е. это значение индикатора на графике, которое будет рисоваться в виде горизонтальной линии с нулевым значением, поскольку этот индикатор нужен не для рисования сигналов на графике, а только для автоматической подачи заявок, и чтобы было видно что этот индикатор прикреплен к графику}


ШАГ 3. Запустим Метасток, нажмем в нем кнопку 'Indicator Builder' на панели инструментов, и в списке индикаторов кнопкой 'New' создадим новый индикатор, в поле 'Name' которого напишем название, например, 'CrossMA', а в поле 'Formula' скопируем и вставим все строки с формулами, ранее написанными в Шаге 2, и нажмем кнопку 'Ок', как показано на рисунке ниже.


И только что созданный, новый индикатор 'CrossMA', появится в списке индикаторов Метастока. Затем выходим из Indicator Builder'а. Конечно, все что написано в шаге 2 можно было прописывать не в Блокноте, а сразу в индикаторе в поле 'Formula', тогда Метасток будет сразу автоматически проверять синтаксис формул и выдавать сообщения об ошибках и показывать место ошибки.

ШАГ 4. Наш новый индикатор будет виден в списке 'Indicator QuickList' Метастока. Теперь можно этот новый индикатор прикрепить на график любого ФОРТС-инструмента и с началом торгов, c началом обновления данных в Метастоке, по сигналам с графика этого инструмента будут автоматически подаваться одно-лотовые заявки в АД-терминал.

Поскольку мы написали формулы для стратегии реверсивной авто-торговли, то при появлении на графике сигнала, противоположного уже имеющейся позиции (например была лонговая позиция, а появился сигнал на продажу), то имеющаяся позиция будет автоматически закрыта, и откроется шорт-позиция. Величина позиции будет автоматически поддерживаться равной одному контракту (лоту).

* * *
Таким образом, за четыре шага, не более чем за полчаса, "с нуля", мы создали с помощью индикатора в Метастоке рабочую автоматическую торговую систему, торгующую по сигналам заданной стратегии одним контрактом по графику любого ФОРТС-инструмента, на который будет помещен этот индикатор.

Параметры в строках с переменными 'FNull' можно модифицировать, чтобы например заявка подавалась со стопом. Тогда после открытия позиции к ней автоматически будет создан и стоп, нужного вида и с нужными параметрами.
Возможных видов используемых заявок и их параметров очень много, т.е. есть заявки не только на открытие позиций, но и на приостановку торгов, на вывод в кэш по величине достигнутого профита/убытка, на стопы с автоматическим перемещением вслед за ценой, и т.д. и т.п. Также можно использовать не только ФОРТС, но и другие рынки.
Все параметры функций и виды заявок описаны на сайте http://stockgraphics.narod.ru/autotrading_complex.htm
На этом же сайте можно найти ответы на все вопросы, возникающие при проектировании автоматических торговых систем для Метастока и АД-терминала и их использовании, посмотреть видео-уроки.
 

ovk

Member
какие еще терминалы , кроме AD (альфыдиректа), поддерживают реал тайм экспорт в Метасток ?
 

ovk

Member
хорошая статья ... написано просто и понятно ... хотелось бы и про "подводные камни" в ней услышать ... например, сколько стоит лицензионный метасток ? или какова надежность связки терминал - метасток ? сколько времени потребуется на изучение особенностей программирования в метастоке ? и т.д. и т.п. ... честно говоря, у меня пока "за полчаса" сделать МТС на базе данной связки не получилось :-( можете меня ругать и обзывать, но это факт ... конечно разговор идет не о простейшей МТС , типа той, что описана в данной статье ... поэтому, лично я пошел по пути разработки и использования своего софта (через открытый API в AD) ...
 

Dim_plus

New member
Лицензионная Мета дорога, хотя ей пора уже прилично подешеветь ;) Надежность связки АД-Метасток по опыту многолетней эксплуатации выше среднего, и практически определяется надежностью работы только самого АД-терминала. Времени на освоение особенностей программирования Метастока требуется от недели-двух, особенно при наличии постоянного форума, где был бы обмен опытом. Конечно стратегия описанная в статье очень простая, но за несколько лет использования Метастока для автоматизации, сроки реализации новых идей, никогда не были больше нескольких дней. Вначале что-то продумывается в голове, потом смотрю в Мете, как все эти идеи выглядят на графике, потом что-то поправляется по ходу дела и в реал-торговле. Самое долгое это последующая реальная торговля с целью окончательной проверки идеи на результат. В общем, был бы граальный агоритм, а уж в чем его реализовать в Мете ли, в Метатрейдере ли, или в Экселе не так важно :))
 
Последнее редактирование:
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху