На днях у меня состоялся такой диалог:
[ В ] : Слушай.. вопрос такой... в Мете чтобы сделать робота... нужно какие то дополнительные библиотеки скачивать??
[ 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
На этом же сайте можно найти ответы на все вопросы, возникающие при проектировании автоматических торговых систем для Метастока и АД-терминала и их использовании, посмотреть видео-уроки.
[ В ] : Слушай.. вопрос такой... в Мете чтобы сделать робота... нужно какие то дополнительные библиотеки скачивать??
[ 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
На этом же сайте можно найти ответы на все вопросы, возникающие при проектировании автоматических торговых систем для Метастока и АД-терминала и их использовании, посмотреть видео-уроки.