Воскресенье, 12.05.2024, 14:51
Приветствую Вас Гость | RSS
Форма входа
Категории раздела
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 69
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Теория и технология торговли на Форексе

Каталог статей

Главная » Статьи » Мои статьи

Устройство и работа автоматической торговой системы

УСТРОЙСТВО И РАБОТА АВТОМАТИЧЕСКОЙ ТОРГОВОЙ СИСТЕМЫ.

Михаил Фитерман

 

   Сегодня трейдерам предлагается великое множество автоматических систем и советников для торговли на финансовых рынках. Причем все они обладают потрясающей доходностью. Кроме этого утверждается, что трейдеру не надо иметь никаких знаний и умений. Достаточно нажать  на кнопку и подставить кошелек. Это обычная рекламная шумиха и одурачивание. Но почему-то доля успешных трейдеров на рынке не повышается: их, как было менее 10%, так и осталось. Причина этого не только в рекламном обмане, но и в действии закона сохранения, открытого еще Ломоносовым. Количество всей денежной массы на рынке практически неизменно или растет очень медленно. Эта масса денег только перераспределяется между участниками рынка. Поэтому  доля успешных трейдеров зависит от относительного уровня их квалификации. А доля  таких трейдеров -  профессионалов, естественно, не может быстро увеличиваться. Для каждого трейдера единственно разумный вывод из рекламной шумихи в том, что как раз нужно совершенствовать свою квалификацию. Можно сказать, что современная рыночная торговля – это уже не просто искусство, а наука. Современный трейдер должен освоить эту науку и уметь сравнивать предлагаемые торговые системы и советники в части их прибыльности. Далее я попытаюсь прояснить эту тему в предположении, что основная масса читателей  не обладает указанными научными знаниями. Прежде всего, что нужно знать современному трейдеру? Устройство финансового рынка, модель его работы, способы и приемы прогнозирования цен рыночных  инструментов.

Устройство финансового рынка.

   Любой централизованный рынок представляет собой большое сообщество участников (так называемых агентов рынка), которые имеют одинаковую общую цель – обогащение. Любой агент рынка, как и вообще любой человек руководствуется своими ожиданиями и прогнозами поведения цены торгуемого инструмента и на этой основе совершает свои действия – сделки покупки или продажи. Поэтому можно сказать, что цены торгуемых рыночных инструментов определяются совокупностью указанных операций – ожидания, прогнозы и сделки всех агентов рынка. Именно в этих терминах и следует моделировать рынок в  словесном формате. В плане макроэкономики рынок можно рассматривать как некоторый динамический объект с входными и выходными параметрами (переменными), причем выходные переменные объекта зависят от его входных переменных. Известно и понятно, что цены  торгуемых инструментов (выходные переменные) зависят от объемов  всех совершаемых на рынке сделок купли и продажи (входных переменных). Эти зависимости образуют, так называемые, причинно-следственные связи выхода объекта с его входом и именно такие связи рынка, как динамического объекта, образуют его математическую модель. Также известно, что с увеличением суммарного объема сделок покупки данного рыночного инструмента его рыночная цена увеличивается, а с увеличением суммарного объема сделок продажи – наоборот уменьшается. Если же эти объемы на рынке близки по величине, то цена удерживается на некотором равновесном уровне. Этому отвечает математическая модель связи рыночной цены с общим объемом всех покупок и общим объемом всех продаж данного инструмента в виде уравнения связи скорости изменения цены с разностью указанных объемов сделок. Такую модель рынка можно записать в виде следующего уравнения:

(1)…..dC/dt=K1*(Vпок(t)-Vпрод(t)).

Здесь: C(t) – цена данного торгуемого инструмента в текущий момент времени tdC/dt – скорость изменения цены во времени, Vпок(t) – объем покупок, Vпрод(t) – объем продаж в данный момент времени, K1 – некоторый постоянный коэффициент (константа данной модели).

   Разница суммарного объема покупок и суммарного объема продаж на рынке ∆V(t)=Vпок(t)-Vпрод(t) называется их разбалансом. Поэтому можно сказать, что скорость изменения рыночной цены пропорциональна разбалансу покупок и продаж на рынке, причем при нулевом разбалансе цена не меняется. Это общеизвестная связь цены с балансом спроса/предложения на рынке и в модели она образует прямую связь рынка как объекта. Для полноты картины в модели рынка следует учесть и обратную связь разбаланса ∆V с ценой торгуемого инструмента C. Эта связь реализует ожидания и прогнозы цен рыночными агентами и ее можно записать в виде:

(2)….. ∆V(t)=K2*X(t),

(3)…..X(t)=f(C(t)).

Здесь: X(t) – прогноз фактической цены C, сделанный трейдером для будущих моментов времени τ>t, K2 – постоянный коэффициент (еще одна константа модели рынка), f – функциональная зависимость.

   Итак, полная математическая модель рынка описывается уравнениями (1) – (3). Понятно, что рядовому трейдеру такая макроэкономическая модель рынка не помогает успешно торговать. Эта модель полезна только для общего понимания рыночных процессов. В частности эта модель демонстрирует такие рыночные понятия, как перекупленность и перепроданность. Из приведенной модели видно, что когда объем покупок на рынке сильно превышает объем продаж (Vпок>>Vпрод) то на рынке наблюдается перекупленность данного инструмента и в силу уравнения (1) его цена существенно повышается. И, наоборот, при сильной перепроданности (Vпок<<Vпрод) цена существенно снижается. Как только опытные трейдеры замечают такую рыночную ситуацию, они начинают менять тип своих сделок (сделки покупки меняют на сделки продажи и наоборот). В результате на рынке наблюдается смена направления тренда цены. Описанные ситуации свидетельствуют об автоматическом регулировании рынка. (Великий экономист Адам Смит сказал об этом так: «рынок управляется невидимой рукой».) Итак, можно утверждать, что с точки зрения макроэкономики рынок – это автоматически регулируемый объект. В результате такого авторегулирования рыночные цены непрерывно колеблются в ограниченном диапазоне, но не уходят в бесконечность. Только неординарные глобальные потрясения экономики могут развалить рынок как саморегулируемую систему.

   Таким образом, с точки зрения макроэкономической модели рынок можно представить как контур управления с обратной связью. В цепи прямой связи этого контура находится динамический объект с входной переменной в виде разбаланса покупок и продаж на рынке ∆V(t) и выходной переменной в виде цены C данного торгуемого инструмента (см. формулу (1)). В цепи обратной связи находится некоторый регулятор, реагирующий на фактическую цену данного инструмента C и в зависимости от нее изменяющий разбаланс покупок и продаж на рынке∆V (см. формулы (2), (3)). Данный регулятор не является реальной физической конструкцией, а его функции выполняет совокупность всех трейдеров путем совершения сделок купли/продажи. Ниже на рисунке 1 показана блок-схема рынка, как управляемого объекта.                 

       

          Рис.1. Блок-схема рынка, как управляемого объекта.

Устройство и функции торговой системы.

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

      Как известно  торговля на финансовых рынках предполагает залог (маржу), вносимый трейдером брокеру, с целью не перекладывать на брокера свои убытки при плохой торговле. Такая торговля с залогом называется маржинальной торговлей. Для модели автоматической торговой системы существует понятие эффективности маржинальной торговли. Этот параметр системы должен сочетать в себе две величины: прибыльность системы за определенный период времени и ее просадку за этот же период. Эффективность торговли можно оценить как отношение прибыльности к максимально возможной просадке системы за выбранный период времени.

   Рассмотрим детально работу торговой системы в описанной выше последовательности. Развернутая блок-схема алгоритма торговой системы приведена на рисунке 2.

   

Рис. 2. Блок-схема алгоритма торговой системы.

   Главным блоком любой торговой системы является блок прогноза, показывающий, куда будет изменяться цена торгуемого инструмента. Входной переменной этого блока является рыночная цена C, а выходной – ее прогноз X. Следующий блок - блок сделки в зависимости от прогноза цены формирует индикатор R открытия и закрытия сделок нужного типа (покупка или продажа) и нужного объема сделки V. Эта информация в виде приказов на сделку передается  на платформу брокера, обслуживающего данного трейдера. Следующий блок - блок расчета прибыли дублирует функции брокерской платформы, на которой показываются характеристики данной сделки: баланс, маржа, текущая прибыль сделки. Такое дублирование необходимо для определения статистических показателей торговли, вычисляемых на истории системы. В отличие от брокера, указанные показатели вычисляются не только для действующих сделок и для текущего момента времени, а для всех сделок, сформированных за выбранную историю системы. Тем самым на истории системы можно статистически вычислить основные показатели эффективности торговли. Это прибыль за определенный фиксированный период (например, один месяц) в процентах от заложенного депозита, максимальная просадка системы  за выбранную историю и по ней риск торговли (отношение максимальной просадки к депозиту в процентах), число сделок и процент прибыльных сделок за историю системы.

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

Алгоритмы блока прогноза.

   В современных системах автоматической торговли применяют, в основном, два алгоритмических принципа прогноза.

  1. Скользящее усреднение фактической рыночной цены за выбранный фиксированный период времени, предшествующий текущему моменту времени t.
  2. Принцип коридора цен.

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

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

   Понятно, что как бы ни вела себя фактическая цена внутри коридора цен (какие бы зигзаги не демонстрировала) - это не влияет на качество прогнозов экстремумов цены. Можно сказать, что принцип коридора цен исключает запаздывание таких прогнозов. Но здесь возникают другие трудности. Это - прежде всего формирование границ коридора цен. Как известно, экстремумы фактических цен происходят не на одинаковых уровнях, так как амплитуды колебаний цен различны. Это следствие случайной природы рыночных цен. Поэтому нельзя проводить границы коридора точно по уже совершившимся экстремумам цены. А главное нельзя просто продолжать эти границы на текущий момент времени. В силу различия экстремумов цен по их амплитуде, необходимо как-то отслеживать границы коридора. Я применил следующий способ такого отслеживания. Как только фактическая цена протыкает существующую границу наружу коридора, то эта граница начинает следовать за фактической ценой. Тем самым коридор цен расширяется. Если же фактическая цена уходит внутрь коридора, то границы коридора медленно сближаются, обеспечивая постепенное сужение коридора. Экстремум же фактической цены индицируется (прогнозируется) по факту протыкания ею границы коридора и последующего возвращения внутрь коридора. На рисунке 3 показаны графики цены C, нижней Xн и верхней Xв границ коридора и индикаторы момента покупки (минимума цены) и момента продажи (максимума цены), применительно к валютной паре EUR/USD.

    

Рис. 3. Графики цены C, нижней Xн и верхней Xв границ коридора и индикаторы момента покупки (минимума цены) и момента продажи (максимума цены).

Алгоритм блока сделки.

    Этот алгоритм реализуется логическими соотношениями (формулами алгебры логики) вида: «если…, то…, иначе…». Например: если одновременно Сt-1>Xвt-1 и Ct<Xвt, то Rt=-1, иначе если одновременно Сt-1<Xнt-1 и Ct>Xнt, то Rt=1, иначе Rt=Rt-1. Эта логическая формула означает следующее. Если одновременно предыдущее значение фактической цены Сt-1 больше верхней границы Xв, а текущее значение этой цены Сt меньше этой границы (это эквивалентно протыканию верхней границы вверх в момент t-1 и возврат обратно внутрь коридора в момент t), то индикатор экстремума цены Rt индицирует максимум цены (тренд цены из положительного меняется на отрицательный). Если же все происходит аналогично для нижней границы Xн (протыкание нижней границы вниз  и затем возврат внутрь коридора), то индикатор Rt индицирует минимум цены. А если не происходит протыкания границ (пока фактическая цена находится внутри коридора), то индикатор экстремума не меняет знака (остается прежним Rt=Rt-1). Логика индикации экстремума цены может быть и более сложной. Например, может учитываться факт подтверждения прогноза экстремума цены аналогичными прогнозами для других валютных пар или независимым прогнозом тренда цены этой же валютной пары по методу скользящего усреднения. Выходной переменной блока сделки является приказ брокеру на закрытие сделки и открытие сделки противоположного типа. Это происходит в момент времени, когда индикатор R меняет свой знак.

    Отметим здесь, что в отличие от инструкций рыночных академиков, в данной торговой системе нет прогнозирования наличия тренда цены или его отсутствия - поведения цены в фазе флэта. Соответственно, нет понятия входа в рынок и открытие сделки или выхода из рынка и закрытие сделки. В моих торговых системах всегда (в каждый момент времени) действует сделка одного из типов (покупки или продажи). Это следствие того, что прогнозируется и учитывается в торговле не тренд рыночной цены, а моменты ее экстремумов. 

Алгоритм блока расчета прибыли.

    Как уже говорилось выше в разделе «Устройство и функции торговой системы» расчет прибыли в торговой системе не нужен, так как эта функция выполняется на брокерской платформе. Однако, он нужен для оперативной настройки констант алгоритма торговой системы. Возникает вопрос: почему нужна такая оперативная настройка алгоритма? Ведь в конкретной торговой системе применяется вполне конкретная модель и соответствующий ей конкретный алгоритм. Дело в том, что модель работы любого объекта отражает законы, по которым он функционирует. Если эти законы неизменны во времени и правильно учтены в модели, то константы алгоритма, если и нужно настраивать, то один раз до начала эксплуатации системы. Это справедливо для детерминированных объектов, свойства которых не изменяются со временем. Но рынок представляет собой не детерминированный объект и законы его поведения во времени меняются. Такие законы поведения имеют вероятностную природу и называются стохастическими. Соответственно и объекты, функционирующие по таким законам, называют стохастическими. Это означает, что и модель такого стохастического объекта может изменяться. Значит должен изменяться (подстраиваться) алгоритм системы. Именно поэтому целесообразна регулярная настройка констант алгоритма автоматической торговой системы. Но цель настройки торговой системы – это обеспечение ее максимальной прибыльности. А показатели такой прибыльности фиксируются на платформе брокера. Однако, для оперативной настройки системы такие показатели нужны не только в текущий момент времени, но и за всю историю системы. Причем при настройке системы на ее истории константы алгоритма варьируются, и алгоритм системы естественно меняется на этой истории. Чтобы реализовать такие изменения на истории, необходимо при каждом изменении констант алгоритма пересчитывать показатели прибыльности на всей  истории, а не только в текущий момент времени. Именно такую функцию и выполняет блок расчета прибыли.

    В блоке расчета прибыли фиксируется и запоминается рыночная цена в момент открытия сделки. Затем считается текущая прибыль открытой сделки (потенциальная прибыль Pпот) через разницу цены в момент открытия и цены в текущий момент времени. В момент закрытия сделки, т. е. в момент смены знака индикатора экстремума Rt  получается фиксируемая прибыль Pt=Pпотt. В этом же блоке вычисляется просадка системы Pпр, как минимальное значение текущей прибыли за историю системы (максимальный убыток). Кроме того, фиксируется количество сделок и процент прибыльных сделок за историю.

Алгоритм блока настройки.

    В этом блоке настраивается модель торговой системы путем подбора констант ее алгоритмов. Эффективность настройки системы определяется показателями прибыльности торговли. Есть целый ряд таких показателей:

- прибыль за фиксированный период (например, месяц), отнесенная к депозиту,

 - риск торговли в виде отношения суммы максимальной просадки системы и маржи, отнесенной к депозиту,

- число сделок за историю,

- процент прибыльных сделок.

Для настройки системы следует выбрать один глобальный показатель, максимум которого за историю системы однозначно характеризует эффективность торговли. В качестве такого глобального показателя я выбрал отношение прибыли за выбранный период к риску торговли. Максимум этого критерия достигается варьированием настраиваемых констант алгоритма путем их перебора в выбранном диапазоне значений. Такая процедура реализуется макросом в Excel. Можно сказать, что такая регулярная (оперативная) настройка системы отслеживает изменчивость модели рынка.

Структура компьютерной программы системы.

    Все алгоритмы торговой системы реализованы у меня на языке  Microsoft Excel. Надо сказать, что для программирования алгоритмов динамических объектов существуют гораздо более экономные языки реального времени, например, язык СИ++. Но действия и результаты расчетов по этим языкам очень компактны, но не столь наглядны как Excel. На Excel видны все промежуточные результаты расчетов для каждого момента времени на истории системы. Алгоритмы торговой системы реализуются на Excel в виде отдельных листов. Каждый лист имеет свое название и на нем реализуется определенная часть алгоритма системы. Например, в моей системе комбинированной торговли Sestem 46 это следующие листы:

  • Листы «EURUSD», «AUDUSD», «NZDUSD», «USDCAD», «USDCHF», «USDJPY». На каждом из этих листов программируются алгоритмы блока прогноза, блока сделки и блока расчета прибыли применительно к указанным валютным парам.
  • Лист «мод общ». На этом листе вычисляются суммарные значения потенциальной (текущей) прибыли, фиксируемой прибыли, и просадки для всех перечисленных валютных пар.
  • Лист «итоги». На этом листе вычисляются итоговые показатели торговли, такие как расчетная месячная прибыль в % от депозита, риск торговли в %, число сделок за историю, процент прибыльных сделок. Здесь же фиксируются показатели, выводимые на брокерской платформе (баланс, маржа, текущая прибыль).
  • Лист «данные». На этом листе заполняется архив данных из платформы за выбранный интервал, начиная от текущего момента времени и назад в прошлое. Здесь же выводится история приказов системы на сделки по каждой торгуемой валютной паре: объем и тип сделки для каждого момента времени истории, включая текущий момент.

Каждый лист оформляется в виде таблицы. В верней строке (в шапке таблицы) выводятся названия и обозначения рассчитываемых переменных. Каждой строке таблицы отвечает один момент времени истории, а самая нижняя строка отвечает текущему моменту времени t=1(отсчет времени идет назад в прошлое). Внизу под таблицей вычисляются итоговые значения для каждой переменной: среднее значение, сумма, число элементов, максимальное и минимальное значения за историю.

Заключение.

    Описаны структура, алгоритмы и программное обеспечение торговых систем автора. Эти системы позволяют автоматически торговать по принятому алгоритму, настраивать алгоритм на максимум выбранного критерия эффективности торговли и тестировать систему. В процессе тестирования пользователь может оперативно настраивать и варьировать алгоритмы и сравнивать результаты за историю системы. Конкретные  торговые системы автора приводятся на сайте www.teoryforex.ucoz.ru .

Категория: Мои статьи | Добавил: Михаил (19.07.2016)
Просмотров: 444 | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: