Общие понятия Выбор брокера Анализ рынка Торговые стратегии Книги по Forex
Общие понятия
Биржа Форекс
Игра на бирже
Валютный трейдинг
Управление валютным портфелем
Как стать трейдером
Выбор брокера
Брокерское обслуживание
Как выбрать брокера Форекс
Лучшие дилинговые центры
Анализ рынка
Технический анализ
Японские свечи
Индикатор Ишимоку
Волны Вульфа
Полосы Боллинджера
Скользящие средние
Линия тренда
Фундаментальный анализ
Механические торговые системы
Оценка эффективности механических торговых систем
Торговые сигналы
Лучшие
дилинговые центры:
Дилинговый центр EXNESS
Дилинговый центр Forex4you
Дилинговый центр Alpari

Тестирование модели с фиксированной защитной остановкой и целевой прибылью

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

В данном тесте положение защитной установки управления капиталом прогоняется от 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 — набор [1..nb] дат в формате ГГММДД
// орn - набор [1..nb] цен открытия
// hi - набор [1..nb] максимальных цен
// lо — набор [ 1..nb] минимальных цен
// cls - набор [1..nb] цен закрытия
// vol — набор [1..nb] значений объема
// oi — набор [1..nb] значений открытого интереса
// dlrv — набор [1..nb] средних долларовой волатильности
// nb — количество дней в наборе данных
// ts — ссылка на класс торгового симулятора
// eqcls - набор [1..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]; // используется для инициализации случайной последовательности
// выполняем вычисления по всему объему данных
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+1] == lo[cb+1]) 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+1];
entrybar = cb + 1;
}
else if(ts.position() >= 0 && signal == -1) {
ts.sellopen('2', ncontracts);
entryposted = -1;
entryprice = opn[cb+1];
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];
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 средних истинных диапазонов от цены входа. При удалении защитных остановок от цены входа процент прибыльных сделок возрастал, но другие показатели ухудшались, при приближении — процент прибыльных сделок падал вместе с другими показателями.

Наилучшая общая эффективность по показателям годового соотношения риска/прибыли и средней прибыли сделки была достигнута при целевой прибыли 4,5 и защитной остановке 1,5. При удалении от оптимальных значений возрастало отношение риск/прибыль, равно как и средний убыток в сделке. Между размещением целевой прибыли и защитной установки не было особо выраженной связи. Значения, оптимальные для одного параметра, при изменении другого менялись незначительно. Почти так же хорошо работало сочетание целевой прибыли 1,5 и защитной остановки 4 — была получена несколько большая средняя прибыль в сделке и несколько худшее соотношение риска/прибыли. Интересно, что произвольно заданные значения оказались весьма близкими к оптимальным (занимая соседние ячейки в табл. 14-1). Впрочем, оптимальные значения обеспечили на 6% больше прибыльных сделок, чем произвольно заданные целевая прибыль 4 и защитная остановка 1.

Для оптимальных параметров процент прибыльных сделок составил 39%. При поиске максимального значения обнаружилось, что параметр целевой прибыли 0,5 обеспечивает 69% прибыльных сделок, но со значительно худшими показателями риска/прибыли и средней прибыли со сделки. Это однозначно показывает важность удержания потенциально прибыльных позиций.

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

Заключение

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

Далее

Вернуться к оглавлению

Торговые стратегии
Скальпинг
Стратегия "Середина"
Позиционная среднесрочная
Система ATCF
Стратегия по Moving Average, ADX и Фракталам
Стратегия разворотного периода
Стратегия "теней"
Стратегия "Серфинг"
Стратегия Trend Finder Daily
Стратегия на внутреннем баре
Скальпинг M1 GBPJPY
Стратегия "4 средних"
Торговая стратегия The Bat
Книги по Forex
А.Фарлей "Мастерство свинг-трейдинга"
B. Сафонов "Практическое использование волн Эллиотта в трейдинге"
Кац Дж.О., МакКормик Д.Л. "Энциклопедия торговых стратегий"
Лучшие
дилинговые центры:
Дилинговый центр EXNESS
Дилинговый центр Forex4you
Дилинговый центр Alpari
Торговые стратегии