home

Определитель Тренда — Trend Detector

Далеко не первый год я достаточно успешно применяю в торговле собственные разработки, созданные в основном для работы на волатильных фьючерсных инструментах. В качестве примера, мой советник Дюймовочка (или Ночной охотник) много раз становился призером различных соревнований экспертов. А однажды стал и победителем конкурса, в котором советники Форекс на реальных счетах доказывали кто из них лучше! Дюймовочка тогда увеличила начальный депозит с 1500 до 3350 единиц за 5 месяцев с начала конкурса.

Есть много различных приемов, которые позволяют улучшить и оптимизировать торговлю советников:

  • использование различных трендовых индикаторов и фильтров;
  • использование закономерностей заложенных в движения цены;
  • применение оптимизированных приемов, которые описаны в классических трудах известных трейдеров…

Всех приемов и не перечислить….

Сегодня мы предлагаем рассмотреть своеобразный Определитель Тренда, который создан для работы в советниках, написанных для торговой платформы MetaTrader4.

Чтобы увидеть все возможности Определителя Тренда (или как я его называю Trend Detector), рассмотрим стандартный советник на МА (Скользящих Средних, или как их еще называют — машках). Тестирование я произвожу по ценам открытия, потому что советник доработан именно для этой модели.

Вот контрольный график баланса советника с 1 сентября текущего 2009 года по 18 ноября по фьючерсному контракту 6EZ9 (евродоллар) на тайм-фрейме М30. Торговые параметры выставлены «на глазок»:

Тест советника без Детектора

А вот график баланса этого же советника, но со встроенным в его код Тренд-детектором. Никаких дополнительных оптимизаций не проводилось! Как говорится — почувствуйте разницу:

Тест советника с Детектором

Идея в следующем: В выбранном советнике используем встроенные в MetaTrader4 индикаторы Силы Быков (BullsPower) и Силы Медведей (BearsPower). Мы сравниваем их значения друг с другом. При этом сравнивать их побарно дело не очень перспективное. Чтобы решить этот вопрос, подключаем к ним индикатор Скользящей Средней (Moving Average) в режиме iMAOnArray (как видно на рисунке ниже) и сравниваем данные MA на нулевых барах индикаторов Бычьей и Медвежьей силы! Просто берем и складываем эти данные, а сумму считаем в качестве Delta. Дальше все просто. При Delta > 0 мы считаем, что на рынке доминирует восходящий тренд (UP-тренд). При Delta < 0 мы считаем, что на рынке преобладает нисходящий тренд (Down-тренд)!

На языке MQL4 это будет выглядеть примерно так:

К внешним параметрам нужного нам эксперта добавляем следующий код:

extern int PeriodPower = 13;
extern int Period_Bulls = 15;
extern int Period_Bears = 15;

Где:

Переменная PeriodPower является периодом индикаторов BullsPower и BearsPower;

Переменная Period_Bulls является периодом индикатора MA на BullsPower;

Переменная Period_Bears является периодом индикатора MA на BearsPower.

Код самого Определителя Тренда выглядит следующим образом:

double Bears_array[30];

int cx=0;

while (cx < 30) // задаем массив значений
 {
  Bears_array[cx]= iBearsPower(NULL, 0, PeriodPower,PRICE_CLOSE,cx); cx++;
 }

ArraySetAsSeries(Bears_array,true); // вешаем МА на iBearsPower

double MA_Bears = iMAOnArray(Bears_array,0,Period_Bears,1,MODE_SMMA,0); 
 
double Bulls_array[30]; int lx=0;

while (lx < 30) // задаем массив значений
 {
  Bulls_array[lx]= iBullsPower(NULL, 0, PeriodPower,PRICE_CLOSE,lx); lx++;
 } 

ArraySetAsSeries(Bulls_array,true); //вешаем МА на iBullsPower

double MA_Bulls =iMAOnArray(Bulls_array,0,Period_Bulls,1,MODE_SMMA,0); 
 
double Delta = MA_Bears + MA_Bulls; // вычисляем Дельту

На графике ниже отчетливо видно, что если ны рынке преобладает нисходящий (Down) тренд, то Delta, соответственно, будет < 0:

Нисходящий тренд

Таким образом, возможна ситуация, при которой установка Определителя Тренда в убыточный советник может превратить его в прибыльный за счет интеграции трендового фильтра.

Для этого достаточно в советник добавить следующие условия.

При проверке условий на покупку:

if(Delta >= 0 && ... ... ) // если условия соблюдены, то покупаем

При проверке условий на продажу:

if(Delta <= 0 && ... ...) // если условия соблюдены, то продаем

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

Также можно величину Delta сделать внешней переменной, что позволит прооптимизировать её отдельно для входов на покупку и на продажу в диапазоне, к примеру от -0.05 до +0.05.

Давайте теперь рассмотрим один из примеров работы советника с интегрированным в него Определителем Тренда. Мы видим, что на графике присутствует восходящий (UP) тренд и наш советник предпочтительно работает только в покупки (Buy). Синими стрелками обозначены входы на покупки, а красными стрелкам входы на продажу. Если цена развернется к нисходящему тренду (что видно на правой части графика), то эксперт начнет продавать.

Пример работы Trend Detector

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

Удачи всем!

Журнал FX Review