Знания | Статьи | Системы / Стратегии

Запас торговой системы по спреду и депозиту

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

Как правило торговая система - это последовательность сделок, совершаемая в соответствии с определёнными правилами. У сложных торговых систем сделки могут быть взаимозависимыми. К примеру последующие сделки могут зависеть от результатов предыдущих сделок. Например в случае просадки последующие сделки могут иметь изменённый уровень взятия прибыли по сравнению с обычными условиями, когда просадка отсутствует. Соответственно изменение спреда в худшую сторону может не только "откусить" часть прибыли у каждой конкретной сделки, но ещё и изменить саму последовательность сделок. А это уже может грозить поломкой самого алгоритма торговой стратегии. Поэтому нередко можно наблюдать ситуацию когда запуск одного и того же эксперта на демо и на реале может приводить к диаметрально противоположным результатам. Причиной этого явления наряду с простым уменьшением прибыли каждой отдельной сделки может являться и поломка самого алгоритма торговой стратегии, вызванная время от времени расширяющимся спредом на реальном счёте.

Поэтому трейдер прежде чем ставить эксперта на реальный счёт должен заранее смоделировать ситуацию с расширенным спредом, дабы знать чем обернётся для счёта расширение спреда до того или иного значения. Иными словами трейдер должен знать так называемый запас торговой системы по спреду.

Как его можно определить?
Очевидно, что наиболее простой способ это сделать - это прогнать бэктесты в тестере стратегий MetaTrader4 при разном значении спреда.

У MetaTrader4 отсутствуют штатные средства изменения спреда в тестере стратегий, поэтому для этих целей нужно воспользоваться программой сторонних производителей, например MT4i Spread Co ntroller v2. Данная программа является бесплатной. Но для её загрузки необходимо пройти простую стандартную регистрацию на сайте.

Архив MT4iSpreadControllerSetup.zip содержит инструкцию и инсталлятор, который записывает требуемые файлы в директорию, куда проинсталлирован MetaTrader4.

После запуска терминала необходимо запустить скрипт MT4i - Spread Controller v2 на любом инструменте, на любом таймфрейме. Это действие активирует Spread Controller до тех пор пока терминал не будет перезагружен. При запуске теста стратегии в появившемся окне нужно указать требуемый спред, своп и комиссию (при необходимости). По умолчанию данные параметры берутся из терминала. По окончании теста можно запускать тестер ещё требуемое количество раз, задавая каждый раз новое значение спреда, и получая очередной результат работы стратегии.

В качестве примера ниже приводятся результаты тестов некой стратегии, полученные при спреде 5, 50, 75 и 100 поинтов в пятизнаке на инструменте EURUSD на периоде истории с 1999 по 2013 год. Возможные комиссии в тестах не учитываются.

При идеальном значении спреда, равном 5 поинтов в пятизнаке, мы получаем довольно оптимистичную картинку тестов, приведённую ниже. Максимальная просадка не превышает 8000 USD.

Запас торговой системы по спреду и депозиту


При более жёстком спреде (50 поинтов), который бывает на выходе новостей, мы получаем уже более скромную картинку. Видно что итоговая прибыль упала примерно в 2 раза по сравнению с идеальным вариантом спреда, представленным выше. А также во второй половине графика доходности присутствует достаточно длительная просадка счёта сроком более двух лет и размером примерно 17000 USD, что уже говорит о том, что баланс счёта на протяжении этих самых двух лет должен быть достаточным, чтобы выдержать такую просадку.



Спред в 75 поинтов качественно не сильно меняет предыдущую картинку. Меняются в основном её численные параметры. Итоговая прибыль становится ещё меньше и увеличивается величина максимальной просадки до 20000 USD, что в свою очередь выдвигает более жёсткие требования к размеру средств на счёте для того, чтобы счёт смог дожить до лучших времён.



При значении спреда, равном 100 поинтов, стратегия полностью сливает депозит уже в 2002 году, несмотря на то, что на первой половине графика (на протяжении более года!) система показывает некоторую доходность. Анализируя изменения, представленные на предыдущих двух графиках, можно сделать предположение о том, что счёту просто напросто не хватило средств дожить до лучших времён и первая случившаяся просадка превысила депозит, размер которого в максимуме достигал 19000 USD.



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

Расстановка тейкпрофитов и стоплоссов по Феншую

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

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

Если рассматривать лишь только сами высказывания, то вполне очевидно, что отсутствует упоминание о некоторых условиях, для которых указанные выше рекомендации будут применимы. И таким образом спор со стороны выглядит как спор о том, с какой стороны (тупой или острой) нужно разбивать яйцо. А между тем детали как всегда очень важны!

Вполне понятно, что некие соотношения между величиной стоплосса и тейкпрофита закладываются самой торговой системой. Но как всегда здесь встаёт 2 важных вопроса:
1. На основании чего была выбрана конкретная величина тейкпрофита/стоплосса;
2. Как выбиралось соотношение между тейкпрофитом и стоплоссом.

Ответы на данные вопросы будем искать для стратегии, в которой тейкпрофит и стоплосс выставляются сразу же при открытии позиции и далее никак не изменяются до закрытия позиции по тейкпрофиту или стоплоссу.

Во многих книжках колебание цены на рынке считается нормально распределённым (для простоты анализа). Но на самом деле это далеко не так. Реальное положение дел с распределением рыночной цены заметно сложнее. Согласно Мандельброту оно ближе всего к распределению Леви, то есть занимает некое промежуточное положение между Гауссовым нормальным распределением и степенным распределением Парето. Это обстоятельство для рассмотрения исходного вопроса о стоплоссах и тейкпрофитах оставим в качестве домашнего задания для пытливых умов и пойдём традиционным путём, рассматривая нормальное распределение. Суть это не меняет, а меняет только численные данные. На диаграмме голубым цветом представлено стандартное нормальное распределение (дисперсия и СКО равны 1).



Однако как же можно связать картинку нормального распределения с тейкпрофитами и стоплоссами?
А связать их можно следующим образом. Представим себе, что цена после открытия позиции меняется каким-то произвольным образом в рамках нормального распределения. То есть с момента открытия позиции цена с заданной вероятностью отклонится на величину X (или же другими словами побывает в разных точках с заданной частотой). Тогда мы можем оценить конечный убыток или прибыль от попадания цены в ту, или иную точку заданное число раз, если бы в этой точке у нас стоял стоплосс или тейкпрофик соответственно. Это делается очень просто. Достаточно перемножить значение отклонения X на количество раз (частоту). Или же, плавно переходя к тому, что у нас изображено на графике, для получения значения итогового убытка или прибыли необходимо перемножить отклонение X на функцию вероятности f(x). Результат данного перемножения отображает коричневая кривая.

Что мы видим на ней? На ней видно, что например маленькие отклонения вблизи нуля, несмотря на высокую частоту оказывают совсем небольшое влияние на депозит. Далее с ростом отклонения X, несмотря на уменьшение частоты достижения этих рубежей ценой, происходит рост финансового воздействия на депозит за счёт роста размера отклонения. Максимум воздействия для показанного стандартного нормального распределения достигается при X равном 1, или же равным СКО данного нормального распределения (так называемая точка перегиба графика). Далее финансовое влияние с увеличением отклонения X начинает закономерно убывать в виду уменьшения частоты таких событий. И в итоге при отклонении X > 3 финансовое влияние на депозит исчезает.

Из рассмотрения данной диаграммы вполне закономерно появляется предположение о том, что для того, чтобы собрать максимально возможное количество денег для данных колебаний цены необходимо устанавливать тейкпрофит в точку, где финансовое влияние колебаний максимально. То есть точка тейкпрофита X должна быть равна СКО, которое для данного распределения равно 1.

С тейкпрофитом определились. Что со стоплоссом? Со стоплоссом немного сложнее. Коричневая кривая при своём движении от нуля и далее обладает глобальным максимумом. Соответственно такая кривая может быть пересечена одним и тем же горизонтальным уровнем дважды для каждой из полуосей абсцисс. Это означает, что существует 2 точки, обладающих идентичным финансовым результатом. И как раз отсюда вытекает что в споре о том, что должно быть больше стоплосс, или же тейкпрофит правы как ни странно ОБЕ СТОРОНЫ! Но разумеется только при условии, что они действительно понимают о чём говорят . А суть того, что они должны понимать нарисована на картинке. То есть если обе стороны поставят тейкпрофит обязательно в точку максимума финансового эффекта, а стоплоссы в одну или другую точку, имеющую идентичный финансовый эффект, то итоговый результат торговли должен оказаться просто одинаковым в плане полученной прибыли. Отличия возможны лишь только в просадках для обоих вариантов стоплоссов. Предположительно для варианта когда стоплосс больше тейкпрофита на счёте случится большая просадка на той же серии убыточных сделок.

Рассмотрим несколько численных примеров с графика.

Пример 1: (красная пунктирная линия)
Тейкпрофит=1, финансовый результат Тейкпрофита=0.24
Стоплосс1=0.3, финансовый результат Стоплосса1=0.11
Стоплосс2=2, финансовый результат Стоплосса2=0.11
При равенстве Стоплосс1=Стоплосс2 финансовое влияние на депозит положительное 0.24-0.11=0.13
При этом обратите особое внимание что Стоплосс1 меньше Тейкпрофита в 3,3 раза, а Соплосс2 наоборот больше Тейкпрофита в 2 раза. Но финансовый результат на депозит будет идентичным! Парадокс.

Пример 2: (фиолетовая пунктирная линия)
Тейкпрофит=1, финансовый результат Тейкпрофита=0.24
Стоплосс1=0.5, финансовый результат Стоплосса1=0.17
Стоплосс2=1.6, финансовый результат Стоплосса2=0.17
При равенстве Стоплосс1=Стоплосс2 финансовое влияние на депозит положительное 0.24-0.17=0.07
При этом обратите особое внимание что Стоплосс1 меньше Тейкпрофита в 2 раза, а Соплосс2 наоборот больше Тейкпрофита в 1.6 раз. Но финансовый результат на депозит также парадоксально идентичный. Единственное отличие лишь в том, что он стал меньше по сравнению с первым примером.

Пример 3: (пример людей, которые "не в теме" и спорят об остроконечности/тупоконечности раскалывания скорлупы яйца)
Тейкпрофит=2, финансовый результат Тейкпрофита=0.11
Стоплосс1=1, финансовый результат Стоплосса1=0.24
Финансовый итог получился отрицательным 0.11-0.24=-0.13
То есть человек поставил тейкпрофит в 2 раза больше стоплосса, но поскольку он сделал это "не совсем там", где нужно, то успешно слил депозит.

Тейкпрофит=0.5, финансовый результат Тейкпрофита=0.17
Стоплосс2=1, финансовый результат Стоплосса2=0.24
Финансовый итог получился отрицательным 0.17-0.24=-0.07
То есть человек поставил тейкпрофит в 2 раза меньше стоплосса, но поскольку он сделал это "не совсем там", где нужно, то успешно слил депозит.

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

Недооценка влияния проскальзываний на торговую систему является весьма распространённым явлением. Одним из вариантов уменьшения влияния проскальзываний на торговлю является уменьшение величины стоплосса. Широкое распространение получило мнение о том, что размер этой корректировки должен быть равен величине проскальзывания, дабы сохранить прежний риск на сделку.
Но так ли это на самом деле? Действительно ли уменьшение стоплосса на размер проскальзывания сохраняет прежний риск? Попробуем разобраться более детально, используя разработанную модель системы, у которой результат сделок распределён по нормальному закону.

На диаграмме ниже представлена коричневая кривая финансового результата сделок. Более подробно о ней в описании модели.



Что мы видим на рисунке? На рисунке представлены две коричневых кривых. Сплошной линией обозначена оригинальная кривая финансового результата сделок, которая существует при отсутствии проскальзываний. А пунктиром обозначена кривая, которая возникает в случае возникновения проскальзывания в какой-то конкретной сделке.

Зелёными точками обозначены тейкпрофиты, а красными стоплоссы. При этом
TP - начальный (планируемый) тейкпрофит сделки,
TP1 - тейкпрофит сделки после возникновения проскальзывания,
SL - начальный (планируемый) стоплосс,
SL1 - стоплосс после возникновения проскальзывания.
d - проскальзывание.

Легенда построения графика состоит в следующем. При открытии позиции рыночным или отложенным ордером торговая система задаёт текпрофит X(TP) и стоплосс X(SL). На открытии происходит скольжение, которое обозначается величиной d по оси X. Из-за этого происходит уменьшение реального значения тейкпрофита (точка X(TP1)) и увеличение размера стоплосса (точка X(SL1)).
С точки зрения кривой финансового результата происходит следующее действие. Поскольку мы знаем, что максимум финансового результата для стратегии остался в прежней точке, относительно которой изначально планировалось войти в рынок, тоесть он никуда не ушёл, то новая кривая финансового результата, построенная относительно реальной точки открытия со скольжением смещается влево и вниз, и показана пунктирной линией. При этом соответственно проекция точки SL1 на "подскользнувшейся" кривой финансового результата показана точкой SL2.

Что означают такие преобразования для самой торговли? В цифрах они означают следующее. При скольжении ордера на величину d, которая составила 17% к величине тейкпрофита X(TP) и 50% к величине стоплосса X(SL) произошло уменьшение финансового результата Y(TP1)-Y(SL2) к величине планируемого Y(TP)-Y(SL) в 5,8 раз. Или другими словами сделка с указанным скольжением будет иметь всего лишь 17% эффективности по отношению к планируемой изначально.

Теперь посмотрим как ведёт себя финансовая эффективность стратегии при подтягивании стоплосса на величину проскальзывания - метод, которым пользуются некоторые управляющие.
Подтягивание стоплосса вслед за проскальзыванием (точка SL3) эквивалентно фиксации стоплосса по координате X для обоих кривых, то есть X(SL3)=X(SL1). При этом согласно графическим построениям уменьшение финансовой эффективности Y(TP1)-Y(SL3) к величине планируемой Y(TP)-Y(SL) произойдёт лишь только в 2 раза. То есть такой метод коррекции стоплосса, как подтягивание на величину проскальзывания, для приведённого выше случая эффективен лишь только на 50%. И в данном примере нельзя говорить о том, что риск (а значит эффективность стратегии) осталась на прежнем уровне.

Так что же теперь делать? Наиболее рациональным представляется поиск такой точки на "подскольнувшейся" кривой, которая сможет обеспечить планируемую финансовую эффективность сделки. И эта точка SL4. Для неё выполняется равенство планируемой и скорректированной финансовой эффективности.

Как можно эту точку найти? Для этого нужно применить немного математики, представленной формулами ниже.



(1) описывает нормальное распределение.
(2) описывает кривую финансового результата.
(3) формулирует условие равенства планируемой и полученной финансовой эффективности.
В (4) подставлены начальные и итоговые значения тейкпрофитов и стоплоссов.
(5) - это вид предыдущей формулы после сокращений множителей.
В (6) подставлено значение проскальзывания d и величина c, на которую нужно уменьшить размер стоплосса для выполнения равенства планируемой и итоговой финансовой эффективности.
(7) - итоговое выражение преобразований. В этом выражении известными являются все величины, кроме величины необходимой коррекции с, которую необходимо найти.

Вид итогового выражения не позволяет явно выделить требуемую величину коррекции c. Поэтому для её нахождения необходимо использовать численный метод перебора значений величины c пока выражение (7) не станет равным нулю.

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

Как правило начинающие трейдеры мало внимания уделяют не только такому понятию как риск, но также спреду и проскальзываниям. По умолчанию среди большинства трейдеров бытует мнение о том, что увеличение спреда, а также наличие проскальзываний просто снижает итоговую прибыль, немного уменьшая наклон кривой доходности. И это всё! О второй части реального положения дел мало кто вообще задумывается. А между прочим увеличение спреда и проскальзывания - это не только лишь относительно безобидное уменьшение итоговой прибыли, но во многих случаях ещё и существенное влияние на торговую стратегию, что уже совсем не безобидная вещь.

Система "Пробой канала"
Рассмотрим влияние спреда на торговую стратегию "Пробой канала". Действия торгового алгоритма состоят в следующем.
1. На основе анализа изменений цены на заданном интервале времени выбирается горизонтальный канал. Анализ проводится как по ценам Bid, так и по ценам Ask. Цену Ask принимаем равной сумме цены Bid и спреда.
2. Выставляются стоповые ордера на границах канала. При этом ордер SELLSTOP ставится по цене Bid на нижней границе канала, а ордер BUYSTOP ставится по цене Ask, или что то же самое по цене Bid+spread, на верхней границе канала. (Поскольку в реальности спред является величиной, способной меняться на каждом тике, то можно использовать его среднее округлённое значение например за последний час/сутки, организовав автоматический подсчёт спреда в самом советнике).
3. После пробоя канала открытая позиция может быть закрыта либо по стоплоссу, установленному сразу при выставлении ордера, либо при достижении заданной прибыли. При анализе текущей прибыли используются такие параметры счёта как баланс (AccountBalance) и эквити (AccountEquity).

Ниже представлены результаты тестирования такой системы при разном спреде: 1, 35 и 80 пунктов в пятизнаке. Тест проводился на лоте 0.1.





Для удобства визуального и цифрового сравнения результатов тестирования графики кривой доходности размещены на одной диаграмме, а наиболее существенные цифровые данные сведены в Таблицу 1




Визуальный анализ кривых доходности говорит о наличии существенных различий в самом поведении кривых на идентичных временных участках времени (разные зубчики на кривых). Это уже подтверждает факт наличия некоторых изменений в поведении торговой системы при изменении размера спреда. Но для надёжности посмотрим ещё и цифры в таблице. Главный параметр, подтверждающий расхождение в поведении торгового алгоритма, является количество сделок. Мы видим, что количество сделок выросло при росте спреда! Хотя изначально мы такого не ожидали, так как согласно широко распространённому постулату должен был измениться лишь только наклон кривой доходности и всё?!

Модификация
Так что же можно предпринять, чтобы ликвидировать наблюдаемое расхождение хотя бы в тестере МТ4?

Для того, чтобы попытаться ликвидировать расхождение в торговом алгоритме можно попытаться подсунуть ему для анализа некий искусственный источник данных, который давал бы одинаковые показания при любом значении установленного спреда. Мы знаем, что от спреда никак не зависит цена Bid, но зависит цена Ask. Поэтому модифицируем торговый советник так, чтобы он выставлял ордера и закрывал открытые позиции, предполагая, что он работает в неких идеальных торговых условиях, для которых спред равен 1 пункту. То есть система должна выполнять такие же торговые действия, что и при неизменном спреде в 1 пункт. Хотя сами числовые значения стоплоссов, тейков и цен открытия должны рассчитываться на основе реальных условий.

Модификации, которые были проведены над представленной выше системой, заключались в следующем:

1. Для анализа изменения цены вместо цены Ask была взята цена Ask1. Это цена Ask при спреде в 1 пункт в пятизнаке (см. диаграмму ниже).



В коде советника это выглядит как Ask1=Bid+0.00001

2. Второй пункт торговой стратегии остаётся без изменений. Единственное, на что следует обратить внимание, - это если в процессе определения цены для выставления ордера BUYSTOP уже была учтена цена Ask1. Тогда правильная цена для установки ордера BUYSTOP будет отличаться на величину delta=Ask-Bid-0.00001 (см. диаграмму выше).

3. Наибольшие сложности были с приведением величин баланса и эквити к параметрам идеальной системы со спредом 1. Суть приведения состоит в том, что требуется к текущим значениям баланса и эквити счёта добавить разницу значений, которую мы теряем на большем спреде. То есть к каждой закрытой и открытой позиции нужно добавить стоимость разницы в спреде. Пример как это может быть реализовано в программном коде ниже:

double _AccountBalance(string sym)
{
    double temp_account_balance=0;
    int i,closed_orders_number=0;

    int orderticket_to_remember=OrderTicket();

    for(i=0;i<OrdersHistoryTotal();i++)
    {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
        {
        if(OrderType()==OP_BUY || OrderType()==OP_SELL) closed_orders_number++;
        }
    }
    temp_account_balance=AccountBalance()+closed_orders_number*(delta/0.00001)*MarketInfo(sym,MODE_TICKVALUE)*initial_lot;

    OrderSelect(orderticket_to_remember,SELECT_BY_TICKET);

    return(temp_account_balance);
}


double _AccountEquity(string sym)
{
    double temp_account_equity=0,open_orders_money=0;
    int i,total_orders_number=0;

    int orderticket_to_remember=OrderTicket();

    for(i=0;i<OrdersTotal();i++)
    {
        if(OrderSelect(i,SELECT_BY_POS)==true)
        {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
            {
                open_orders_money=open_orders_money+OrderProfit()+OrderCommission()+OrderSwap();
                total_orders_number++;
            }
        }
    }
    temp_account_equity=_AccountBalance(sym)+open_orders_money+total_orders_number*(delta/0.00001)*MarketInfo(sym,MODE_TICKVALUE)*initial_lot;
    
    OrderSelect(orderticket_to_remember,SELECT_BY_TICKET);
    
    return(temp_account_equity);
}


Здесь переменная orderticket_to_remember хранит номер тикета, на котором находился курсор перед входом в функцию. Это полезно, так как функции вызываются при переборе ордеров в главном цикле в программе советника.
Не забудьте вставить в функции проверку MagicNumber(), если используете его.

При вычислении прибыли ордера в пунктах для идеальной системы необходимо добавлять величину delta к размеру реальной прибыли.

Модифицированная система
Результаты тестирования модифицированной системы представлены ниже.





Для удобства визуального и цифрового сравнения результатов тестирования системы графики кривой доходности размещены на одной диаграмме, а наиболее существенные цифровые данные сведены в Таблицу 2.




Даже при самом пристальном вглядывании в кривые нельзя найти каких-либо различий в поведении кривой особенно по сравнению с начальной системой, где эти различия видны при первом же вгляде на диаграмму. По цифрам также всё подтверждается. Общее количество сделок при любом спреде осталось неизменным!

То есть можно говорить о том, что для модифицированной системы величина спреда не оказала влияния на торговый алгоритм. Таким образом в случае внезапного увеличения жадности со стороны "партнёров" по ту сторону терминала торговая система не свалится в глубокое пике, которое отчётливо наблюдается у начальной системы при спреде 80, для которой формально случился маржинколл, так как абсолютная просадка превысила сумму первоначального баланса в 1000 USD.

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

Сравнивая полученную прибыль у обоих вариантов системы видно, что оригинальная система зарабатывает большую прибыль по сравнению с модифицированной. Однако ничего бесплатно не бывает! И повышенная прибыль оригинальной системой достигается за счёт того, что она просто дожидается, когда прибыль открытой позиции достигнет заданной. В итоге иногда система может и не дождаться целевых уровней цены. В такие моменты трейдеры обычно говорят: "Всего пару пипсов не дошла до тейка!" Хотя с точки зрения идеальной системы она тейк уже на несколько пунктов даже "перешла".

Ярким результатом того, к чему приводит такая практика, является результат тестирования оригинальной системы при спреде равном 80. При данном спреде формально на системе случился маржинколл. В то время как модифицированная система также была близка к критической черте, но не перешла её. То есть ситуация с модифицированной системой аналогична ситуации времён Кутузова - "сдаём Москву, но сохраняем армию, с помощью которой впоследствии возвращаем и Москву и всё остальное". Иными словами теряем возможную прибыль , но сохраняем торговый алгоритм в модифицированной системе.

Средняя прибыль на 1 сделку и профит фактор у оригинальной системы выше. Это прежде всего вызвано пересидкой-ожиданием заданной прибыли, как это уже отмечалось выше.

Абсолютная просадка у модифицированной системы значительно меньше. И даже при спреде в 80 пунктов абсолютная просадка меньше размера первоначального депозита в 1000 USD, что позволило системе по итогам тестирования показать даже некоторую прибыль. В противоположность оригинальная система при 80 пунктах спреда должна была получить маржинколл.

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

Очень важно обратить внимание на количество прибыльных и убыточных сделок. Если у оригинальной системы происходит заметное изменение соотношения между прибыльными и убыточными сделками в худшую сторону, то у модифицированной системы это изменение не превышает всего лишь 0,5%(!). Это служит ещё одним доказательством повышения устойчивости торгового алгоритма по отношению к спреду.

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

Оценка наклона кривых доходности
Оценку "правильности" наклона кривых доходности из-за спреда будем проводить следующим образом. Подсчитаем сколько убытка приносит каждый дополнительный пункт спреда. Для этого возьмём разницу в прибыли между идеальной системой со спредом 1 и системами со спредом 35 и 80 и разделим её на разницу в пунктах спреда.

Тогда для оригинальной системы получим, что для спреда в 35 пунктов каждый дополнительный пункт спреда обошёлся потерей итоговой прибыли в размере 135,95$, а для спреда в 80 пунктов этот же убыток составил 97,66$. Разница оказалась равной 28%, что является весьма существенным отличием, так как в соответствии с постулатом, приведённым в начале статьи, эти величины должны были бы совпасть.

Для модифицированной системы эти же величины составили191,62$ для спреда в 35 пунктов и 191,58$ для спреда в 80 пунктов. То есть оба значения практически полностью совпали! Таким образом для модифицированной системы оказалось верным предположение, что спред всего лишь только пропорционально наклоняет кривую доходности.

Проскальзывания
Формально проскальзывания при открытии ордеров можно считать дополнительным непредусмотренным спредом, который оплачивается за счёт уменьшения прибыли сделок. Поэтому все рекомендации, изложенные выше, вполне можно применить и к проскальзываниям. То есть для модифицированного торгового алгоритма совершенно неважно с каким проскальзыванием и спредом открылась позиция, так как он в своём анализе пользуется данными идеальной торговой среды со спредом 1. Разумеется речь здесь идёт о стандартных проскальзываниях, которые обычно не превышают размер ожидаемой прибыли. Если же при ожидаемой прибыли в 200 пунктов случилось проскальзывание на 500, то такую сделку лучше всего по возможности закрыть (и чем скорее, тем лучше!), так как она уже выпала из зоны ответственности торгового алгоритма и способна привести к непредсказуемым последствиям.

Важное дополнение к вопросу учёта проскальзываний состоит в том, что необходимо тем или иным образом запоминать информацию о цене открытия, которая была заявлена в отложенном ордере. Это можно сделать через:
а) комментарии к ордеру (OrderComments). Однако это не слишком надёжно, так как комментарии могут редактироваться брокером по своему усмотрению, например для добавления служебной информации о частичном закрытии/переоткрытии и т.д.
б) глобальные переменные терминала (GlobalVariables). В принципе это достаточно надёжно, за исключением вероятности потери информации о цене уже открытых позиций в случае поломки компьютера и отсутствия какого-либо дополнительного механизма бэкапа глобальных переменных налету. Насколько такой риск допустим каждый решает для себя лично на основании среднего времени нахождения открытых позиций в рынке. Например если позиции в рынке находятся менее 5% времени, то таким риском наверное можно просто пренебречь.
в) "Магический" идентификатор ордера (MagicNumber). Пожалуй самый надёжный вариант, так как не требует организации каких-либо специальных мер по организации бэкапа дополнительной информации как в предыдущем пункте.

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

double _OrderOpenPrice()
{
   string temp_comment;
   double ord_o_p,temp_price;
   
   temp_comment=StringConcatenate(prefix,OrderTicket(),"_op");
   if(GlobalVariableCheck(temp_comment)) ord_o_p=GlobalVariableGet(temp_comment);
   else 
      if(StringLen(OrderComment())==7)
      { 
         if(StringFind(OrderComment(),".")==1)
         {
            temp_price=StrToDouble(OrderComment());
            if(temp_price>0 && temp_price<5)
            ord_o_p=temp_price;
         }
      }
      else ord_o_p=OrderOpenPrice();

   return(ord_o_p);
}


Зная цену, по которой требовалось открыть позицию, советник может произвести перерасчёт цены для идеальной системы со спредом в 1 пункт и далее принять правильное торговое решение.

Оптимизация
Способ оптимизации модифицированного торгового алгоритма вытекает из его особенностей. Поскольку он нацелен на принятие решений на основе идеальных торговых условий, то значит и подбор параметром системы наиболее логично проводить при спреде 1. Такой спред вносит самое минимальное искажение в анализируемый поток ценовых данных и соответственно параметры, подобранные при таких условиях, будут максимально близки к оптимальным.

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

После подбора оптимальных параметров необходимо провести обязательное тестирование системы и сравнение результатов при разном спреде как показано выше. Это должно подтвердить устойчивость торгового алгоритма и определить минимально необходимый запас денег на счёте при торговле с предполагаемым спредом. Разумеется, что в предполагаемый спред необходимо заложить возможные риски.

ПАММ счета
Контроль спреда и проскальзываний на ПАММ счетах является нетривиальной задачей из-за переменного объёма средств в управлении, постоянно меняющегося из-за ввода/вывода средств инвесторами. В данном случае в торговом советнике необходимо группировать корректирующие цепочки в единые сделки для подсчёта прибыли. И далее производить расчёт баланса и эквити идеальной системы считая, что все сделки были проведены с одним и тем же размером лота. То есть советник необходимо обеспечить данными, которые он получает в тестере МТ4 на тесте с фиксированным лотом.

Таким образом в статье проиллюстрирован факт возможного влияния спреда на торговый алгоритм и предложена методика уменьшения негативных влияний спреда/проскальзываний на торговую систему.
При полном или частичном использовании материалов - ссылка обязательна http://elitetrader.ru/index.php?newsid=348638. Об использовании информации.