Использованы стандартные выходы. Все тесты проведены с использованием C-Trader toolkit. Для того чтобы была возможность сравнить результаты, использованы портфели, стратегии выхода и платформа тестирования, идентичные использованным ранее. Тесты разделены на следующие за трендом и идущие против тренда. О
ни проводились на основе скрипта, содержащего инструкции для установки параметров, проведения опти-Во всех нижеследующих тестах использован стандартный портфель. Количество торговые сигналы форекс контрактов при покупке или продаже при входе на любом рынке в любое время подбиралось так, чтобы приблизительно соответствовать долларовой волатильности двух контрактов S&P 500 на конец 1998 г. Использованы стандартные выходы. Все тесты проведены с использованием C-Trader toolkit. Для того чтобы была возможность сравнить результаты, использованы портфели, стратегии выхода и платформа тестирования, идентичные использованным ранее. Тесты разделены на следующие за трендом и идущие против тренда. Они проводились на основе скрипта, содержащего инструкции для установки параметров, проведения опти-мизации и генерации результатов для каждого сочетания видов скользящих средних, моделей и входных приказов.Приведенный ниже код более сложен, чем код для пробоев; вместо разных последовательностей для комбинаций скользящих средних, правил входа и приказов использован один цикл, в котором параметры управляют выбором элементов системы. Этот метод необходим при генетическом развитии систем. Хотя здесь, собственно, нет генетических алгоритмов, подобные методы будут использованы в следующих главах торговые сигналы форекс. Этот код содержит параметры для управления элементами модели, упрощая обработку всех возможных комбинаций в систематическом виде.
// генерировать входные сигналы, цены стоп- и лимитных приказов, // используя модель входа определенной скользящей средней #define CrossesAbove(a,b, с) {а[с]>=b[с] && a [c-1]=b[c-1]) #define TurnsUp(a,c) {a [c]>=a[c-l] && a [c-1] = a [ c - 2 ] ) signal=0; switch(modeltype) {case 1: // классическая следующая за трендом модель, основанная на // пересечении if (CrossesAbove(fastma, slowma, cb)) signal = 1; else if (CrossesBelow(fastma, slowma, cb)) afnikola.blogspot.com signal = -1; limprice = 0.5 * (hi [cb] + lo [cb]); stpprice = cls [ c b ] + 0 . 5 * signal * exitatr[cb] ; break; case 2: // следующая за трендом модель, основанная на наклоне if (TurnsUp(fastma, cb)) signal = 1; else if(TurnsDn{fastma, cb)) signal = -1; limprice = 0.5 * (hi[cb] + lo [cb]}; stpprice = cls[cb] +0.5 * signal * exitatr[cb]; break; case 3: // противотрендовая модельВ этом коде содержатся три сегмента. Первый сегмент рассчитывает скользящие средние. Параметр avgtype выбирает вид среднего: 1 — простое, 2 — экспоненциальное, 3 — треугольное с передним взвешиванием, 4 — модифицированное VIDYA.
Даже если в коде использовано всего одно среднее, рассчитываются два одинаковых, чтобы сделать выбор вида скользящего среднего независимым от модели. Также рассчитывается средний истинный диапазон, значение которого требуется для установки защитных остановок и целевых прибылей в стратегии стандартных выходов. Два дополнительных параметра — fastmalen и slowmalen — указывают период быстрой и медленной скользящих средних. Значения скользящих средних сохраняются в векторах fastma и stowma.Следующий блок использует выбранную модель для получения сигналов выхода, цен для стоп-приказов и цен для лимитных приказов. Сна-чала определяются простые соотношения значений (CrossesAbove, CrossesBelow, Turnsllp и TurnsDown). В зависимости от mode/type одна из 4 видов моделей скользящих средних генерирует сигнал.
Переменная modeltype принимает следующие значения: 1 — классическая, следующая за трендом модель пересечения двух скользящих средних; 2 — следующая за трендом модель, основанная на наклоне; 3 — противотрендовая модель, основанная на пересечении и 4 — противотрендовая модель на основе поддержки/сопротивления. В классической модели, основанной на пересечении скользящих средних, трейдер открывает длинную позицию, если быстрое среднее поднимается выше медленного, и короткую, если быстрое среднее опускается ниже медленного торговые сигналы форекс. Эта модель также может содержать сравнение скользящего среднего и цены в случае, когда период быстрого среднего приравнен к единице. При использовании основанной на наклоне модели, следующей за трендом, трейдер покупает, когда скользящее среднее после снижения стало расти, и продает в обратной ситуации. Эта модель требует только медленного скользящего среднего. Противотрендовая модель представляет собой обратную версию следующей за трендом классической модели пересечения: трейдер покупает, когда быстрое среднее (или собственно цена) опускается ниже медленного, и продает, когда оно поднимется выше. Такая модель — мечта для приверженцев теории противоположного мнения: она работает строго противоположно системе следования за трендом.
Последняя модель — грубая система на основе поддержки/сопротивления, где ожидается, что цены будут «отскакивать» от линии скользящего среднего, как от уровней поддержки/сопротивления. Правила почти идентичны про-тивотрендовой системе пересечения за тем исключением, что медленное среднее должно двигаться в направлении входа. Если медленное скользящее среднее стремится вверх, а цены (или быстрое среднее) падают сверху до его уровня или ниже, то дается сигнал на покупку; в противном случае дается сигнал на продажу. Дополнительное правило тренда обеспечивает защиту от немедленного разворота позиции после соприкосновения или пересечения средних. Без этого ограничения быстрый пробой с последующим разворотом вызвал бы два входа — желаемый вход против тренда и второй при пересечении средней во время отката цен. Контроль тренда позволяет входить только при движении в одном направлении: пересечение и отскок при повышающемся тренде приводят к открытию длинной позиции, а при понижающемся тренде — к открытию короткой.В последней части кода параметр ordertype определяет вид приказа: 1 — рыночный приказ при открытии; 2 — лимитный приказ; 3 — стоп-приказ. Генерация приказа на покупку или продажу либо отсутствие приказа определяется тем, какой сигнал был сгенерирован предыдущим блоком программы; эта информация содержится в переменной signal: 1 — покупка; —1 — продажа (открытие короткой позиции); 0 — нет приказа. afnikola.blogspot.com
Уровень цены лимитного приказа (limprice) рассчитывается как суммамаксимума и минимума текущего дня, деленная на два. Поскольку многие из моделей не имеют естественного уровня цены для установки входных стоп-приказов, используется стандартный стоп. Его цена (stpprice) получается таким образом: берется цена закрытия предыдущего дня и к ней прибавляется (при сигнале для длинной позиции) или от нее отнимается (при сигнале для короткой позиции) средний истинный интервал за последние 50 дней, умноженный на 0,50; т.е. рынок должен сместиться как минимум на половину среднего дневного движения в направлении желаемого входа, чтобы этот вход имел место. Такой стоп-приказ как бы добавляет методику пробоя к скользящим средним — рынок должен «пробить» некоторую границу, чтобы сработал вход. Поскольку тестов проводилось множество, мы приводим только наиболее интересные результаты статистического анализа.
Комментариев нет:
Отправить комментарий