Изучаем свечи
Страница 1 из 4 1 2 3 4 ПоследняяПоследняя
Показано с 1 по 10 из 37

Тема: Изучаем свечи

  1. #1
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485

    Изучаем свечи

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

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

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

    Вы не можете благодарить!
    Step by step к миллиону ....

  2. #2
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Принцип действия советника достаточно прост:

    PHP код:
    #property copyright "GromProgram"
    #property link      "gromov-o-v@mail.ru"
    #property version   "1.00"
    #property strict
    //+-----------------Переменные-----------------------------------+
     
    extern double    Lot 0.01;
     
    int              ticketTotalStopLevel;
     
    double           SLTP;
     
    bool             New_Bar;
    //+------------------------------------------------------------------+
    int OnInit()
      {
       
    StopLevel MarketInfo(Symbol(), MODE_STOPLEVEL);
       return(
    INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
      }
    //+------------------------------------------------------------------+
    void OnTick()
    {
         
    Checkt();
         
    Fun_New_Bar();
         if (!
    OrderClose(ticketLotAsk2clrBlue)) Print ("Ошибка закрытия ордера "GetLastError());
      if (
    New_Bar == true)
      {   
         if (
    Open[1]<Close[1]) //Условие на БАЙ
             
    {
             if (
    Ask Low[1] <= StopLevel*Point)
                
    SL Low[1] - StopLevel*Point;
                else 
                
    SL Low[1];
               
    // TP = Close[0];
             
    ticket OrderSend(Symbol(), OP_BUYLotAsk2SL0NULL00clrGreen);
             if (
    ticket<0)             
                Print(
    "OrderSend завершилась с ошибкой #",GetLastError());  
                else 
                Print(
    "Функция OrderSend успешно выполнена"); 
             
    Sleep(500); 
             }
             
          if (
    Open[1]>Close[1]) //Условие на СЕЛЛ
             
    {
             if (
    High[1] - Bid <= StopLevel*Point)
                
    SL High[1] + StopLevel*Point;
                else 
                
    SL High[1];
                
             
    ticket OrderSend(Symbol(), OP_SELLLotBid2SL,0NULL00clrRed);
             if (
    ticket<0)             
                Print(
    "OrderSend завершилась с ошибкой #",GetLastError());  
                else 
                Print(
    "Функция OrderSend успешно выполнена"); 
             
    Sleep(500);
             }      
       }
    }
    //+------------------------------------------------------------------+
    void Checkt()
    {
       if(
    ticket>0)
       {
          if(!
    OrderSelect(ticketSELECT_BY_TICKET))
             
    ticket 0;      
          else if(
    OrderCloseTime()!=0)
             
    ticket 0;  
       }
    }

    //-------------------------------------------------------------------- 
    void Fun_New_Bar()               // Ф-ия обнаружения ..
      
    {                              // .. нового бара
       
    static datetime New_Time=0;   // Время текущего бара
       
    New_Bar=false;                // Нового бара нет
       
    if(New_Time!=Time[0])         // Сравниваем время
         
    {
           
    New_Time=Time[0];         // Теперь время такое
           
    New_Bar=true;             // Поймался новый бар
         
    }
      }
    //-------------------------------------------------------------------- 
    1. Удаляем ордер открытый на предыдущем баре (если таковой есть).
    2. Отслеживаем момент зарождения нового (нулевого) бара.
    3. Проверяем условие на барах начиная с 1го.
    4. Открываем ордер. TP срабатывает на закрытии 0 бара.

    В настоящий момент условие выглядит следующим образом:
    Если свеча белая if (Open[1]<Close[1]) покупаем, SL под условной свечей, TP на закрытии текущей свечи
    Если свеча черная if (Open[1]>Close[1]) продаем, SL и TP зеркально

    Вариантов для экспериментов более чем. Достаточно изменить условие. Можно к примеру задать условие не только свече 1, но и рассматривать комбинации свечей 1-2, 1-2-3. Единственное, что нужно помнить нумерация свечей на графике начинается с 0 и считается с права налево. Т.е. текущий бар имеет индекс 0, левее от него 1, 2, 3, и т.д.

    Гонять советника на истории по всем тикам не обязательно, т.к. в нем уже предусмотрена проверка образования нового бара. Смело гоняем по барам.

    - - - Добавлено - - -

    Тестирование проводилось с 1989-2016 год на паре EURUSD, период D1
    Результаты пока следующие:


    Вы не можете благодарить!
    Step by step к миллиону ....

  3. #3
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Как видно из предыдущего поста, покупка после белой свечи, ровно как и продажа после черной в долгосрочной перспективе прибыли не дает.
    Сегодня рассмотрим несколько иную ситуацию. Будем искать подтверждения на вход не по одной свече, а по двум предыдущим.



    Изменим условие в советнике: "Если свеча 2 белая, а свеча 1 черная" расцениваем такое событие как разворот и покупаем рассчитывая на прибыль которую нам даст текущая (0) свеча.

    Сразу отмечу, т.к. мы теперь исследуем не 1 свечу, а 2 то SL мы будем ставить по результатам сравнения Low обоих свечей. Low которой ниже туда и тыкаем SL. Код советника в связи с этим претерпел некоторые изменения.

    PHP код:
    #property copyright "GromProgram"
    #property link      "gromov-o-v@mail.ru"
    #property version   "1.00"
    #property strict
    //+-----------------Переменные-----------------------------------+
     
    extern double    Lot 0.01;
     
    int              ticketTotalStopLevel;
     
    double           SLTP;
     
    bool             New_Bar;
    //+------------------------------------------------------------------+
    int OnInit()
      {
       
    StopLevel MarketInfo(Symbol(), MODE_STOPLEVEL);
       return(
    INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
      }
    //+------------------------------------------------------------------+
    void OnTick()
    {
         
    Checkt();
         
    Fun_New_Bar();
         if (!
    OrderClose(ticketLotAsk2clrBlue)) Print ("Ошибка закрытия ордера "GetLastError());
      if (
    New_Bar == true)
      {   
         if (
    Open[2]>Close[2]&&Open[1]<Close[1]) //Условие на БАЙ 
             
    {
             if (
    Ask Low[1] <= StopLevel*Point || Low[1]<=Low[2])
                
    SL NormalizeDouble((Low[1] - StopLevel*Point), Digits);
                else 
                
    SL NormalizeDouble(Low[2], Digits);
               
    // TP = Close[0];
             
    ticket OrderSend(Symbol(), OP_BUYLotAsk2SL0NULL00clrGreen);
             if (
    ticket<0)             
                Print(
    "OrderSend завершилась с ошибкой #",GetLastError());  
                else 
                Print(
    "Функция OrderSend успешно выполнена"); 
             
    Sleep(500); 
             }
             
          if (
    Open[2]<Close[2]&&Open[1]>Close[1]) //Условие на СЕЛЛ 
             
    {
             if (
    High[1] - Bid <= StopLevel*Point || High[1]>=High[2])
                
    SL NormalizeDouble((High[1] + StopLevel*Point), Digits);
                else 
                
    SL NormalizeDouble(High[2], Digits);
                
             
    ticket OrderSend(Symbol(), OP_SELLLotBid2SL,0NULL00clrRed);
             if (
    ticket<0)             
                Print(
    "OrderSend завершилась с ошибкой #",GetLastError());  
                else 
                Print(
    "Функция OrderSend успешно выполнена"); 
             
    Sleep(500);
             }      
       }
    }
    //+------------------------------------------------------------------+
    void Checkt()
    {
       if(
    ticket>0)
       {
          if(!
    OrderSelect(ticketSELECT_BY_TICKET))
             
    ticket 0;      
          else if(
    OrderCloseTime()!=0)
             
    ticket 0;  
       }
    }

    //-------------------------------------------------------------------- 
    void Fun_New_Bar()               // Ф-ия обнаружения ..
      
    {                              // .. нового бара
       
    static datetime New_Time=0;   // Время текущего бара
       
    New_Bar=false;                // Нового бара нет
       
    if(New_Time!=Time[0])         // Сравниваем время
         
    {
           
    New_Time=Time[0];         // Теперь время такое
           
    New_Bar=true;             // Поймался новый бар
         
    }
      }
    //-------------------------------------------------------------------- 
    - - - Добавлено - - -

    Результаты тестирования на дневках, проверял и другие таймы, дальше - хуже. Уж поверьте на слово.


    Вы не можете благодарить!
    Step by step к миллиону ....

  4. #4
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Чтобы исследование вышеуказанного "паттерна" было полным немного поменяю условия. Если не получается заработать на развороте, попробуем заработать на флете. Пара исследуемых свечей останется той же, только теперь мы будем не покупать обнаружив ее, а продавать. Дело за малым, поменять условия на покупку и продажу местами и прогнать это безобразие на истории.



    А вот собственно и результат на дневках. Я бы даже назвал это некоторым прорывом в исследовании - почти не слили.



    Как обычно, прогон по истории на меньших таймфреймах показал результат хуже.

    Вы не можете благодарить!
    Step by step к миллиону ....

  5. #5
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Так вот, понемногу, тихой цапой, добрались до пин-бара. Свеча, если верить источникам, судьбоносная, потому как прибыльная очень. Проверим, что с ней не так.
    Накидал в поинте картинку, как я представляю эту самую "волшебную" свечу. На картинке она обозначена под номером 1, номер 0 - это та свеча, которую мы будем пробовать доить. Источники утверждают, что цвет свечи неважен, главное хвост. И чем он длинее, тем лучше.



    Для начала попробую описать эту свечу следующим образом: тело свечи, как минимум, в 2 раза короче длинного хвоста && короткий хвост меньше или равен телу свечи. Таким образом, для белого пин-бара наше условие будет выглядеть следующим образом:

    if (Open[1]<Close[1](свеча белая) && Close[1]-Open[1]<=(High[1]-Close[1])/2(тело <= хвост/2) && Open[1]-Low[1]<=Close[1]-Open[1](маленький хвост меньше или равен телу свечи))

    Теперь опишем черную свечу
    if (Open[1]>Close[1](свеча черная) && Open[1]-Close[1]<=(High[1]-Open[1])/2(тело <= хвост/2) && Close[1]-Low[1]<=Open[1]-Close[1](маленький хвост меньше или равен телу свечи))

    Итак, если это чудо свершится, SELL.

    Для Бай, нам придется также описать белую и черную свечи у которых длинный хвост внизу, но это уже потренируйтесь сами, если будет желание.
    А завтра займемся тестированием...

    Вы не можете благодарить!
    Step by step к миллиону ....

  6. #6
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Для ленивых, так и быть, выложу условия необходимые для покупки. В чистом виде они будут выглядеть следующим образом:

    PHP код:
     if ((Open[1]<Close[1] && Close[1]-Open[1]<=(Open[1]-Low[1])/&& High[1]-Close[1]<=Close[1]-Open[1]) || //Условие на БАЙ (белый пин бар)
            
    (Open[1]>Close[1] && Open[1]-Close[1]<=(Close[1]-Low[1])/&& High[1]-Open[1]<=Open[1]-Close[1]))                // (черный пин бар) 
    Ну и наконец результаты тестирования по паре EURUSD-D1



    Вот те раз торговали, торговали аж с 1990 года и на тебе. По традиции меньшие таймы показали результаты хуже. Но и, справедливости ради, стоит заметить, много не потеряли. А значит почти сохранили. Полагаю, можно подвести некоторые промежуточные итоги. Предыдущие тесты показали, что свечные модели "работают" только на D1. Иными словами, свечные модели скорее удел долгосрочников, чем интрадейщиков. Практически все тесты на таймах ниже "дейли" провалились с треском. Если на "дейли" все плохо, на Н4 дела обстоят еще хуже, Н1 совсем беда, и т.д., вплоть до М5. Все проверил, убедился лично. Возможно, дальнейшие исследования смогут переубедить меня, но пока так.

    Вы не можете благодарить!
    Step by step к миллиону ....

  7. #7
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Ну, что пришла пожалуй пора разбавить нашу бочку дегтя ложкой меда, а то уж больно безнадежная картинка складывается. Все таки найдена пара которая в состоянии приносить прибыль после обнаружения пин-бара. И это пара GBPUSD. Спешу поделиться результатами тестов:



    Тестирование проводилось с октября 1993 по сей день, что дает положительной динамике кривой баланса больший вес и внушает доверие. Из личных наблюдений хотелось бы заметить, я тестировал довольно много советников по большому количеству пар и в глаза бросилась одна закономерность, пара GBPUSD в состоянии дать прибыль даже там где другие пары пасуют. Разные совы с абсолютно разными стратегиями при тестировании выдают положительную динамику по самым разнообразным сочетаниям пар, но почти всегда в этом разнообразии будет находится GBPUSD. Даже не знаю с чем это связано, то ли от того, что фантик волатильнее и вход по стратегии дает бОльшую прибыль, то ли эта пара является некоей тихой гаванью с большими шансами для заработка умышленно. Не знаю, реалии складываются именно таким образом.

    Чем займемся дальше? В ближайшем планирую поменять местами условия на покупку/продажу, для пары EURUSD. Если пин бар по этой паре не дает прибыль на разворот, попробуем заработать на откате после этого события. После чего планирую взяться за тему "поглощения", т.к. считаю эту тему достойной самого пристального внимания и очень надеюсь на неплохие результаты.

    - - - Добавлено - - -

    Забыл упомянуть еще об одном моменте. В настоящий момент начальный баланс стоит 10000, лотность по умолчанию 0,01. Я проверил предел заработка по последнему тесту повышая лотность входа. Он составил 1.4 лота без ущерба для депозита и дал прибыли за все время тестирования примерно 27000. Не Бог весть, что конечно, но все таки...

    Вы не можете благодарить!
    Step by step к миллиону ....

  8. #8
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Провел еще пару экспериментов, связанных с пин баром.
    1. В первом, дал волю хвосту быть равным телу свечи. Такие свечи попадаются довольно часто, хотелось изучить поведение пары после их поведения. Точек входа ожидаемо стало больше, но итоговые результаты от этого не улучшились.
    2. Во втором, после пин бара поместил в условиях еще одну свечу. Рассуждал примерно так. Вот появился пин бар на продажу, но пара после него не обваливается как ошпаренная, раскачаться ей нужно, подтвердить так сказать свои намерения, а потом и ухнуть не грех. Вот и проверил свои мысли на этот счет, поместил после пина подтверждающую направление свечу и только после такого подтверждения продавал. Результат - входов меньше в 2 раза, денег больше не заработали.

    Выкладывать результаты не буду, т.к. особых изменений в поведении кривой баланса не произошло.

    - - - Добавлено - - -

    Цитата Сообщение от Ангел обыкновенный Посмотреть сообщение
    В ближайшем планирую поменять местами условия на покупку/продажу, для пары EURUSD. Если пин бар по этой паре не дает прибыль на разворот, попробуем заработать на откате после этого события
    Воплощаю задуманное.
    По паре EURUSD топчемся возле стартовой суммы в небольшой понижательной тенденцией:



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

    Вы не можете благодарить!
    Step by step к миллиону ....

  9. #9
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Модель поглощения описана примерно так:
    Тело свечи 1 перекрывает по размерам тело свечи 2. Тень свечи 2 перекрываться не обязана, но если такое происходит, то это считается более сильным сигналом. Если свеча 2 медвежья, поглощающая ее свеча 1 должна быть бычьей, сигнал на покупку. Это я описал так называемое "бычье поглощение". Сигналом на продажу будет служить "медвежье поглощение". Логика его обнаружения та же, только в обратную сторону.



    В своем алгоритме опишем эту модель так:
    если свеча 2 белая, а свеча 1 черная, тело свечи 1 больше тела свечи 2 - покупаем
    если свеча 2 черная, свеча 1 белая, тело свечи 1 больше тела свечи 2 - продаем

    Вы не можете благодарить!
    Step by step к миллиону ....

  10. #10
    Теоретик Аватар для Ангел обыкновенный
    Регистрация
    29.11.2012
    Адрес
    Страна Чудес
    Сообщений
    1,374
    Promo (¢)
    665
    Благодарности
    Получено: 436
    Отправлено: 485
    Результаты по EURUSD нельзя назвать впечатляющими, ровно как и по фунту



    Попробуем немного изменить условия и пусть тело свечи 1 превышает тело 2 больше чем в 2 раза. Результаты EURUSD-D1



    И наконец, пусть свеча 1 полностью перекрывает тень свечи 2.
    EURUSD

    GBPUSD

    Вы не можете благодарить!
    Step by step к миллиону ....

Страница 1 из 4 1 2 3 4 ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •