Название: Энциклопедия торговых стратегий Автор: Джеффри Оуэн Кац Жанр: Технический анализ Рейтинг: Просмотров: 2192 |
Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | |
Назначение тестов
При создании исходной ССВ (а также при последующей модификации с использованием лимитных приказов целевой прибыли и защитных оста- новок внутри дня) расположение защитной остановки и целевой прибыли было произвольно и жестко установлено. Для длинных входов защитная установка управления капиталом располагалась на уровне одного средне- го истинного диапазона ниже цены входа, а целевая прибыль — на уровне четырех средних истинных диапазонов выше цены входа. Для коротких входов расположение было обратным. Мы пытались разместить защит- ную установку достаточно близко к цене входа для максимально быстрого прекращения убыточных сделок, а целевую прибыль — достаточно дале- ко, чтобы не терять прибыль благоприятных сделок. Первый из нижепри- веденных тестов исследует влияние защитной остановки и целевой при- были при подстройке этих произвольно выбранных значений.
Второй набор тестов изучает возможность замены фиксированной защитной установки в МССВ на подвижную. Минимальная конфигура- ция МССВ не обладает привлекательными чертами — в частности, для трейдера желательно получить хотя бы минимальную прибыль со сделки, а не ждать, пока она станет убыточной. Такая фиксация прибыли может быть обеспечена следящей защитной остановкой: вместо размещения за- щитной остановки на некотором расстоянии от цены входа остановка пе- ремещается вместе с ценой в направлении открытой позиции, когда сделка становится выгодной. Когда цены движутся в благоприятном направле- нии, вместе с ними движется и уровень защитной остановки, защищая часть потенциальной прибыли. Если рынок разворачивается, то сделка будет закрыта не с убытком (как было бы при фиксированной защитной остановке), а с прибылью, если следящая защитная остановка вошла в при- быльную ценовую область. Существует ряд стратегий размещения и пе- ремещения уровня защитной остановки, предназначенных для избежа- ния убыточного закрытия прибыльных сделок и фиксации максимальной части нереализованных прибылей, которые и будут исследоваться во вто- ром наборе тестов. В стратегиях ССВ и МССВ целевая прибыль реализовывалась в виде лимитного приказа на выход, размещенного на фиксированном уровне. В третьем наборе тестов фиксированный уровень целевой прибыли, по- добно защитной остановке ранее, был заменен на нечто более динами- ческое. Было бы желательно сделать уровень целевой прибыли движущим- ся в сторону текущей цены, особенно в случае затянувшихся сделок на «летаргических» рынках. Это позволило бы выхолить из сделки по хоро- шей цене, возможно, даже с некоторой прибылью, и при отсутствии силь- ного благоприятного движения. Выход из рынка на случайных «шумовых» пиках более выгоден, чем простой выход по истечении некоторого вре- мени или ожидание срабатывания защитной остановки. В то же время желательно не потерять потенциальный доход благодаря неоптимально- му уровню целевой прибыли. Слишком близко расположенная целевая прибыль может обеспечить высокий процент прибыльных сделок, но зна- чительно снизить прибыль каждой из них, что может сделать стратегию в целом убыточной. Было бы желательно применять «мобильную» целевую прибыль, т.е. в начале сделок или при благоприятном устойчивом движе- нии рынка размещать ее подальше от рыночной цены, не соглашаясь на минимальную прибыль. Если же сделка затягивается при отсутствии боль- шой текущей прибыли или поведение рынка неблагоприятно, то целевая прибыль может смещаться к текущей цене, позволяя закрыть сделку с максимально возможной прибылью до разворота рынка. Ниже будут ис- следоваться различные модификации размещения целевой прибыли. Кроме того, будет испытан в различных модификациях выход по ог- раничению времени, исходя из того соображения, что при динамической защитной остановке и целевой прибыли ограничение времени не столь ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 339
необходимо. «Застойные» позиции будут закрываться максимально быст- ро другими способами, но будут держаться как можно дольше при благо- приятном движении рынка. Суть в том, чтобы не фиксировать прибыль только из-за того, что истек чрезмерно короткий лимит времени.
ТЕСТИРОВАНИЕ МОДЕЛИ С ФИКСИРОВАННОЙ ЗАЩИТНОЙ ОСТАНОВКОЙ И ЦЕЛЕВОЙ ПРИБЫЛЬЮ
В стратегии МССВ величины защитной остановки и целевой прибыли были фиксированы на достаточно произвольном и, возможно, неопти- мальном уровне. Что произойдет, если протестировать ряд значений этих параметров в поисках оптимального сочетания? В данном тесте положение защитной установки управления капита- лом прогоняется от 0,5 до 3,5 с шагом 0,5. Целевая прибыль прогоняется от 0,5 до 5 с шагом 0,5. Под защитной остановкой и целевой прибылью понимается произведение указанного числа на средний истинный диапа- зон определенного количества последних торговых дней.
float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM &ts, float *eqcls) {
// Выполняет случайные входы с вариациями // модифицированного стандартного выхода. Эта модель тестирует // МСС, используя вариации в параметрах. // File = x20mod01.c // parms — набор [1..MAXPRM] параметров // dt — набор [l..nb] дат в формате ГГММДД // орn - набор [l..nb] цен открытия // hi - набор [l..nb] максимальных цен // 1о — набор [ 1..nb] минимальных цен // cls - набор [l..nb] цен закрытия // vol — набор [1..nb] значений объема // oi — набор [1..nb] значений открытого интереса // dlrv — набор [1..nb] средних долларовой волатильности // nb — количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls - набор [l..nb] уровней капитала по ценам закрытия
// объявляем локальные переменные static int rc, cb, neontracts, maxhold, signal, ranseed; static float mmstp, ptlim, lirnprice, stpprice; static int entryposted, entrybar; static float exitatr[MAXBAR+1] , rnum, entryprice; static long iseed;
// копируем параметры в локальные переменные для удобного обращения ptlim = parms[1]; // целевая прибыль в единицах среднего истинного // диапазона mmstp = parms[2]; // защитная остановка в единицах среднего истинного // диапазона maxhold = parms[3]; // период максимального удержания позиции ranseed = parms[8]; // используется для инициализации случайной // последовательности 340 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
// выполняем вычисления по всему объему данных AvgTrueRangeS(exitatr,hi,lo,cls,50,nb); // средний истинный диапазон для // выхода // очищаем генератор случайных чисел // ... используем различную случайную последовательность для каждого //инструмента // ... ts.model() возвращает индекс рынка (SP=1, YX-2, ...) iseed = -(ranseed + 10 * ts.model()); rnum = ran2(&iseed);
// проходим через дни, чтобы смоделировать реальную торговлю for(cb = 1; cb <= nb; cb++) ( // не открываем позиций до начала периода выборки // ... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) { eqcls[cb] = 0.0; continue; }
// выполняем ожидающие приказы и считаем кумулятивный капитал rc = ts.update(opn[cb], hi[cb], lo[cb], cls[cb], cb) ; if(rc != 0) nrerror("Trade buffer overflow"); eqcls[cb] = ts.currentequity(EQ_CLOSETOTAL);
// считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P-500 от 12/31/98 ncontracts = RoundToInteger(5673.0 / dlrv[cb]); if(ncontracts < 1) ncontracts - 1;
// избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue;
// генерировать "стандартные" случайные сигналы входа signal = 0; rnurn = ran2(&iseed) ; if(rnum < 0.025) signal = -1; // случайный короткий вход else if (rnum > 0.975) signal = 1; // случайный длинный вход
// входим в сделки по цене открытия entryposted = 0; if(ts.position!) <= 0 && signal == 1) ( ts.buyopen('1' , ncontracts}; entryposted = 1; entryprice = opn[cb+l]; entrybar = cb + 1; } else if(ts.position)) >= 0 && signal == -1) { ts.sellopen('2' , ncontracts) ; entryposted = -1; entryprice = opn[cb+l]; entrybar = cb + 1 }
// выходим из сделок, используя модифицированный стандартный выход if(entryposted > 0) { // инициализация и выходы для длинных позиций в день входа limprice = entryprice + ptlim * exitatr[cb]; stpprice = entryprice - mmstp * exitatr[cb]; ts.exitlonglimit{'A', limprice); ts.exitlongstop('B', stpprice); } else if(entryposted < 0) { // инициализация и выходы для коротких позиций в день входа limprice = entryprice - ptlim * exitatr[cb]; stpprice = entryprice + mmstp * exitatr[cb]; ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 341
ts.exitshortlimit('С' , limprice); ts.exitshortstop('D' , stpprice); } else { // выходы после дня входа if (ts-position{) > 0) { // длинные позиции ts.exitlonglimit('F' , limprice); ts.exitlongstop('G', stpprice); if(cb-entrybar >= maxhold) ts.exitlongclose('E'); } else if(ts.position() < 0) ( // короткие позиции ts.exitshortlimit('I' , limprice); ts.exitshortstop('J' , stpprice); if(cb-entrybar >= maxhold) ts.exitshortclose('H') ; } } } // обрабатываем следующий день )
В коде использован стандартный случайный вход по цене открытия и модифицированный стандартный выход. Правила выхода следующие: лимитный приказ на выход размещается на уровне некоторого количе- ства средних истинных диапазонов выше (для длинных) или ниже (для коротких позиций) цены входа. Данное количество доверительных интер- валов определяется параметром ptlim. Кроме лимитного приказа целевой прибыли, размещается защитная остановка на уровне некоторого коли- чества средних доверительных интервалов ниже (для длинных) или выше (для коротких позиций) цены входа. Данное количество доверительных интервалов определяется параметром mmstp. Максимальное время удер- жания позиции определяется параметром maxhold. Если сделки не были закрыты ранее по достижении целевой прибыли или защитной останов- ки, то они закроются по истечении maxhold дней (в этом тесте, как и во всех предшествовавших, фиксированное значение maxhold равно 10). В табл. 14-1 приведены годовые соотношения риска/ прибыли (Р/ ПРИБ), процент прибыльных сделок (ПРИБ%) и средняя прибыль или убыток со сделки ($СДЕЛ) для каждой из комбинаций значений лимита и защитной остановки. В столбце справа приведены средние значения СРЕД для каждого из значений лимита целевой прибыли, в нижней строке — средние значения СРЕД для каждого из значений защитной остановки. Из полученных результатов можно сделать целый ряд выводов. Чем ближе целевая прибыль к цене входа, тем выше процент прибыльных сде- лок. Близко расположенная целевая прибыль с большей вероятностью достигается и закрывает позицию с некоторой прибылью. При этом по- вышенный процент прибыльных сделок недостаточен для преодоления отрицательного эффекта потери потенциальной прибыли. Более удален- ные целевые прибыли работали лучше, и в большинстве случаев оптималь- ное расположение целевой прибыли составило от 1 до 2 средних истин- ных диапазонов от цены входа. При удалении защитных остановок от цены входа процент прибыльных сделок возрастал, но другие показатели ухуд- 342 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
шались, при приближении — процент прибыльных сделок падал вместе с другими показателями. Наилучшая общая эффективность по показателям годового соотно- шения риска/ прибыли и средней прибыли сделки была достигнута при целевой прибыли 4,5 и защитной остановке 1,5. При удалении от опти- мальных значений возрастало отношение риск/ прибыль, равно как и сред- ний убыток в сделке. Между размещением целевой прибыли и защитной установки не было особо выраженной связи. Значения, оптимальные для одного параметра, при изменении другого менялись незначительно. По- чти так же хорошо работало сочетание целевой прибыли 1,5 и защитной остановки 4 — была получена несколько большая средняя прибыль в сдел- ке и несколько худшее соотношение риска/ прибыли. Интересно, что про- извольно заданные значения оказались весьма близкими к оптимальным (занимая соседние ячейки в табл. 14-1). Впрочем, оптимальные значения обеспечили на 6% больше прибыльных сделок, чем произвольно задан- ные целевая прибыль 4 и защитная остановка 1. Для оптимальных параметров процент прибыльных сделок составил 39%. При поиске максимального значения обнаружилось, что параметр целевой прибыли 0,5 обеспечивает 69% прибыльных сделок, но со значи- тельно худшими показателями риска/ прибыли и средней прибыли со сдел- ки. Это однозначно показывает важность удержания потенциально при- быльных позиций. Ни одна из комбинаций не принесла прибыли —чего и следовало ожи- дать от минималистской стратегии выходов со случайными входами. Впро- чем, полученные результаты при различных сочетаниях параметров впол- не пригодны для сравнения.
Заключение
Потенциальной прибылью нельзя жертвовать даже во имя достижения большого процента выгодных сделок, поскольку в конечном счете это приведет к худшей результативности торговой системы. Кроме того, ви- димо, существует оптимальный уровень расположения защитной останов- ки — слишком удаленная остановка повышает процент прибыльных сде- лок, но одновременно повышает общие убытки. Слишком близкая оста- новка уменьшает убытки с каждой сделки, но сильно снижает количество прибыльных сделок в целом, опять-таки ухудшая общий результат. Опти- мальные значения обеспечивают умеренный процент прибыльных сде- лок и высокую эффективность. В данном случае оптимальное располо- жение защитной остановки было на уровне полутора средних истинных диапазонов от цены входа. С другими системами входа оптимальное рас- положение может быть гораздо более близким. rllABA 14 Yfll'lWEH1-'lfl CT.Aii,ll,APlHOC CTEMbl BbiXO,llA 343
TaiJJlUl{a 14-1. 3,P,PeKmU6Hocmb nopm,Pellfi 6 npeoenax 6b6opKu npu ucnonbJoD 6aHuu cny auHozo 6XoOa c MOou.Pu!fupo6aHHb!MU cmaHoapmHb!O .MU 6b!xooa.Mu 6 Ja6ucw.<ocmu om napaMBmpo6 !fe!le6ou npu6wzu (no zopu3oHmanu) u JaupJmHou ocmaH06KU (no 6epmuKanu)
l nPH&% 48 8 8 73 75 75 78 18 I$CAUl ·2232 ·213 .:zog ·2011li . .-2210 23114 -- 1113
1 1.0 I PmPH& -4.70 -3.H -2.112 ·2. ·2.43 -2. ·2. ·2.80 I OP111i% 34 411 57 eo 112 112 55 ISCllEII -1822 -1771 -1748 -1n8 ·11174 ·21511 ·11147
11. IP/OPI16 ·3.75 ·2.411 -2.18 -2.02 ·2.011 ·2.17 ·2.10 ·2.41 27 41 48 52 53 54 54 47
4 .. ·20' -18 ·184 -1115 ·21 -221 ·22J .;zo.
21 34 41 44 48 48 47 4C IOPH6% i $CllEII _-! - ·171111 ·1882 ·21111l ·2238 ·2003
1 3.0 IP!nPH& ·2.1111 ·2.02 ·1.70 ·1.tlll ·1.81 ·1.811 ·1.87 -2.00 !OPH6% 20 33 ..a 43 4li 48 48 3ll I SCil _-_tllllll ·1'lli ·1722 -1844 ·2057 ·22211 -225& _-_11111
OP116% 111 33 ..a 43 4li 48 311 $Clli;J ·111411 -11 7 ·1IIBII ·111011 ·2030 ·2180 ·22211 _:WiCl
4.0 PtnPH6 ·2.81 ·1.1111 ·1.47 ·1.50 ·1.112 ·1.811 ·1.88 ·1.7S I OPHii% 111 33 311 43 44 4li 48 311 '""Akfl ·1848 -15110 ·15!18 -171: -11122 ·20e8 ·_2108 ·1831
. OPHii% 32 43 44 4li 31 $CllEII _-11124 ·1}11Cl ·1ll_t -1714 _-11133 -20n -211 -183:
5.0 P/OPH6 -2. ·1.118 ·1.48 ·1.48 ·1.57 ·1.84 ·1 52 _.-1, _n 111 32 311 42 44 4$ 45 311 $CAEJI -1847 -1813 -1ell4 -17lW -11117 ·2058 ·20112 -1
CPЈ,!1 PtnPI16 ·3.81 -2.44 -2.08 ·1.811 -2 03 -2.10 ·2.011 ·2.33 OPH6% 25 3ll 48 41 51 51 li2 44 - ! ,;At.ll -11143 - ·173< ·1112l ·2010 -2183 -22111 -11150 344 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
ТЕСТИРОВАНИЕ ДИНАМИЧЕСКИХ ЗАЩИТНЫХ ОСТАНОВОК
В этой группе тестов мы заменим фиксированную защитную остановку МССВ на динамическую, предположительно более эффективную. Целью является фиксация основной части потенциальной прибыли, избегая при этом превращения потенциально выгодных сделок в убыточные, как это может иметь место в случае слишком близко расположенной фиксиро- ванной остановки. Существует много способов перемещать защитную остановку так, чтобы ее уровень следовал за рынком, фиксируя часть возникающей в течение сделки прибыли. Один из популярных методов состоит в разме- щении остановки на уровне минимального минимума за несколько пре- дыдущих дней (для длинных позиций). Затем остановка может переме- щаться вверх (но не вниз). Для коротких позиций защитная остановка размещается на уровне максимального максимума за несколько преды- дущих дней и может двигаться только вниз, но не вверх. Этот простой метод испытывается в первом тесте. Второй тест динамической защитной остановки похож на методику подгонки фиксированной защитной остановки в МССВ. Уровень смеща- ется вверх (для длинных позиций) или вниз (для коротких позиций) от текущей цены на некоторое количество средних истинных диапазонов. В отличие от фиксированной защитной остановки, использованной в МССВ, в данном случае защитная остановка перемещается в зависимости от те- кущей рыночной цены. Смещение может происходить только в одну сто- рону — вверх для длинных позиций, вниз для коротких. Целью является поддержание одинакового статистического расстояния между наилучшей ценой, достигнутой во время удержания позиции, и защитной останов- кой. Защитная остановка для длинных позиций рассчитывается следую- щим образом: ( 1) Из цены входа вычитается параметр mmstp, умножен- ный на средний истинный диапазон. Результат будет уровнем защитной остановки для следующего дня. (2) На следующей день из текущей цены вычитается другой параметр stpa, умноженный на средний истинный ди- апазон. (3) Если цена защитной остановки, полученная на шаге 2, выше ценового уровня текущей защитной остановки, то текущее значение за- щитной остановки заменяется вычисленным. (4) Стадии 2 и 3 повторяют- ся для каждого последующего дня. При расчете защитной остановки для короткой позиции произведение среднего истинного диапазона на пара- метр (mmstp или stpa.} прибавляется к рыночной цене, и уровень защит- ной остановки опускается вниз. В третьем тесте использован более сложный подход. Для длинных по- зиций, как обычно, защитная остановка задается на уровне некоторого количества средних истинных диапазонов ниже цены входа в рынок. За- тем остановка смещается вверх на величину, зависящую от того, насколь- ко текущая цена выше текущего уровня защитной остановки. Для корот- ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 345
ких позиций уровень остановки задается выше цены входа и опускается в зависимости от того, насколько текущая цена ниже его. В принципе этот метод основывается на варианте смещенного экспоненциального сколь- зящего среднего (ЭСС), за тем исключением, что величина скользящего среднего инициализируется отдельным условием при входе в сделку и может изменяться только в одном направлении (так как защитная оста- новка может двигаться только в направлении рыночной цены). Защитная остановка для длинных позиций рассчитывается нижеследующим обра- зом: ( I ) Начальное значение в день входа в рынок задается вычитанием из цены входа произведения параметра mmstp и среднего истинного диапа- зона. (2) На следующий день от максимальной цены отнимается произве- дение параметра stpa и среднего истинного диапазона; затем вычитается текущее значение защитной остановки и результат умножается на пара- метр stpb. (3) Если результат шага 2 больше нуля, добавляем его к текуще- му значению защитной остановки, если нет, то уровень не изменяется. (4) Повторяем шаги 2 и 3 для каждого последующего дня. При вычислении защитной остановки для коротких позиций произведения среднего истин- ного диапазона на параметры прибавляются к рыночной цене. К уровню защитной остановки прибавляются только отрицательные поправки.
static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM &ts, float *eqcls) {
// Выполняет тесты случайных входов для стратегии выхода // с "динамическими" защитными остановками. // File = x20mod02.c // parms — набор [1..MAXPRM] параметров // dt - набор [l..nb] дат в формате ГГММДД // орn — набор [1..nb] цен открытия // hi — набор [1..nb] максимальных цен // 1о — набор [1..nb] минимальных цен // cls — набор [1..nb] цен закрытия // vol — набор [1..nb] значений объема // oi — набор [1..nb] значений открытого интереса // dlrv — набор [1..nb] средних долларовой волатильности // nb — количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [1..nb] уровней капитала по ценам закрытия
// объявляем локальные переменные static int rc, cb, ncontracts, maxhold, signal, ranseed; static float stpa, stpb, mmstp, ptlim, limprice, stpprice; static int entryposted, entrybar, model type; static float exitatr[MAXBAR+1] , rnum, entryprice, tmp, atr; static long iseed;
// копируем параметры в локальные переменные для удобного обращения mmstp = parms[1]; // используется для начальный защитной остановки stpa - parms[2]; // дополнительный параметр защитной остановки stpb = parms[3]; // дополнительный параметр защитной остановки ptlim = parms[6]; // целевая прибыль в единицах среднего истинного // диапазона 346 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
// выполняем вычисления по всему объему данных AvgTrueRangeS{exitatr,hi,lo,cls,50,nb); // средний истинный диапазон // для выхода
// очищаем генератор случайных чисел // ... используем различные случайные последовательности для каждого рынка // ... ts.model() возвращает индекс рынка (SP=1, YX-2, ...) iseed = -{ranseed + 10 * ts.model()); rnum = ran2(&iseed);
// проходим через дни, чтобы смоделировать реальную торговлю for(cb = 1; cb <= nb; cb++) {
// не открываем позиций до начала периода выборки // ... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) { eqcls[cb] = 0.0; continue; }
// выполняем ожидающие приказы и считаем кумулятивный капитал rc = ts .update (opn [cb] , hi [cb] , lo [cb] , cls [cb] , cb) ; if(rc !- 0) nrerror{"Trade buffer overflow"); eqcls[cb] = ts.currentequity(EQ_CLOSETOTAL);
// считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P-500 от 12/31/98 ncontracts = RoundToInteger(5673.О / dlrv[cb]); if (ncontracts < 1) ncontracts = 1;
// избегаем устанавливать приказы на дни с ограниченной торговлей if (hi[cb+1] == lo[cb+1]} continue;
// генерировать "стандартные" случайные сигналы входа signal = 0; rnum = ran2(&iseed); if(rnum < 0,025) signal = -1 // случайный короткий вход else if(rnum > 0.975) signal = 1 // случайный длинный вход
// входим в сделки по цене открытия entryposted = 0; if (ts.position() <= 0 && signal == 1) { ts.buyopen{'1' , ncontracts) ; entryposted - 1; entryprice = opn[cb+1]; entrybar = cb + 1; } else if(ts.position{} >= 0 && signal == -1) { ts.sellopen{'2', ncontracts}; entryposted = -1; entryprice = opn[cb+1]; entrybar = cb + 1; }
// выходим из сделок, используя стандартный выход с улучшенными // защитными остановками atr = exitatr[cb]; if (entryposted > 0) { ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 347
// инициализация и выходы для длинных позиций в день входа switch(modeltype) { case 1: limprice = entryprice + ptlim * atr; stpprice = min (Lowest (lo, 2, cb), entryprice - mmstp * atr); break; case 2: case 3: limprice = entryprice + ptlim * atr; stpprice = entryprice - mmstp * atr; break; default: nrerror("Invalid modeltype"); } ts.exitlonglimit('A' , limprice} ; ts.exitlongstop('B' , stpprice) ; } else if (entryposted < 0) { // инициализация и выходы для коротких позиций в день входа switch(model type) { case 1: limprice = entryprice - ptlim * atr; stpprice = max (Highest(hi, 2, cb), entryprice + mmstp * atr); break; case 2: case 3: limprice = entryprice - ptlim * atr; stpprice - entryprice + mmstp * atr; break; default: nrerror{"Invalid modeltype" ) ; } ts.exitshortlimit('C', limprice) ; ts.exitshortstop('D' , stpprice); } else { // выходы после дня входа if(ts.position() > 0) { // длинные позиции switch{modeltype) { case 1: stpprice - max(stpprice, Lowest(lo,2,cb)); break; case 2: stpprice = max(stpprice, cls [cb]-stpa*atr); break; case 3: tmp = (hi [cb] - stpa * atr) - stpprice; if{tmp > 0.0) stpprice += stpb * tmp; break; } ts.exitlonglimit('F' , limprice); ts.exitlongstop('G' , stpprice); if (cb-entrybar >= maxhold) ts.exitlongclose('E' } ; } else if (ts.position(} < 0) { // короткие позиции switch(modeltype) { case 1: stpprice = min(stpprice, Highest(hi,2,cb}) ; break; case 2: stpprice = min (stpprice, cls [cb]+stpa*atr); break; 348 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
сазеЗ: tmp = {lo[cb] + stpa * atr) - stpprice; if(tmp < 0.0) stpprice += stpb * tmp; break; } ts.exitshortlimit('I' , limprice) ; ts.exitshortstop('J' , stpprice); if(cb-entrybar >= maxhold) ts.exitshortclose('H') ; } } } // обрабатываем следующий день }
Вышеприведенный код реализует МССВ с заменой фиксированной защитной остановки на одну из трех динамических методик. Вид защит- ной остановки выбирается параметром modeltype, и в зависимости от вида выбранной остановки программа оптимизирует значения еще трех допол- нительных параметров. Для остановки на основе максимального макси- мума/ минимального минимума за два последних дня (ММ/ ММ) параметр mmstp — это количество средних истинных диапазонов (не обязательно целое число), прибавляемых или отнимаемых от цены входа для получе- ния защитной остановки для входного дня. Защитная остановка входного дня устанавливается на уровне цены входа или минимального минимума за два последних дня плюс или минус указанное количество средних ис- тинных диапазонов (выбирается уровень, более удаленный от текущей рыночной цены). Для двух других остановок (на основе среднего истин- ного диапазона и ЭСС) уровень защитной остановки входного дня ини- циализируется стандартным образом, т.е. цена входа минус (для длинной позиции) или плюс (для короткой позиции) произведение mmstp на сред- ний истинный диапазон. Затем в каждом торговом дне производится коррекция уровня защит- ной остановки. Вид коррекции зависит от выбранного параметром modeltype типа. Для остановки на основе ММ/ ММ рассчитывается мак- симальный максимум или минимальный минимум в зависимости от вида открытой позиции (короткая или длинная). Если результат ближе к ры- ночной цене, чем текущий уровень защитной остановки, то он использу- ется в качестве новой защитной остановки. В другой модели средний ис- тинный диапазон умножается на второй параметр stpa. Результат вычи- тается (для длинной позиции) или прибавляется (для короткой) к теку- щей цене закрытия. Если результат ближе к текущей цене, чем текущий уровень защитной остановки, то он заменяет уровень защитной останов- ки, приближая его, таким образом, к текущей рыночной цене. Для треть- его типа остановки (на основе ЭСС) средний истинный диапазон умно- жается на второй параметр stpa. Результат вычитается (для длинной по- зиции) или прибавляется (для короткой) к текущей цене закрытия для получения сдвига. Эта разность заносится в переменную tm p. Уровень ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 349
защитной остановки обновляется в последующие дни путем прибавле- ния imp, умноженной на другой параметр (коэффициент коррекции stpb) к текущей защитной остановке. Это, впрочем, производится только в том случае, если коррекция сместит уровень защитной остановки ближе к текущей цене. Расчеты подобны методике получения экспоненциально- го скользящего среднего (ЭСС) — с той разницей, что при расчете соб- ственно ЭСС было бы возможно смещение уровня защитной остановки в обе стороны и не использовался бы предварительный сдвиг. В этой мо- дели stpb определяет эффективный период экспоненциального скользя- щего среднего, которое может изменяться только в одном направлении — к текущей рыночной цене.
Тестирование защитной остановки на основе максимального максимума/ минимального минимума
В этом тесте (modeltype = I ) параметр начальной защитной остановки (НАЧСТП) управляет максимальной близостью уровня остановки к цене в первый день. Он прогоняется от 0,5 до 3,5 с шагом 0,5. Каждая строка в табл. 14-2 представляет данные об эффективности каждого из значений НАЧСТП в пределах выборки. В последней строке указана эффективность лучшего из найденных значений вне пределов вы- борки. Таблица имеет те же обозначения, что и другие таблицы оптими- зации в этой книге (МПАД означает максимальное падение капитала в тысячах долларов). Судя по результатам, эта защитная остановка постоянно располага- лась слишком близко, на что указывает сниженный по сравнению с ос- новной стратегией МССВ процент прибыльных сделок. В предыдущем тесте наилучшее решение (при mmstp 1,5, ptlim 4,5) давало 39% прибыль- ных сделок, при соотношении риска/ прибыли —1, 46 и приносило сред- ний убыток в сделке $1581. В этом тесте лучшее решение давало только 28% прибыльных сделок в пределах и 29% вне пределов выборки. Мно- гие потенциально прибыльные сделки (в том числе сделки, которые были бы прибыльны с оптимальной фиксированной защитной остановкой МССВ) были превращены в малоубыточные. Близость расположения этой защитной остановки также подтверждается небольшой средней длительностью сделки (4 дня) по сравнению с обычными 6 —8 днями. Среднее соотношение риска/ прибыли ( — 2,52 в пределах и —2, 38 вне выборки) и средний убыток в сделке ($1864 в пределах и $1818 вне пре- делов выборки) также были значительно хуже, чем при оптимальной фиксированной защитной остановке. Метод ММ/ ММ с периодом 2 дня однозначно малоэффективен, и ему следует предпочесть фиксирован- ную остановку, найденную с помощью оптимизации, как это было сде- лано ранее (табл. 14-1) . 35 0 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов
В пределах выборки НАЧСТП ПРИБ ПРИБЛ ПРИБКР Ф. ПРИБ дох% Р/ ПРИБ ВЕР МПАД СДЕЛ ПРИБ% $СДЕЛ дни 0.50 -7057 -3534 -4423 0.67 -10.3 -2.71 1.00 7951 4210 25 -1890 3 1.00 -7710 -3333 -4386 0.70 -10.3 -2.54 1.0 0 7711 L 4187 27 -1843 4 1.50 2.00 2.60 3.00 3.50 -7792 -7857 -7776 -7745 -7754 -3353 -3343 -3297 -3257 -3262 -4438 -4514 -4478 -4487 -4492 0.70 0.70 0.70 0.70 0.70 -10.3 -10.3 -10.3 -10.3 -10.3 -2.53 -2.54 -2.62 -2.52 -2.52 1.00 1.0 0 1.0 0 1.0 0 1.0 0 7778 7839 7766 7727 7736 4178 4172 4171 4171 4171 28 -1865 4 28 -1883 4 28 -1864 4 28 -1857 4 28 -1859 4
Вне пределов выборки 2.50 -3259 1 -1511 -1748 0.71 -22.4 -2.38 1.000 3450 1793 29 -1818 4
Тестированиединамическойзащитнойостановки на основе среднего истинного диапазона
В этой модели два параметра, представленные в коде как mmstp и sfpa, служили множителями среднего истинного диапазона при размещении защитной остановки на входном и на последующих днях соответственно. В табл. 14-3 показана прогонка параметров для входного дня (ПЕРВЫЙ) и последующих дней (ПОСЛЕД) от 0,5 до 3,5 с шагом 0,5. Как и в предыдущих тестах защитных остановок, влияние парамет- ров на эффективность было постепенным и мало зависело друг от друга. По показателю соотношения риска/ прибыли наилучшие результаты дос- тигаются при значении параметра первого дня, равного 2, и параметров последующих дней, равных 2 или 2,5. Наилучшим сочетанием значений является 2 для первого дня и 2,5 для последующих, когда соотношение риска/ прибыли минимально и убыток со сделки также минимален. Мо- дель работала чуть лучше, чем оптимальная фиксированная защитная ос- тановка, соотношение риска/ прибыли составило — 1,40 по сравнению с — 1,46. Процент прибыльных сделок был также выше (42% против 39%). Как и в табл. 14-1, жирным шрифтом выделено лучшее решение.
Тестирование динамической защитной остановки на основе ЭСС
В этой модели используются три параметра: исходная защитная оста- новка для первого бара, сдвиг среднего истинного диапазона (СИДС в табл. 14-4) и коэффициент степени адаптации (КОЭФФ), который опре- деляет относительную скорость движения уровня защитной остановки по направлению к рыночной цене или же период лежащего в основе модели модифицированного экспоненциального скользящего среднего. Все параметры подвергались оптимизации в ходе широкого поиска. ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 351
Таблица 14—3. Эффективность портфеля для динамической защитной остановки на основе среднего истинного диапазона как функция параметров остановки первого и последующих дней
|
Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | |
Добавление комментария:
![]() |
Навигация
Прочие
Лучшие книги
- Фондовый менеджмент в расплывчатых условиях
- Внутридневная торговля на FOREX-Игрок
- Призрак биржи
- Торговля с использованием уровней ДиНаполи
- Технический анализ.Полный курс Ч.2
- Полное руководство по Daytrading High
- Дейтрейд онлайн
- Создание и оптимизация торговых систем в MetaStock
- Технический анализ. Эффективные инструменты для активного инвестора
- Краткий курс по Закону волн Эллиотта
Информацию в электронную библиотеку yourforexschool.com добавляют исключительно для ознакомления. Если вы являетесь автором книги или компанией которая имеет права распространения и вы хотите чтоб на сайте не было вашей книги, то напишите в обратную связь и мы незамедлительно удалим её.