Как построить свой индекс в Amibroker

Опубликовано в AmiBroker

Амиброкер легко позволяет манипулировать различными таймсериями. Для примера приведу простейший пример построения произвольного индекса.

К примеру, нам нужно создать некий синтетический индекс, состоящий из 50% Газпрома, 30% Лукойла и 20% Роснефти. Зачем он нам нужен (да еще такой) - оставим вопрос за скобками. Причем построим его по ценам на соответствующие фьючерсы.

У меня в Амиброкер эти фьючерсы экспортируются в реальном времени через стандарный плагин. Имена тикеров, соответственно GZ, LK и RN.

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

 

// Указываем имена тикеров и коэффициенты
ticker1 = "GZ"; K1 = 0.5; // Фьючерс на Газпром - 50%
ticker2 = "LK"; K2 = 0.3; // Фьючерс на Лукойл - 30%
ticker3 = "RN"; K3 = 0.2; // Фьючерс на Роснефть - 20%
// Читаем таймсерии и рассчитываем поля OHLC
C = Foreign( ticker1, "C" ) * K1 +
Foreign( ticker2, "C" ) * K2 +
Foreign( ticker3, "C" ) * K3;
O = Foreign( ticker1, "O" ) * K1 +
Foreign( ticker2, "O" ) * K2 +
Foreign( ticker3, "O" ) * K3;
H = Foreign( ticker1, "H" ) * K1 +
Foreign( ticker2, "H" ) * K2 +
Foreign( ticker3, "H" ) * K3;
L = Foreign( ticker1, "L" ) * K1 +
Foreign( ticker2, "L" ) * K2 +
Foreign( ticker3, "L" ) * K3;
// Рисуем график
Plot(C,"Корзина",colorBlack,styleCandle);

// Формируем информатор

_N(Title = StrFormat("Корзина {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g", O, H, L, C));

Вот что получаем в результате на таймфреймах 1 день, 1 час и 1 минута:

 

На каждом скриншоте выделена одна свеча, ее OHLC видны вверху окна.

В этом примере для построения индекса использовались 3 фьючерса. На самом деле не имеет никакой разницы, какие инструменты лежат в основе индекса. Это могут быть акции, фьючерсы, другие индексы, цены предложения или спроса, расчетные цены опционов, расстояние от Земли до Солнца или температура воды на Ямайке - лишь бы имелись соответствующие данные. Получать их можно как при помощи многочисленных плагинов из терминальных программ, посредством DDE импорта, текстовых файлов или даже напрямую с бирж.

Я вывел на график время исполнения скрипта. Расчет составляет около 0.08 секунды (был использован наиболее незамысловатый и самый медленный способ доступа к "чужим" таймсериям). Использование умных способов позволит сократить время исполнения как минимум вдвое.

Как торговать на основе этих индексов, например, через терминал QUIK? Можно использовать старый добрый мазайский способ - файл транзакций, можно использовать AmiSharp. Есть и другие возможности.

Кроме индексов, можно строить любую другую синтетику. Вот пример арбитражера на AmiSharp, который работает с использованием спредов покупки-продажи.

Добавить комментарий


Защитный код
Обновить