Amibroker: как работает тестер

Тестер в Amibroker, тоже построен на векторной идеологии. В Amibroker существуют специальные переменные, которые тестер использует для расчетов открытия и закрытия позиций, выбора сайза, и скоринга позиций.

Чтобы создать простейщую систему нужно просто инициализировать несколько переменных (тоже векторные!):

  • Buy – вход в лонг
  • Sell – выход из лонга
  • Short – вход в шорт
  • Cover – выход из шорта

Также есть переменные, которые называются BuyPrice,SellPrice, ShortPrice, CoverPrice – они указывают тестеру на цены по которым мы будем входить/выходить из позиции.

Вернемся к посту об архитектуре языка и возьмем оттуда примеры.

Пусть наше правило входа в лонг будет гласить: MidPx > 96.
Для этого пишем код:

MidPx = (H + L) / 2;
MidPxGt96 = MidPx > 96;
Buy = MidPxGt96; //или Buy = MidPx > 96;

16

Как видно на примере из Excel, переменная Buy (которая равна MidPxGt96) принимает значение True на 3-м индексе. Именно этот момент входа использует тестер для входа в лонг. Но у нас есть еще сигналы на 4 и 5 барах – как быть с ними? Их тестер Amibroker просто проигнорирует!. Более того, так как мы не указали тестеру переменную Sell, он не закроет эту сделку никогда, Вы получите аналог Buy-And-Hold.

Добавляем выходы


MidPx = (H + L) / 2;
MidPxGt96 = MidPx > 96;
Buy = MidPxGt96; //или Buy = MidPx > sy96;
Sell = MidPx == 98;

Значение Sell принимает True только на 4 баре. Теперь тестер посчитает нам 2 сделки, на барах с 3 по 4, и с 5 по бесконечность.

Небольшая иллюстрация из хелпа:

Тем кто хочет вникнуть в детали:
1. Back-testing your trading ideas
2. Portfolio-level backtesting

Теперь мы, пожалуй, покончим с базовыми вещами, для этого есть подробный хелп у самой программы.

Поговорим о более интересных вещах – что может и что не может тестер Amibroker, и какие подводные камни он имеет.

Что умеет тестер Amibroker

  1. Портфельное тестирование – стоков, фьючей и форекса. Можно каждому сигналу проставить рейтинг, и если не будет хватать денег или тестер упрется в ограничение по отрытым позициям, он из двух и более кандидатов выберет лучшего. (см. главу USING POSITION SCORE)
  2. Rotational Trading – собирает портфели на основе неких числовых рейтингов. Можно с помощью этой штуки собирать разные нейтральные long/short портфели, или создать TAA(Tactical Asset Allocation) модели. Вот описание.
  3. Можно получать доступ к котировкам других инструментов и принимать на их основе торговые решения

Что НЕ умеет тестер Amibroker или делает плохо

  1. Торговля парами – не смотря на то, что в features list Amibroker парный трейтинг есть. Делается он через жопу, я себе примерно представляю как это сделать, но это будет очень криво и некрасиво. Все упирается в архитектуру, как только тестер переходит к другому инструменту, он напрочь забывает, что у него открыто и по какой цене на других инструментах.
    Как вариант можно сделать синтетический инструмент – спрэд, и тестить на его основе, я так реализовал свои парные стратегии, но у этого подхода свои ограничения.
  2. Управление позицией – доливки/урезки позиции есть, но сделаны тоже через одно место. И без черного пояса по Amibroker и бутылки с ними толком не разобраться, даже я не представляю как это работает :) Хотя просто никогда не нуждался во всякого рода алгоритмах управления позицией. У кого есть желание прошу читать: Pyramiding (scaling in/out) and mutliple currencies in the portfolio backtester
    Но что точно вы никогда не сделаете, так это не получите значения эквити из кода стратегии. Это просто АДов АДъ, даже не пытайтесь этот вопрос задавать мне. Все хитрые схемы ММ идут лесом, юзайте Excel :) Нет не совсем все так плохо, у Amibroker есть специальный Custom Backtester Interface, который может сгладить некоторые косяки тестера, напр. можно реализовать хитрые схемы ММ. Но из кода к еквити все равно не обратиться.
  3. Amibroker не умеет обращаться из старшего таймфрейма к младшему. Нельзя из дневок обратиться к минуткам, но из минуток к дневкам можно.

Leave a comment