<a href="https://www.instaforex.com/ru/">ИнстаФорекс портал</a>

Графики ренко и их недостатки

RenkoTimes

Сколько же дифирамбов спето в сети интернет про графики ренко, их грандиозные преимущества перед стандартными графиками за счет отвязки от временного интервала. А так ли это на самом деле? Так ли плохо знать сколько времени формировался каждый ренко-кирпичик?

Давайте попробуем разобраться в указанных преимуществах. Так, к примеру, выглядит «стандартный» график ренко.

График ренко

График ренко

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

График RenkoTimes

График RenkoTimes

Обратите внимание, насколько продолжительными по времени являются отдельные бары. А не те ли это самые уровни поддержки и сопротивления, о которых так же пестрят страницы интернет, но нигде не описано принципов определения этих самых уровней? А вот так это выглядит в динамике.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#property copyright   "2017, SergDeev"
#property link        "http://fx-prog.ru"
#property description "RenkoTimes"
#property version "1.0"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  clrMagenta
#property indicator_color2  clrAqua
#property indicator_width1 2
#property indicator_width2 2
extern int RenkoPoint=10;
extern int CountBars=0;
 
double Bear_Buffer[],Bull_Buffer[];
 
int OnInit(void) {
   IndicatorDigits(Digits);
   SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Bear_Buffer); SetIndexLabel(0,"Bear");
   SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,Bull_Buffer); SetIndexLabel(1,"Bull");
   if(Digits==5 || Digits==3) RenkoPoint *= 10;
   if (CountBars == 0) CountBars = (int)ChartGetInteger(0,CHART_WIDTH_IN_BARS);
   return(INIT_SUCCEEDED);
  }
int start() {
   int i,limit;
   int counted_bars=IndicatorCounted(); 
   if (counted_bars&gt;0) counted_bars--; 
   limit=Bars-counted_bars; 
   if (limit &gt; CountBars) limit = CountBars;
   else if (limit&gt;0) limit--;
   if (counted_bars == 0) {
    if (Close[limit]&gt;Open[limit]) {
     Bull_Buffer[limit]=High[limit];
     Bear_Buffer[limit]=NormalizeDouble(Bull_Buffer[limit]-RenkoPoint*Point,Digits);
    }
    else {
     Bull_Buffer[limit]=Low[limit];     
     Bear_Buffer[limit]=NormalizeDouble(Bull_Buffer[limit]+RenkoPoint*Point,Digits);
    }
    limit--;
   }
   for (i=limit; i&gt;=0; i--) {
    double min = MathMin(Bear_Buffer[i+1],Bull_Buffer[i+1]);
    double max = MathMax(Bear_Buffer[i+1],Bull_Buffer[i+1]);
    int x=1;
    while (High[i] &gt;= (max+x*RenkoPoint*Point)) {
     Bull_Buffer[i] = NormalizeDouble(max+x*RenkoPoint*Point,Digits);
     Bear_Buffer[i] = max;
     x++;
    }
    x=1;
    while (Low[i] &lt;= (min-x*RenkoPoint*Point)) {
     Bull_Buffer[i] = NormalizeDouble(min-x*RenkoPoint*Point,Digits);
     Bear_Buffer[i] = min;
     x++;
    }
    if (Bear_Buffer[i] == EMPTY_VALUE || Bull_Buffer[i] == EMPTY_VALUE) {
     if (Bear_Buffer[i+1] &gt; Bull_Buffer[i+1]) {
      Bull_Buffer[i] = Bull_Buffer[i+1];
      Bear_Buffer[i] = Bull_Buffer[i]+RenkoPoint*Point;
     }
     else if (Bull_Buffer[i+1] &gt; Bear_Buffer[i+1]) {
      Bull_Buffer[i] = Bull_Buffer[i+1];
      Bear_Buffer[i] = Bull_Buffer[i]-RenkoPoint*Point;
     }
    }
   }
   return(0);
  }

 

 

<a href="https://www.instaforex.com/ru/">Форекс портал</a> Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.