Продолжите выполнение сценария. Следующая строка устанавливает стоп-лосс:
Stop = 4*ATR(100);
Stop — это предопределенная переменная. Zorro уже «знает» его, поэтому его не нужно определять с помощью var. Он определяет стоп-лосс, т.е. максимально допустимый убыток. Позиция автоматически продается, если она теряет больше указанной суммы. Здесь этот предел задан 4*ATR(100). Функция ATR является традиционным индикатором — Average True Range. Он дает среднюю высоту свечи в пределах определенного количества баров, здесь последние 100 баров, причем более новые свечи имеют больший вес, чем более старые. Поэтому позиция продается, если цена двинулась в неправильном направлении более чем на четыре средние свечи. Поскольку Stop здесь не устанавливается на фиксированное значение, а зависит от колебаний цены, стоп-лосс всегда подстраивается под ситуацию на рынке. Если цена сильно колеблется, допускаются более высокие потери. В противном случае сделки будут прекращаться слишком рано.
Стоп-лосс обычно используется во всех стратегиях. Это не только ограничивает потери, но и позволяет рассчитать риск и, таким образом, провести более точный анализ эффективности.
Следующие четыре направления являются ядром стратегии:
if(valley(Trend)) enterLong(); else if(peak(Trend)) enterShort();
valley — это бинарная функция. Он возвращает не числовое значение, а либо false, либо true. Последний именно тот случай, когда ряд, переданный в качестве параметра, после нисходящего движения снова движется вверх. Функция peak возвращает true, если после восходящего движения серия снова движется вниз. Затем выполняется условие if и открывается длинная или короткая позиция. Если противоположная позиция уже открыта, вызов enterLong/enterShort автоматически закроет ее. Мы видим, что первая else-ветвь содержит второе if-условие. Таким образом, второе условие запрашивается только в том случае, если первое условие if не выполнено. Такие else if — конструкции часто встречаются в программах — они экономят время, поскольку таким образом не все if-условия всегда должны быть оценены.
Давайте посмотрим на сделку, выполненную этим кодом:
Рис. 17 — Изменение тренда с помощью фильтра низких частот
Темная линия на рисунке выше — это трендовый ряд — цена, отфильтрованная по низким частотам. Пик" 5 января генерирует значение функции «истина-возврат», что, в свою очередь, вызывает короткую сделку. На рисунке торговля обозначена прямой линией, соединяющей два маленьких круга. Эта короткая сделка была снова закрыта 12 января путем открытия длинной сделки. Последний — как результат «долины» кривой тренда с истинным значением функции долины. Мы видим, что пики и впадины кривой тренда отстают от кривой цены примерно на два дня. Если бы это было не так, то короткая сделка была бы открыта 4 января и закрыта 10 января (после выходных, которых не видно на графике). Это принесло бы почти 5 центов, т.е. прибыль в 500 пунктов. Как и было, это было всего лишь около 80 пунктов. Поэтому задержка сделок из-за запаздывания сигнальных кривых оказывает огромное влияние на результат стратегии. К сожалению, полностью устранить его невозможно в принципе — для этого нужно уметь заглядывать в будущее. Кстати, обычная скользящая средняя (индикатор SMA) с такими же параметрами имела бы задержку не два дня, а две недели до кривой цены.
Но теперь пришло время определить, выгодна ли вообще стратегия Алисы.
Продолжение следует...
Так то интересно НО к примеру вот здесь financial-hacker.com/petra-on-programming-truncated-indicators/#more-3503
У автора НЕ правильно считается TrancatedBandpass — вообще неправильно.
И возникает вопрос сколько еще у него таких ошибок?