Автор Тема: Торговая система на основе трендового индикатора WATR  (Прочитано 25974 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AndrewАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 119
  • +9/-2
    • Просмотр профиля
Наткнулся на одном из сайтов-однодневок: http://wizardserg.inweb.ru/watr на интересную торговую тактику. , Может кто-нибудь захочет написать эксперта  :-) ?


С чего можно начать поиски Святого Грааля финансового трейдинга? Думаю с чего-нибудь совсем простого. А что может быть проще обычного следования за трендом. Все говорят "trend your frend", а мы и не против. Самое главное в этой стратегии это обозначить для себя правила определения трендов.

Посмотрим, что говорят об этом маститые профи. Открываем журнал "Современный Трейдинг", номер 4 за 2001 год. Статья Константина Копыркина "Индикатор Тренда на основе прорыва динамического ценового канала" (если, случайно, у вас не оказалось под рукой этого номера, товы можете скачать статью здесь:  http://wizardserg.inweb.ru/files/4_24_28.pdf). Автор предлагает индикатор тренда, и это именно то что нам нужно.

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

Из рисунка понятно, что такой простой на первый взгляд индикатор должен отлично показывать направление тренда. Посмотрим как это выглядит в MetaTrader.

Отлично! Индикатор четко показывает текущее направление тренда. Конечно, двузначная логика up/down не учитывает флэт, прийдется с этим смирится.

Сама собой напрашивается торговая стратегия на основе этого индикатора - сменился тренд, входи в рынок! Был синий, стал красный - покупай. Был красный, а стал синий - продавай. Н-да, надо бы это проверить на истории.

Это не так уж и сложно, торговая платформа MetaTrader обладает отличными возможностями для тестирования торговых стратегий на исторических данных. Но для этого надо написать эксперта-советника, который будет торговать в автоматическом режиме, основываясь на показаниях индикатора WATR.


Рисунок 1: Принцип расчета индикатора WATR

Рисунок 2: График EURUSD M1 с нанесенным индикатором WATR

Рисунок 3: График EURUSD H1 с нанесенным индикатором WATR



Оффлайн AndrewАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 119
  • +9/-2
    • Просмотр профиля
Эксперт написан, оптимизирован, и вот результаты:

Рисунок 4: Эквити советника на EURUSD H1 01.01.2001 - 01.01.2006

Рисунок 5: Результаты тестирования советника на EURUSD H1 01.01.2001 - 01.01.2006

А вот тоже самое, но с реинвестированием средств:

Рисунок 6: Эквити советника на EURUSD H1 01.01.2001 - 01.01.2006 с реинвестированием прибыли

Рисунок 7: Результаты тестирования советника на EURUSD H1 01.01.2001 - 01.01.2006 с реинвестированием прибыли

Оффлайн AndrewАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 119
  • +9/-2
    • Просмотр профиля
Неплохо, правда? Чтобы нивелировать результаты оптимизации, которая проводилась на данных с 2001 по 2006 год, проверим эксперта на тестовых данных. Это будет 2006 год. Как поведет себя эксперт в незнакомой ситуации?

Рисунок 8: Эквити советника на EURUSD H1 01.01.2006 - 01.01.2007

Рисунок 9: Результаты тестирования советника на EURUSD H1 01.01.2006 - 01.01.2007

С реинвестированием средств:

Рисунок 10: Эквити советника на EURUSD H1 01.01.2006 - 01.01.2007 с реинвестированием прибыли

Рисунок 11: Результаты тестирования советника на EURUSD H1 01.01.2006 - 01.01.2007 с реинвестированием прибыли

Чистая прибыль $41547 за 1 год на вложенные $10k. Замечательно! Думаю, это понравится очень многим трейдерам. Конечно, это не грааль, и эта стратегия не позволит заработать $1 млн. за 1 год, но кому-то она точно приглянется. Пользуйтесь совершенно свободно, она ваша!

Не забывайте, прибыли в прошлом не гарантируют прибылей в будущем, рынок никому ничего не должен.

Оффлайн AndrewАвтор темы

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 119
  • +9/-2
    • Просмотр профиля
Осталось сказать о мелочах. В статье Константина Копыркина приводится код индикатора WATR для Omega TradeStation, для MetaTrader код представлен ниже.


//+------------------------------------------------------------------+
//| WATR.mq4
//| Written WizardSerg under article konkop in "Modern trading" #4/2001
//| http://www.wizardserg.inweb.ru
//| wizardserg@gmail.com
//+------------------------------------------------------------------+
#property copyright "Written WizardSerg under article konkop in  #4/2001"
#property link      "http://www.wizardserg.inweb.ru"
 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Coral
#property indicator_color2 DodgerBlue
 
//---- input parameters
extern int       WATR_K = 10;
extern double    WATR_M = 4.0;
extern int       ATR = 21;
 
//---- buffers
double ExtMapBufferUp[];
double ExtMapBufferDown[];
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()

    IndicatorBuffers(2); 
    SetIndexBuffer(0, ExtMapBufferUp);
    ArraySetAsSeries(ExtMapBufferUp, true);     
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
    SetIndexBuffer(1, ExtMapBufferDown);
    ArraySetAsSeries(ExtMapBufferDown, true);     
    SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
    IndicatorShortName("WATR(" + WATR_K + ", " + WATR_M + ")");
    return(0);
}
 
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
 
//+------------------------------------------------------------------+
//| Custom indicator function                                        |
//+------------------------------------------------------------------+
bool AntiTrendBar(int i)
{
    bool res = (TrendUp(i) && (Close[i] < Open[i])) ||         
              (!TrendUp(i) && (Close[i] > Open[i]));   
    return(res);
}
 
//+------------------------------------------------------------------+
//| Custom indicator function                                        |
//+------------------------------------------------------------------+
double CalcIndicValue(int i, bool trend)
{
    double res = Close[i]; 
    if(trend)
        res -= (WATR_K*Point + WATR_M*iATR(NULL, 0, ATR, i));
    else
        res += (WATR_K*Point + WATR_M*iATR(NULL, 0, ATR, i));       
    return(res);
}
 
//+------------------------------------------------------------------+
//| Custom indicator function                                        |
//+------------------------------------------------------------------+
bool TrendUp(int i)
{
    return((Close[i+1] > ExtMapBufferUp[i+1]) && (ExtMapBufferUp[i+1] != EMPTY_VALUE));
}
     
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
    int limit;
    int counted_bars = IndicatorCounted();
    //---- последний посчитанный бар будет пересчитан
    // if(counted_bars > 0) counted_bars--;
    //---- первое значение индикатора == цене-1 point, т.е. считает тренд восходящим
    ExtMapBufferUp[Bars] = Close[Bars] - WATR_K*Point;     
    // limit = (counted_bars > 0) ? (Bars - counted_bars) : (Bars - 1);
    limit = Bars - counted_bars;
    //if(limit == Bars) limit--;
    //---- основной цикл
    for(int i = limit; i >= 0; i--)
    {
        if( AntiTrendBar(i) )
        {
            ExtMapBufferUp[i] = ExtMapBufferUp[i+1];           
            ExtMapBufferDown[i] = ExtMapBufferDown[i+1];           
        }
        else
        {
            if(TrendUp(i))
            {
                ExtMapBufferUp[i] = CalcIndicValue(i, true);
                if(ExtMapBufferUp[i] < ExtMapBufferUp[i+1])
                    ExtMapBufferUp[i] = ExtMapBufferUp[i+1];                                 
                ExtMapBufferDown[i] = EMPTY_VALUE;
            }
            else
            {
                ExtMapBufferDown[i] = CalcIndicValue(i, false);                       
                if(ExtMapBufferDown[i] > ExtMapBufferDown[i+1])
                    ExtMapBufferDown[i] = ExtMapBufferDown[i+1];                                             
                ExtMapBufferUp[i] = EMPTY_VALUE;
            }
        }
        // пересечения с ценой                 
        if(TrendUp(i) && (Close[i] < ExtMapBufferUp[i]))
        {
            ExtMapBufferDown[i] = CalcIndicValue(i, false); 
            ExtMapBufferUp[i] = EMPTY_VALUE;
        }
        if((!TrendUp(i)) && (Close[i] > ExtMapBufferDown[i]))
        {
            ExtMapBufferUp[i] = CalcIndicValue(i, true);                 
            ExtMapBufferDown[i] = EMPTY_VALUE;
        }
    }
    return(0);
}
//+------------------------------------------------------------------+

Оффлайн VALERY43

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 66
  • +23/-18
    • Просмотр профиля
Какой оптимальный  таймфрейм?

Оффлайн ETV1

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 23
  • +1/-0
    • Просмотр профиля
    • Индикаторы для МТ4
Одна из моих торговых систем так же основана на индикаторе WATR, т.е. на графике присутствует только индикатор WATR. Торговля ведётся в ручную, очень много сигналов пропущено, но всё же... результат есть. В доказательство, что это не просто слова, прикрепил отчёт (за 4 месяца). На мой взгляд, наиболее подходящая валютная пара eur/jpy, это видно из отчёта, к слову, наибольшее количество пропущенных профитных сигналов именно было по этой паре. Вот и вчера проморгал сигнал с профитом в 100 пунктов. И ещё, в монитор не сижу и не пялюсь,было время подашёл, выставил или удалил ордера и ушёл, от сюда и пропуск сигналов. Использую на H1.Системка основана на этом идикаторе,но отлична от той что предложена, т.е. входы и выходы осуществляются при других условиях.

----
Удачи во всём!!!
Дорогa в тысячу ли начинается с первого шага. (Лао Цзы).

Оффлайн RON

  • Вот что имеешь....
  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 34
  • +0/-0
  • Вот это да...
    • Просмотр профиля
Цитировать
Эксперт написан, оптимизирован...

Уважаемый Andrew, а советник выложить для изучения можно?  ^-^
Всё будет хорошо!

Оффлайн kvn56

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 37
  • +4/-1
    • Просмотр профиля
to RON
Ну так он и просит написать советник (см. его первый пост), весь текст ниже - это написано на сайте, который он указал.

Оффлайн Gray

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 2
  • +1/-0
    • Просмотр профиля
Решил тут набросать советничка на эту тему. Пока из личныйх наблюдений могу отметить следущее:

1) Отображаемые линии, вполне могут быть ориентиром для динамического стоплоса (пардон, если термин подобрал не точно). Если цена пробивает линию, то это практически стопроцентная смена направления и ждать смену цвета линии не имеет смысла.

2) Так же линии могут стать детектором флета. Если на протяжении долгого времени WATR остаётся на прежнем уровне - применяй контрмеры (к примеру лови локальный минеимум/максимум и закрывайся с минимальными потерями). Конечно метод не ахти какой оперативный, но впринципе потери снизит позволит.

Вообще мне затея понравилась, если есть у кого тоже заинтересованность стучись в асю. Програмить я более-менее умею, а вот трейдерскими навыками не владею.

Оффлайн Gray

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 2
  • +1/-0
    • Просмотр профиля
Тестируйте.
Стоп привязан к линии WATR. Иногда бывают ложные срабатывания, но зато стоп подтягивается уменьшая убытки.

Оффлайн Ultramarin

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 11
  • +0/-0
    • Просмотр профиля
Странно у меня он выдает 2 предупреждения и откаывается торговать

Оффлайн Ultramarin

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 11
  • +0/-0
    • Просмотр профиля
Как по мне так очень интересная идея. Буду ждать с нетерпением когда найдется тот кто сможет починить.

Оффлайн Ultramarin

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 11
  • +0/-0
    • Просмотр профиля
Помогите найти рабочий советник на базе индикатора WATR


От модератора:
1.) Не стоит создавать ветку с аналогичной темой, учитывая, что обе темы соседствуют.
2.) Не стоит публиковать просьбу аналогичного содержания в нескольких ветках/темах форума.

Оффлайн ETV1

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 23
  • +1/-0
    • Просмотр профиля
    • Индикаторы для МТ4
Странно у меня он выдает 2 предупреждения и откаывается торговать
Помогите найти рабочий советник на базе индикатора WATR


Держи, исправил...
Дорогa в тысячу ли начинается с первого шага. (Лао Цзы).

Оффлайн Vidok

  • Thank You
  • -Given:
  • -Receive:
  • Сообщений: 67
  • +5/-0
    • Просмотр профиля
Какой таймфрейм то ёлы-палы ответьте оптимален  :|