Индикаторы: All_channel

 

All_channel:

Рисует на всех тайм-фреймах каналы линейной регрессии, указывает пробои каналов и направление тренда

Author: Evgeni Inkov

 

  ОТ АВТОРА: 

             Индикатор расчитан на ручную торговлю, т.к. иногда приходится подстраивать длину канала в зависимости от ситуации  на рынке.

                                              Поясню немного алгоритм индикатора.      

    - Каналы строятся по фракталам. Фракталы нумеруются в обратном порядке с нуля, т.е. начало первой линии  - это нулевой фрактал, следующий перелом - 1-ый фрактал и т.д. Таким образом, указывая  конечную волну фрактала Voln_end, можно задавать длину канала ( Voln_end=0 - это отключение данного канала).

     - Линии  канала имеют разный стиль прорисовки: верхняя линия канала - жирная линия, средняя - пунктирная, нижняя - тонкая. Если навести курсор на  линию, появится надпись принадлежности линии к соответствующему каналу.

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

---------------------------------------------------------

Алгоритм торговли может быть сдедующим (на пробой канала):

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

 
Неплохая разработка.  Респект.   Есть одно маленькое пожелание. Нельзя ли опционально сделать деление каналов на три части ( а не на две, как это сделано сейчас).
 
BigeR:
Неплохая разработка.  Респект.   Есть одно маленькое пожелание. Нельзя ли опционально сделать деление каналов на три части ( а не на две, как это сделано сейчас).

Можно конечно, но на экране и так много линий, если добавить ещё деление каждого канала на N частей, думаю, это уже будет перебор..)
 
Evgen57:
BigeR:
Неплохая разработка.  Респект.   Есть одно маленькое пожелание. Нельзя ли опционально сделать деление каналов на три части ( а не на две, как это сделано сейчас).

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

подскажите:

линия канал строится по двум точкам? одна close Voln_end, а вторая точка какая?

и как ширина канала определяется? 

 
Omm:

подскажите:

линия канал строится по двум точкам? одна close Voln_end, а вторая точка какая?

и как ширина канала определяется? 

 Вторая точка канала - это первый бар графика или точка пробоя канала

Ширина канала - это максимальное отклонение (по Close) от средней линии канала.

 
BigeR:
 Есть одно маленькое пожелание. Нельзя ли опционально сделать деление каналов на три части ( а не на две, как это сделано сейчас).

 Введите внешнюю переменную Percent_Add_Line (выделена красным шрифтом):

//+------------------------------------------------------------------+
extern double Percent_Add_Line = 50; // процент от половины канала дополнительной линии 
extern bool Out_ZigZag = true; // выводить зиг-заг на экран
extern bool comm = true; // выводить комментарии на экран
//+------------------------------------------------------------------+

Замените процедуру out_channel внутри индикатора на следующую:

//---------------------------
void out_channel(int TF, int n, double pr1, double pr2, double max_d, double time_line1, double time_line2, color col_kanl)
{
      // правые координаты канала
   double pr1_max=pr1+max_d;
   double pr1_min=pr1-max_d;
   
      // левые координаты канала 
   double pr2_max=pr2+max_d;
   double pr2_min=pr2-max_d;
   
   if (Period() <= TF)
   {
      if (Percent_Add_Line>0)
      {
         double p11=pr1+(pr1_max-pr1)*Percent_Add_Line/100.0;
         double p21=pr2+(pr2_max-pr2)*Percent_Add_Line/100.0;
         double p12=pr1-(pr1-pr1_min)*Percent_Add_Line/100.0;
         double p22=pr2-(pr2-pr2_min)*Percent_Add_Line/100.0;
         out_TL("TL_in_up"+str_TF(n), p11, p21, time_line1, time_line2, col_kanl, 1, STYLE_DASHDOT);
         out_TL("TL_in_dw"+str_TF(n), p12, p22, time_line1, time_line2, col_kanl, 1, STYLE_DASHDOT);
      }
      else
      {
         ObjectDelete("TL_in_up" +str_TF(n));
         ObjectDelete("TL_in_dw" +str_TF(n));
      }
      out_TL("TL_max" +str_TF(n), pr1_max, pr2_max, time_line1, time_line2, col_kanl, 2, STYLE_SOLID);
      out_TL("TL_cenr"+str_TF(n), pr1,     pr2,     time_line1, time_line2, col_kanl, 1, STYLE_DASH);
      out_TL("TL_min" +str_TF(n), pr1_min, pr2_min, time_line1, time_line2, col_kanl, 1, STYLE_SOLID);
   }
   else
   {
      del_obj(n);
      ObjectDelete("TL_in_up" +str_TF(n));
      ObjectDelete("TL_in_dw" +str_TF(n));
      ObjectDelete("TL_max" +str_TF(n));
      ObjectDelete("TL_cenr"+str_TF(n));
      ObjectDelete("TL_min" +str_TF(n));
   }
}
//---------------------------

Если Percent_Add_Line установить в ноль, то доп. линии не будет.

Если установить процент  Percent_Add_Line=33.33 - это будет деление канала на 3 равные части.

 Если поставить = 130 - это будет  расширение канала на 30 % и т.д.

ОК ?

 

Очень хорошая работа. Спасибо, надо будет получше разобраться.

Единственное что не понятно, это построение ЗигЗага трендовыми, а не SetIndexStyle(0, DRAW_SECTION);

 
AlexeyVik:

Единственное что не понятно, это построение ЗигЗага трендовыми, а не SetIndexStyle(0, DRAW_SECTION);

Спасибо за оценку! Приятно, что разбираетесь в коде... 

Трендовые линии остались исторически, когда-то зиг-заг у меня был разноцветным. Да и буферов  больше восьми в индикаторе не возможно сделать, а тут иногда нужно  выводить 9 зиг-загов.

 
Evgen57:

Спасибо за оценку! Приятно, что разбираетесь в коде... 

Трендовые линии остались исторически, когда-то зиг-заг у меня был разноцветным. Да и буферов  больше восьми в индикаторе не возможно сделать, а тут иногда нужно  выводить 9 зиг-загов.


Конечно Jedem das seine, но у Вас не задействовано ни одного динамического буфера. А что касается max 8 буферов... ну, можно ограничиться max TimeFrame W1

Когда-то у меня появилось желание поработать с каналом регрессии, но там, это желание, и осталось.

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

Причина обращения: