24398f5c

Тестирование целевой прибыли


На этой основе удалось получить лучшую из пока обнаруженных стратегий размещения защитной остановки при исходном параметре 2,5, сдвиге СИДС = 1 и коэффициенте адаптации КОЭФФ = 0,30. В оригинальном тесте модифицированного ЭСС (табл. 14- 4) был использован оптимальный фиксированный уровень целевой прибыли, сейчас же на его место поставлен динамический лимитный приказ — уровень целевой прибыли, который изначально установлен далеко от рыночной цены, но приближается к ней со временем. Идея состоит в том, чтобы обеспечить выход из застойных сделок на пике шумовой активности цены, при этом не жертвуя прибылью потенциально выгодных позиций в первые дни их жизни. Использованный подход очень напоминает методику получения динамической защитной остановки на основе экспоненциального скользящего среднего. Здесь скользящее среднее инициализируется необычным образом: скользящей сумме присваивается значение рыночной цены плюс (для длинных) или минус (для коротких позиций) произведение среднего истинного диапазона и параметра ptlim. Таким образом, скользящее среднее начинается, как и при вычислении защитной остановки. Точно таким же образом уровень целевой прибыли корректируется в каждый последующий день: расстояние между текущей ценой целевой прибыли и текущей ценой закрытия умножается на параметр ptga. Результат затем вычитается из текущей цены целевой прибыли, приближая ее к рыночной цене. В отличие от защитной остановки целевая прибыль может перемещаться в обоих направлениях, хотя это и маловероятно — если позиция открыта уже достаточно долго, то лимитный приказ прервет сделку при любом сильном благоприятном движении цены. Второй параметр ptga управляет периодом скользящего среднего, т.е. скоростью приближения целевой прибыли к рыночной цене. Правила, в общем, идентичны вышеприведенному тесту защитной остановки на модифицированном ЭСС, но относятся к уровню целевой прибыли.

// Выходим из сделок, используя стандартный выход с улучшенными защитными

// остановками и целевой прибылью

atr = exitatr[cb];

if(entryposted > 0) {

// инициализация и выходы для длинных позиций на каждый день

switch (modeltype) {

case 1:

limprice = entryprice + ptlira * atr;

stpprice = min (Lowest(lo, 2, cb),

entryprice = mmstp * atr);

break;

case 2:

case 3:

case 4:

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(modeltype) {

case 1:

limprice = entryprice - ptlim * atr;

stpprice = max (Highest(hi, 2, cb)

entryprice + mmstp * atr) ;

break;

case 2:

case 3:

case 4:

limprice = entryprice - ptlim * atr;

stpprice = entryprice + mmstp * atr;

break;

default: nrerror("Invalid modeltype");

}

ts.exitshortlimit('C' , limprice);

ts.exitshortstop('D' , stpprice);

}

else {

Содержание раздела

[an error occurred while processing this directive]