# Изучаем язык программирования MQL4

Раздел: Язык программирования MQL4
Автор темы: BorisSedov
Создана: 2019-06-24 18:37
Ответов: 435 | Просмотров: 69376
Страница 21 из 22
Источник: https://forexsystemru.com/threads/87869/page-21

---

## gravity — 2021-02-02 15:41

опять 25
Индикатор изначально показывал линии аск и бид горизонтальными линиями OBJ_HLINE, пытался передлать под линии тренда OBJ_TREND.
Сначала была  такая проблема, что линии перекашивались.

Задал OBJPROP_PRICE2 , проблема с перекосом исчезла, но появилась новая. Теперь, линии не перемещаются за ценой, а остаются на месте первой установки.

```
//+------------------------------------------------------------------+
//|                                                  Line_AskBid.mq4 |
//|                                          Copyright © 2011,Alen_T |
//|                                             http://fxgeneral.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012,Alen_T"
#property link      "http://fxgeneral.com"
//Свойства линий можно менять при выделении на графике.
//При удалении линий - будут восстановлены с заданными параметрами
#property indicator_chart_window

extern color  Bidcolor = clrDeepSkyBlue; //Цвет линии
extern int    Bidstyle = 1;    //Стиль линии. Используется только при толщине линии 0 или 1.
//STYLE_SOLID      0 Сплошная линия
//STYLE_DASH       1 Штриховая линия
//STYLE_DOT        2 Пунктирная линия
//STYLE_DASHDOT    3 Штрих-пунктирная линия
//STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками
extern int    Bidwidth = 0;    //Толщина линии

extern bool   ShowAsk   = true; //Рисовать линию Ask
extern color  Askcolor = clrRed;  //Цвет линии
extern int    Askstyle = 0;    //Стиль линии. Используется только при толщине линии 0 или 1.
extern int    Askwidth = 1;    //Толщина линии

int init()
{
   return(0);
}

int deinit()
{
  ObjectDelete("line_Ask");
  ObjectDelete("line_Bid");
  return(0);
}

int start()
{
string name = "line_Bid";
   RefreshRates();
   if(ObjectFind(name) < 0) {
      ObjectCreate(name, OBJ_HLINE, 0, 0, Bid);
      ObjectSet(name, OBJPROP_COLOR, Bidcolor);
      ObjectSet(name, OBJPROP_STYLE, Bidstyle);
      ObjectSet(name, OBJPROP_WIDTH, Bidwidth);
   }
   ObjectSet(name, OBJPROP_PRICE1, Bid);
   if(!ShowAsk) return(0);
   name = "line_Ask";
   if(ObjectFind(name) < 0) {
      ObjectCreate(name, OBJ_HLINE, 0, 0, Ask);
      ObjectSet(name, OBJPROP_COLOR, Askcolor);
      ObjectSet(name, OBJPROP_STYLE, Askstyle);
      ObjectSet(name, OBJPROP_WIDTH, Askwidth);
   }
   ObjectSet(name, OBJPROP_PRICE1, Ask);
   return(0);

}
```

```

//+------------------------------------------------------------------+
//|                                                  Line_AskBid.mq4 |
//|                                          Copyright © 2011,Alen_T |
//|                                             http://fxgeneral.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012,Alen_T"
#property link      "http://fxgeneral.com"
#property strict
//Свойства линий можно менять при выделении на графике.
//При удалении линий - будут восстановлены с заданными параметрами
#property indicator_chart_window

extern string t1 = " === Настройки линии Bid ===";
extern color  Bidcolor = clrDeepSkyBlue; //Цвет
extern int    Bidstyle = 1;    //Стиль
//STYLE_SOLID      0 Сплошная линия
//STYLE_DASH       1 Штриховая линия
//STYLE_DOT        2 Пунктирная линия
//STYLE_DASHDOT    3 Штрих-пунктирная линия
//STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками
extern int    Bidwidth = 0;    //Толщина

extern string t2 = " === Настройки линии Ask ===";
extern bool   ShowAsk   = true; //Рисовать линию
extern color  Askcolor = clrRed;  //Цвет
extern int    Askstyle = 1;    //Стиль
extern int    Askwidth = 1;    //Толщина
extern string t3 = " === Общие настройки ===";
extern int    Length   = 30;   // Длина линий

int init()
{
   return(0);
}

int deinit()
{
  ObjectDelete("line_Ask");
  ObjectDelete("line_Bid");
  return(0);
}

int start()
{
string name = "line_Bid";
   RefreshRates();
   if(ObjectFind(name) < 0) {
      ObjectCreate(name, OBJ_TREND, 0, Time, Bid, Time+PeriodSeconds()*Length,Bid);
      ObjectSet(name, OBJPROP_COLOR, Bidcolor);
      ObjectSet(name, OBJPROP_STYLE, Bidstyle);
      ObjectSet(name, OBJPROP_WIDTH, Bidwidth);
      ObjectSet(name,OBJPROP_RAY,false);
   }
      ObjectSet(name, OBJPROP_PRICE1, Bid);
      ObjectSet(name, OBJPROP_PRICE2, Bid);
   if(!ShowAsk) return(0);
   name = "line_Ask";
   if(ObjectFind(name) < 0) {

      ObjectCreate(name, OBJ_TREND, 0, Time, Ask, Time+PeriodSeconds()*Length);
      ObjectSet(name, OBJPROP_COLOR, Askcolor);
      ObjectSet(name, OBJPROP_STYLE, Askstyle);
      ObjectSet(name, OBJPROP_WIDTH, Askwidth);
      ObjectSet(name,OBJPROP_RAY,false);
   }
      ObjectSet(name, OBJPROP_PRICE1, Ask);
      ObjectSet(name, OBJPROP_PRICE2, Ask);
  
   return(0);

}

```

## AlexeNP — 2021-02-02 16:18

> Цитата (gravity):
> опять 25
> Индикатор изначально показывал линии аск и бид горизонтальными линиями OBJ_HLINE, пытался передлать под линии тренда OBJ_TREND.
> Сначала была  такая проблема, что линии перекашивались.
>
>
>
> Задал OBJPROP_PRICE2 , проблема с перекосом исчезла, но появилась новая. Теперь, линии не перемещаются за ценой, а остаются на месте первой установки.
>
>
> 
> 
```
//+------------------------------------------------------------------+
> //|                                                  Line_AskBid.mq4 |
> //|                                          Copyright © 2011,Alen_T |
> //|                                             http://fxgeneral.com |
> //+------------------------------------------------------------------+
> #property copyright "Copyright © 2012,Alen_T"
> #property link      "http://fxgeneral.com"
> //Свойства линий можно менять при выделении на графике.
> //При удалении линий - будут восстановлены с заданными параметрами
> #property indicator_chart_window
>
> extern color  Bidcolor = clrDeepSkyBlue; //Цвет линии
> extern int    Bidstyle = 1;    //Стиль линии. Используется только при толщине линии 0 или 1.
> //STYLE_SOLID      0 Сплошная линия
> //STYLE_DASH       1 Штриховая линия
> //STYLE_DOT        2 Пунктирная линия
> //STYLE_DASHDOT    3 Штрих-пунктирная линия
> //STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками
> extern int    Bidwidth = 0;    //Толщина линии
>
> extern bool   ShowAsk   = true; //Рисовать линию Ask
> extern color  Askcolor = clrRed;  //Цвет линии
> extern int    Askstyle = 0;    //Стиль линии. Используется только при толщине линии 0 или 1.
> extern int    Askwidth = 1;    //Толщина линии
>
> int init()
> {
>    return(0);
> }
>
> int deinit()
> {
>   ObjectDelete("line_Ask");
>   ObjectDelete("line_Bid");
>   return(0);
> }
>
> int start()
> {
> string name = "line_Bid";
>    RefreshRates();
>    if(ObjectFind(name) < 0) {
>       ObjectCreate(name, OBJ_HLINE, 0, 0, Bid);
>       ObjectSet(name, OBJPROP_COLOR, Bidcolor);
>       ObjectSet(name, OBJPROP_STYLE, Bidstyle);
>       ObjectSet(name, OBJPROP_WIDTH, Bidwidth);
>    }
>    ObjectSet(name, OBJPROP_PRICE1, Bid);
>    if(!ShowAsk) return(0);
>    name = "line_Ask";
>    if(ObjectFind(name) < 0) {
>       ObjectCreate(name, OBJ_HLINE, 0, 0, Ask);
>       ObjectSet(name, OBJPROP_COLOR, Askcolor);
>       ObjectSet(name, OBJPROP_STYLE, Askstyle);
>       ObjectSet(name, OBJPROP_WIDTH, Askwidth);
>    }
>    ObjectSet(name, OBJPROP_PRICE1, Ask);
>    return(0);
>
> }
```

> 
> 
> 
```

> //+------------------------------------------------------------------+
> //|                                                  Line_AskBid.mq4 |
> //|                                          Copyright © 2011,Alen_T |
> //|                                             http://fxgeneral.com |
> //+------------------------------------------------------------------+
> #property copyright "Copyright © 2012,Alen_T"
> #property link      "http://fxgeneral.com"
> #property strict
> //Свойства линий можно менять при выделении на графике.
> //При удалении линий - будут восстановлены с заданными параметрами
> #property indicator_chart_window
>
> extern string t1 = " === Настройки линии Bid ===";
> extern color  Bidcolor = clrDeepSkyBlue; //Цвет
> extern int    Bidstyle = 1;    //Стиль
> //STYLE_SOLID      0 Сплошная линия
> //STYLE_DASH       1 Штриховая линия
> //STYLE_DOT        2 Пунктирная линия
> //STYLE_DASHDOT    3 Штрих-пунктирная линия
> //STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками
> extern int    Bidwidth = 0;    //Толщина
>
> extern string t2 = " === Настройки линии Ask ===";
> extern bool   ShowAsk   = true; //Рисовать линию
> extern color  Askcolor = clrRed;  //Цвет
> extern int    Askstyle = 1;    //Стиль
> extern int    Askwidth = 1;    //Толщина
> extern string t3 = " === Общие настройки ===";
> extern int    Length   = 30;   // Длина линий
>
> int init()
> {
>    return(0);
> }
>
> int deinit()
> {
>   ObjectDelete("line_Ask");
>   ObjectDelete("line_Bid");
>   return(0);
> }
>
> int start()
> {
> string name = "line_Bid";
>    RefreshRates();
>    if(ObjectFind(name) < 0) {
>       ObjectCreate(name, OBJ_TREND, 0, Time, Bid, Time+PeriodSeconds()*Length,Bid);
>       ObjectSet(name, OBJPROP_COLOR, Bidcolor);
>       ObjectSet(name, OBJPROP_STYLE, Bidstyle);
>       ObjectSet(name, OBJPROP_WIDTH, Bidwidth);
>       ObjectSet(name,OBJPROP_RAY,false);
>    }
>       ObjectSet(name, OBJPROP_PRICE1, Bid);
>       ObjectSet(name, OBJPROP_PRICE2, Bid);
>    if(!ShowAsk) return(0);
>    name = "line_Ask";
>    if(ObjectFind(name) < 0) {
>
>       ObjectCreate(name, OBJ_TREND, 0, Time, Ask, Time+PeriodSeconds()*Length);
>       ObjectSet(name, OBJPROP_COLOR, Askcolor);
>       ObjectSet(name, OBJPROP_STYLE, Askstyle);
>       ObjectSet(name, OBJPROP_WIDTH, Askwidth);
>       ObjectSet(name,OBJPROP_RAY,false);
>    }
>       ObjectSet(name, OBJPROP_PRICE1, Ask);
>       ObjectSet(name, OBJPROP_PRICE2, Ask);
>
>    return(0);
>
> }
> 
```

>

## gravity — 2021-02-02 16:41

Спасибо!
Вот так должен был выглядеть.

```
//+------------------------------------------------------------------+
//|                                                  Line_AskBid.mq4 |
//|                                          Copyright © 2011,Alen_T |
//|                                             http://fxgeneral.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012,Alen_T"
#property link      "http://fxgeneral.com"
#property strict
//Свойства линий можно менять при выделении на графике.
//При удалении линий - будут восстановлены с заданными параметрами
#property indicator_chart_window

extern string t1 = " === Настройки линии Bid ===";
extern color  Bidcolor = clrDeepSkyBlue; //Цвет
extern int    Bidstyle = 1;    //Стиль
//STYLE_SOLID      0 Сплошная линия
//STYLE_DASH       1 Штриховая линия
//STYLE_DOT        2 Пунктирная линия
//STYLE_DASHDOT    3 Штрих-пунктирная линия
//STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками
extern int    Bidwidth = 0;    //Толщина

extern string t2 = " === Настройки линии Ask ===";
extern bool   ShowAsk   = true; //Рисовать линию
extern color  Askcolor = clrRed;  //Цвет
extern int    Askstyle = 1;    //Стиль
extern int    Askwidth = 1;    //Толщина
extern string t3 = " === Общие настройки ===";
extern int    Length   = 30;   // Длина линий

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("line_Ask");
   ObjectDelete("line_Bid");
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   string name = "line_Bid";
   RefreshRates();
   if(ObjectFind(name) < 0)
     {
      ObjectCreate(name, OBJ_TREND, 0,0,0,0,0);
      ObjectSet(name, OBJPROP_COLOR, Bidcolor);
      ObjectSet(name, OBJPROP_STYLE, Bidstyle);
      ObjectSet(name, OBJPROP_WIDTH, Bidwidth);
      ObjectSet(name,OBJPROP_RAY,false);
     }
   ObjectSet(name, OBJPROP_PRICE1, Bid);
   ObjectSet(name, OBJPROP_PRICE2, Bid);
   ObjectSet(name, OBJPROP_TIME1, Time);
   ObjectSet(name, OBJPROP_TIME2, Time+PeriodSeconds()*Length);
   if(!ShowAsk)
      return(0);
   name = "line_Ask";
   if(ObjectFind(name) < 0)
     {

      ObjectCreate(name, OBJ_TREND, 0,0,0,0,0);
      ObjectSet(name, OBJPROP_COLOR, Askcolor);
      ObjectSet(name, OBJPROP_STYLE, Askstyle);
      ObjectSet(name, OBJPROP_WIDTH, Askwidth);
      ObjectSet(name,OBJPROP_RAY,false);
     }
   ObjectSet(name, OBJPROP_PRICE1, Ask);
   ObjectSet(name, OBJPROP_PRICE2, Ask);
   ObjectSet(name, OBJPROP_TIME1, Time);
   ObjectSet(name, OBJPROP_TIME2, Time+PeriodSeconds()*Length);

   return(0);

  }
//+------------------------------------------------------------------+
```

## majdhelobi — 2021-02-03 15:32

hi programers I have one problem with this indicator it are me late can you help me with alerting me on the same opinion candle, please

## flyyy09 — 2021-02-04 18:18

Всем привет. Подскажите пожалуйста как записать условие на поиск свечи, с хвостами заданного размера, т.е например тело свечи 100пп, а хвосты один 200, другой 300пп.

## AlexeNP — 2021-02-04 18:47

> Цитата (flyyy09):
> Всем привет. Подскажите пожалуйста как записать условие на поиск свечи, с хвостами заданного размера, т.е например тело свечи 100пп, а хвосты один 200, другой 300пп.

верхний хвост = (High* - MathMax(Open,Close))/_Point
нижний хвост = (MathMin(Open,Close) - Low)/_Point

if(верхний хвост == чему-то && нижний хвост == чему-то еще)
{
что-то тут такое-этакое
}*

## gravity — 2021-02-07 12:52

> Цитата (AlexeNP):
> строка 157... в чем ее глубинный смысл? и что делает индикатор когда доходит до нее?

Сегодня только заметил, если этот return закомментить, то перестаёт работать режим мтф.

## AlexeNP — 2021-02-07 13:45

> Цитата (gravity):
> Сегодня только заметил, если этот return закомментить, то перестаёт работать режим мтф.

MTF там как-то и не особо заметен... в чем смысл MTF - проводишь все расчеты (слово "все" подчеркнуть или так сойдет?) по данным одного таймфрейма, а потом переносишь результаты на график другого... с соответствующим масштабированием... со временем шутки плохи)
если уж так захотелось душе MTF, то можно сделать гораздо проще - написать один раз нормально (фразу "один раз нормально" подчеркнуть или и так сойдет?) индикатор, потом забабахать нехитрую надстройку и радоваться)
как пример

## mobidik — 2021-02-07 14:20

> Цитата (gravity):
> Сегодня только заметил, если этот return закомментить, то перестаёт работать режим мтф.

Все верно, раз в коде что-то написано, значит на то есть свои причины, имхо...
На примере **HMA'BB Adaptive MTF [MERFY+(arr)]**:
если индикатор работает на текущем ТФ, условие в строке 135 не выполняется и индикатор рассчитывается по текущему ТФ. В режиме МТФ происходит вызов самого себя, но уже по старшему ТФ. Условие в строке 135 уже выполнится - получим данные индикатора со старшего ТФ и занесем полученные результаты в массивы/буферы индикатора работающего на текущем ТФ и, т.к., задача уже выполнена - ретурн - вываливаемся из расчетов. Если этого не сделать - будет дальнейшие выполнение кода, но уже по текущему ТФ. Тем самым, ранее занесенные данные в массивы индикатора по текущему бару со старшего ТФ будут переписаны данными уже по текущему ТФ. Режим МТФ не работает...

## mobidik — 2021-02-07 14:27

> Цитата (AlexeNP):
> с соответствующим масштабированием... со временем шутки плохи)

код Младена:

```
,false);"]
```

Твой вариант:

```

```

и в чем же разница со временем?

PS.
AlexeNP набрось свой индикатор на график, а спустя некоторое время - обнови и посмотри: изменится картинка или нет...

## gravity — 2021-02-07 14:36

> Цитата (mobidik):
> Все верно, раз в коде что-то написано, значит на то есть свои причины, имхо...
> На примере **HMA'BB Adaptive MTF [MERFY+(arr)]**:
> если индикатор работает на текущем ТФ, условие в строке 135 не выполняется и индикатор рассчитывается по текущему ТФ. В режиме МТФ происходит вызов самого себя, но уже по старшему ТФ. Условие в строке 135 уже выполнится - получим данные индикатора со старшего ТФ и занесем полученные результаты в массивы/буферы индикатора работающего на текущем ТФ и, т.к., задача уже выполнена - ретурн - вываливаемся из расчетов. Если этого не сделать - будет дальнейшие выполнение кода, но уже по текущему ТФ. Тем самым, ранее занесенные данные в массивы индикатора по текущему бару со старшего ТФ будут переписаны данными уже по текущему ТФ. Режим МТФ не работает...

Благодарю! Только не понял, как выполняется Arr_show и AlertsOn. Получается они всегда выполняется (включая режим мтф), если они true  в настройках?
Хотя Arr_show находятся внутри цикла for для текущего ТФ.

## AlexeNP — 2021-02-07 14:38

> Цитата (mobidik):
> код Младена:
> 
```
,false);"]
```

> Твой вариант:
> 
```

```

> и в чем же разница со временем?

разница в масштабировании по временной шкале

## mobidik — 2021-02-07 15:05

> Цитата (AlexeNP):
> разница в масштабировании по временной шкале

Ноу комент :)

## AlexeNP — 2021-02-07 16:12

> Цитата (mobidik):
> Ноу комент :)

легонько постукивая кувалдой подрихтуем, и будет комент

## mobidik — 2021-02-07 16:57

> Цитата (AlexeNP):
> легонько постукивая кувалдой подрихтуем, и будет комент

И что.., **time** заменен на **TimeCurrent()** - и в чем глубина Вашей мысли? :)
Как пикасил, так и пикасит...

## AlexeNP — 2021-02-07 17:01

> Цитата (mobidik):
> И что.., **time** заменен на **TimeCurrent()** - и в чем глубина Вашей мысли? :)
> Как пикасил, так и пикасит...

никакой глубины, просто выбранные таймфреймы могут оказаться младше текущего

## gravity — 2021-02-07 19:28

[Тут]('https://forexsystemsru.com/threads/zvuk-v-indikatorax.68783/post-1640258') пробовал сделать инд стрелки, алерт и т.д. За пример взял инд *Turbo_JRSX alert & arrows.*
Вроде всё сделал по подобию, но похоже где-то ошибся. Стрелки отображаются неправильно.
Иногда, через какое-то время, стрелки начинают отображаться как надо.

## mobidik — 2021-02-07 21:42

> Цитата (gravity):
> Вроде всё сделал по подобию, но похоже где-то ошибся. Стрелки отображаются неправильно.
> Иногда, через какое-то время, стрелки начинают отображаться как надо.

Что сделал - то и получил...
Постараюсь объяснить на пальцах:
Условие на стрелки находятся в цикле, а цикл начинается от нуля и до упора. Находимся на баре с индексом "0" - получили данные и записали в BufferRSI, затем увеличили i-ку на 1, перешли на первый бар и записали данные в BufferRSI и т.д. При этом, если "сейчас" работаем, например, с i=5, то во всех последующих ячейках буферного массива хранится значение EMPTY_VALUE, что равно  2147483647. Теперь переходим к самому условию на стрелки: 
if(BufferRSI[i+SignalBar]<Level_Up && BufferRSI[i+1+SignalBar]>Level_Up)...
Вот i=5 и что имеем по условию: 
SignalBar = 0;
if(BufferRSI[5+0]<Level_Up && BufferRSI[5+1+0]>Level_Up).
т.е. сравниваем данные по 5-му бару, который только что просчитали, с 6-м, до которого еще не дошла очередь, а значит, его значение равно: EMPTY_VALUE. Условие выполнится на каждом баре если выполнится первая часть условия: BufferRSI[5+0]<Level_Up, вторая часть выполняется всегда. Это же и объясняет почему нет стрелок при SignalBar = 1.
Что изменить, как вариант, изменить знак "+" в условии на "-". Но, получим ошибку, т.к., есть strict и будет выход за массив при самом первом входе в цикл. т.к., будет запрошен массив с индексом -1. Не подходит такое решение, тогда меняем направление счета в самом цикле - начинаем с i = limit и до "0", при этом, само условие на стрелки остается прежним, что, собственно говоря, и сделано в индикаторе, который был взят для примера.

## gravity — 2021-02-07 22:18

> Цитата (mobidik):
> Что сделал - то и получил...
> Постараюсь объяснить на пальцах:

Спасибо ещё раз 🤝 Из тебя хороший учитель :)

```
  //---- Заполнение вспом.буфера ROC
for ( i = 0; i < iCount; i++ ) {//( i = iCount; i >=0; i-- ) {
    BufferROC* = Close[ i ] - Close[ i + ExtPeriodROC ];
  } // for

  //---- Расчёт RSI от ROC
  for ( i = iCount; i >=0; i-- )//( i = 0; i < iCount; i++ )
  {
    BufferRSI = iRSIOnArray( BufferROC, 0, ExtPeriodRSI, i );

```

Изменил только для BufferRSI. *

Получается что для* BufferROC *можно оставить порядок счёта (i++).
Потому что для этого массива нет такого условия как *[i+1+SignalBar] *и не возникает такой ошибки как для массива RSI. :geek:

## mobidik — 2021-02-07 22:28

> Цитата (gravity):
> Спасибо ещё раз 🤝 Из тебя хороший учитель :)
> 
```
  //---- Заполнение вспом.буфера ROC
> for ( i = 0; i < iCount; i++ ) {//( i = iCount; i >=0; i-- ) {
>     BufferROC* = Close[ i ] - Close[ i + ExtPeriodROC ];
>   } // for
>
>   //---- Расчёт RSI от ROC
>   for ( i = iCount; i >=0; i-- )//( i = 0; i < iCount; i++ )
>   {
>     BufferRSI = iRSIOnArray( BufferROC, 0, ExtPeriodRSI, i );
> 
```

> Изменил только для BufferRSI. *
>
> Получается что для* BufferROC *можно оставить порядок счёта (i++).
> Потому что для этого массива нет такого условия как *[i+1+SignalBar] *и не возникает такой ошибки как для массива RSI. :geek:

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

---

Следующая страница: https://forexsystemru.com/threads/87869/page-22
