Академический Документы
Профессиональный Документы
Культура Документы
Как правильно
поставить стоплосс
«Если вы не будете принимать маленьких убытков, то рано
или поздно вас посетит праматерь всех потерь…»
Jack Schwager, «The New Market Wizards»
ÃËı‡ËÎ ÓÓβÍ
moysha1@usa.net
¬Î‡‰ËÏË ’Ó‰ÛÍ
khoduk@mail.ru
П
равильное определе- торым уровнем, а система в целом имеет са или с неправильно поставленным
ние стоп-лосса1 — за- положительное математическое ожида- стоп-лоссом.
дача не тривиальная. ние прибыли, существенно улучшает Ниже мы попробуем описать возмож-
Смысл этого стопа по- трейдерскую дисциплину и снимает ную последовательность действий и ло-
нятен — ограничение стрессы. гику рассуждений постановки фиксиро-
максимального разме- К определению размера стоп-лосса не- ванного стоп-лосса на примере своей
ра убытков определенным значением и, обходимо переходить после того, как на торговой системы.
таким образом, снижение риска разоре- руках уже имеется торговая система, де- Итак, у нас есть почти приличная, как
ния. При этом необходимо пройти меж- монстрирующая хорошие результаты. мы считаем, торговая система. Для того
ду двумя крайностями: Не стоит ждать от стоп-лосса чудес в ви- чтобы она стала совсем приличной, ей
1. Постановкой стопа слишком далеко, де значительного увеличения доходнос- необходимо иметь стоп-лосс. Помимо
что делает его неэффективным. ти — его задача, повторюсь, в уменьше- всего прочего, это будет способствовать
2. Слишком близким размещением, нии рисков. моему спокойному ночному сну...
приводящим к чрезмерно частому сра- Для определения оптимального стоп- Мы предпочитаем писать стопы сами,
батыванию стопа и снижающим общую лосса необходимо исследовать рынок, а не пользоваться встроенными в Мета-
эффективность торговой системы. иначе говоря, стоп-лосс должен быть сток. Одна из причин — чисто идеологи-
Обратите внимание, что задачами объективным. Недопустим субъектив- ческая. Мы полагаем, что на нашем мало-
стоп-лосса является не уменьшение или, ный подход, когда трейдер определяет ликвидном с технической точки зрения
тем более, предотвращение потерь, а стоп-лосс исходя из того, каким капита- рынке для увеличения эффективности
только ограничение их максимального лом он оперирует и какую долю от это- системы нежелательно пользоваться для
размера. Потери на рынке неизбежны и го капитала он может относительно без- получения сигналов торговых систем це-
являются частью торгового плана. болезненно потерять в ходе одной сдел- нами закрытия, открытия, максимума
Помимо ограничения максимального ки. Рынку глубоко безразлична ваша или минимума, поскольку они часто но-
размера убытков стоп-лосс выполняет готовность к потерям той или иной сте- сят случайный характер. Для того чтобы
еще одну важную задачу психологичес- пени тяжести, оптимальный стоп-лосс представить отличие нашего рынка от
кого плана: наличие заранее определен- зависит только от характера рынка. Ес- «нормального» западного, нужно заме-
ной точки выхода из позиции, которая ли полученная после исследования тить, что весь объем РТС за день — это
оказалась убыточной, способно значи- рынка величина оптимального стоп- примерно 15–20 секунд торговли акция-
тельно уменьшить эмоциональные пе- лосса окажется слишком велика для ми Microsoft. Понятно, что при таком
регрузки у трейдера. Понимание того, вас — тогда лучше вообще не торговать объеме на западном рынке около мини-
что убытки заранее лимитированы неко- этот рынок, чем торговать без стоп-лос- мальных, максимальных цен на откры-
1
Иногда этот вид стопов также называют «стоп на основе money management», или «money management stop».
К сожалению (или к счастью), Метасток не позволяет ис- Итого, целиком конструкция стоп-лосса для длинных пози-
пользовать во встроенных стопах никаких значений, кроме от- ций выглядит следующим образом:
крытия, закрытия, минимума или максимума. Поэтому для ис-
пользования в стоп-лоссе средней цены приходится писать Enter.trade: = условия открытия длинных позиций;
конструкцию стоп-лосса самостоятельно. На самом деле это не Close.trade: = условия закрытия длинных позиций;
только не трудно, но еще и полезно — понимание того, как ра- Position:= HighestBars (Close.trade) >= HighestBars (Enter.trade);
ботает стоп-лосс, позволяет в последующем подходить творче- Open.Price: = ValueWhen (1, Position = 1 and ref (Position, 81) = 0,
ски к его модификации. В принципе описанный ниже подход AvgPrice);
позволяет использовать в качестве стопа значение любого ин- Full.Price: = Open.Price ∗ (100 + значение комиссии в %)/100;
дикатора, а не только средней цены за период. AvgPrice < Full.Price ∗ ((100 — opt1) / 100)
Логику составления стоп-лосса на языке Метастока можно Для коротких позиций так:
представить так: Enter.trade: = условия открытия коротких позиций ;
1. Сначала надо выделить те участки цен, которые приходятся на Close.trade: = условия закрытия коротких позиций ;
открытые позиции, то есть те фрагменты рыночной динамики, Position: = HighestBars (Close.trade) >= HighestBars (Enter.trade);
на которых в принципе возможно срабатывание стоп-лосса. Open.Price: = ValueWhen (1, Position = 1 and ref (Position, 81) = 0,
В отличии от языка продуктов фирмы Omega Research AvgPrice);
(TradeStation, SuperChart и д. р.), Метасток не умеет сам опреде- Full.Price: = Open.Price ∗ (100 — значение комиссии в %)/100;
лять текущее состояние позиций, что является существенным AvgPrice > Full.Price ∗ ((100 — opt1)/100)
недостатком его языка, затрудняющим создание торговых
стратегий. Мы определяем текущую позицию, сравнивая пери- Заменяя AvgPrice на любое другое значение — Close, Open,
оды времени, прошедшие после последнего сигнала на откры- High, Low или даже значение какого-нибудь индикатора,
тие позиций и последнего сигнала на закрытие позиций: можно привязать стоп-лосс к любому другому показателю.
Далее, после внесения данного фрагмента кода в условия
Enter.trade: = условия открытия позиций; закрытия сделки в окне System Editor можно приступать к те-
Close.trade: = условия закрытия позиций; стированию. За шаг при оптимизации лучше взять значение
Position: = HighestBars(Close.trade) > HighestBars(Enter.trade); в один процент.
После проведения оптимизации начинается самое важ-
Теперь мы имеем в своем распоряжении функцию Position, ное — анализ полученных результатов.
которая возвращает значение 1 при открытой позиции и значе- Для подготовки данных к анализу мы используем набор
ние 0 — при закрытой. макросов в среде Excel, позволяющий автоматически рассчи-
2. Следующий шаг состоит в определении «опорной» цены, для тывать ряд важных показателей доходности и риска системы
которой отсчитывается значение стоп-лосса. Обычно в каче- на основании результатов тестирования. Данный набор мак-
1
Open Interest — число открытых фьючерсных контрактов на момент закрытия торгов в предыдущий торговый день. Выполняет для фьючерсов
приблизительно ту же самую роль, что и объем торгов для акций.
росов под названием Test Analyser сво- ходности, математического ожидания рассматриваем результаты анализа и
бодно доступен на сайте: www.spb. прибыли от сделки и соотношения до- ищем наиболее доходные и наименее ри-
cityline.ru/u/moysha/index.html. ход/риск. Кроме того, существенно воз- скованные варианты. С этой точки зре-
В качестве примера анализа исполь- растает количество убыточных месяцев ния наиболее хорошо смотрятся 7, 8 и
зуем результаты тестирования стоп-лос- и систему становится некомфортно тор- 9%-е стоп-лоссы. У них максимальная из
са для нашей торговой системы приме- говать. всех помесячная доходность и макси-
нительно к часовым данным EESR в Иначе говоря, близко расположенные мальное соотношение доход/риск, самое
РТСе (комиссия 0.8 %, только лонг, от- к точке открытия позиций стоп-лоссы большое математическое ожидание при-
крытие позиций на зыкрытии текущего часто закрывают потенциально при- были от сделки. Кстати, в Метастоке по
бара, история с 1996 года). Результаты быльные сделки с небольшим убытком, результатам тестирования они занимают
обработки в Test Analyser см. в таблице. и, увеличивая количество сделок за счет первые три строчки в отчете, претендуя
Наиболее важными показателями из последующего переоткрытия позиций, на вхождение в состав торговой системы.
представленных здесь1 мы считаем сред- переводят с вашего счета на счет вашего Это одна из ловушек системной торгов-
немесячную доходность и соотношение брокера дополнительные суммы комис- ли. Все бы было хорошо, если бы не одно
среднемесячного дохода и риска (выде- сионных. «но» — смотрим самую первую строчку
лены в таблице жирным шрифтом). Это Психологически комфортно торговать в таблице, — эти стоп-лоссы очень ред-
то, на что можно с определенными ого- два вида стоп-лоссов — близкие, из-за ки. Увы, это то, что, возможно, называ-
ворками рассчитывать при использова- маленького размера убытков по каждой ется подгонкой под исторические дан-
нии системы в течение достаточно дли- сделке, и дальние, из-за редкой реализа- ные. Эти стоп-лоссы встречались слиш-
тельного периода времени. Остальные ции этих стопов. Именно с этим связано ком редко, чтобы их результаты можно
показатели раскрывают то, из чего скла- иногда желание или приблизить стопы было рассматривать как достоверные.
дывается эта доходность, позволяя вы- или вовсе их убрать с глаз долой. Даль- Вполне возможно, что по мере накоп-
явить важные особенности торговых си- ние стопы и отказ от стопов мы обсудим ления статистики появится возможность
стем. чуть ниже, вопрос же о приближении еще раз вернуться к этому вопросу и тог-
Итак, собственно анализ результатов. стопов к цене захода для нас наболев- да 7 или 8%-е стоп-лоссы смогут дока-
Сначала отсекаем одну крайность — ший — не реже раза в месяц приходится зать свое право на существование в со-
слишком близкую постановку стоп-лос- рассказывать анекдот о бабушке летчика, ставе торговых систем — но не сейчас.
сов. Из данных в таблице следует, что в просившей своего внучка летать пони- Вообще говоря, существует точка зре-
эту категорию попадают 1 %, 2 % и 3 % же, чтобы не разбиться… ния, что стоп-лоссы должны быть очень
стоп-лоссы. Показатели этих систем су- Полученные при тестировании дан- широкими (придуман даже соответству-
щественно хуже не только в сравнении с ные доказывают, что слишком близко ющий термин — ruin-stop2). В отличие
системами с более далеко стоящими сто- поставленный стоп-лосс не только не от стоп-лосса, который, как следует из
пами, но и по сравнению с исходной си- улучшает результаты торговли, но и зна- названия, ограничивает убытки, данный
стемой без стопов. Близкие стоп-лоссы чительно их ухудшает. Лучше торговать вид стопов срабатывает только при угро-
уменьшают средний и максимальный совсем без стоп-лосса или с очень далеко зе разорения. Обычно это означает де-
размеры убыточных сделок, однако за поставленным стоп-лоссом, чем с черес- сятки процентов просадки счета. Есть да-
счет резкого увеличения общего числа чур близкой его постановкой. же примеры успешного использования
убыточных сделок имеют гораздо худ- Отбросив 1–3%-е стоп-лоссы как такой торговой тактики. Так, легендар-
шие показатели средней месячной до- слишком близко поставленные, снова ный Ларри Вильямс увеличил свой счет
1
Подробное обоснование использования набора данных показателей содержится в статье «Как сравнивать торговые системы», опубликованной в
первом номере журнала «Современный трейдинг» за 2001 год.
2
Ruin>stop — стоп>крах.
1
Victor Niederhoffer, «The Education of a Speculator», р. 376.
2
Стандартная девиация представляет из себя корень квадратный из суммы квадратов отклонений цены, деленных n от простой скользящей средней
цены n>периода. Если отвлечься от не всегда легко воспринимаемой формулы вычисления, то стандартная девиация — это то расстояние, на кото>
рое в среднем за n>период отклонялись цены в ту или иную сторону от простой скользящей средней, рассчитанной за n>период. Стандартная ошиб>
ка — это почти то же самое, только вместо скользящей средней используется апроксимация цен уравнением линейной регрессии. Иначе говоря, ес>
ли для рассчета стандартной девиации используется скользящая средняя, то для стандартной ошибки — прямая линия, наиболее точно описываю>
щая движение на данном участке цен.
pds: = Input(«Periods»,2,25,7);
B: = Input(«Field:1=Close,2=Open,3=High, 4=Low, 1,4,1);
Z:=If(B=1,CLOSE,If(B=2,OPEN,If(B=3,HIGH,If(B=4,LOW, 0))));
s1: = ValueWhen( 1, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
s2: = ValueWhen( 2, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
s3: = ValueWhen( 3, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
s4: = ValueWhen( 4, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
s5: = ValueWhen( 5, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
s6: = ValueWhen( 6, Ref( Z, 8pds) = LLV( Z, 2 ∗ pds + 1), Ref( Z, 8pds))
AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1), Ref( Z, 8pds));
бития таких уровней дальнейшее движение цен против S1; S2; S3; S4; S5; S6
позиции является логическим обоснованием необходимости
закрытия. Это результат проведенной нами модификации опублико-
В то же время есть одна тонкость — не следует, как прави- ванных в 1998 году в майском номере TASC индикаторов Ме-
ло, располагать стоп-лоссы точно на хорошо видимых лини- ла Виднера (Mel Widner) для языка Метастока. При модифи-
ях — лучше несколько сдвигать их в ту или иную сторону. кации данных индикаторов мы избавились от функции
Достаточно часто на хорошо видимых уровнях располагается Prev(), которая работает в Метастоке ОЧЕНЬ медленно, доба-
значительное количество ордеров, и крупные игроки порой вили возможность изменения цен, для которых рассчитыва-
специально играют на пробитие таких уровней, провоцируя ется уровень (в первоначальном варианте была возможность
массовое закрытие позиций мелких игроков. Обычно графи- расчета уровней только для цен закрытия), и возможность из-
чески это проявляется картиной «прокола» линии поддерж- менения порядка уровней (в первоначальном варианте уров-
ки — цена быстро уходит вниз в результате выхода мелких ни рассчитывались только для 5-дневных экстремумов).
игроков из позиций и также быстро потом возвращается в Кроме того, мы несколько изменили алгоритм определения
предыдущий торговый диапазон в результате скупки круп- уровня. В первоначальном варианте формул в случае если два
ными игроками подешевевших в результате успешной игры дня подряд цены, например, закрытия были равны между со-
на понижение акций. На трейдерском слэнге это называется бой и образовывали локальный максимум, то образовывалось
«стряхивание с позиций». сразу два уровня с одинаковыми значениями. Нам показалось
Минусом такого стоп-лосса является трудность его форма- более логичным предположить, что, в такой ситуации мы все-
лизации на языках программ технического анализа, и, соот- таки имеем дело с одним и тем же уровнем, который держит
ветственно, сложности с его тестированием. В качестве час- цены два дня подряд. Мы ввели дополнительное условие:
тичного выхода можем предложить к использованию два ин-
дикатора, автоматически определяющих сразу несколько AND Ref( Z, 8pds) <> Ref( Z, 8pds — 1)
уровней поддержки и сопротивления.
1
http://traderclub.com.
1
Сhannel stop>loss.