Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения - страница 44

 
Fast235:

когда прописаны буфера, и не используются в расчетах, индикатор начинает вести себя непредсказуемо, например хватать цвета для рабочих plot с соседних буферов которые не используются, а часто и просто "дефолтный" серый цвет


сейчас борюсь вот с такой проблемой не могу сообразить, почему так

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

Не используемые буферы освобождайте...

 
Fast235:

когда прописаны буфера, и не используются в расчетах, индикатор начинает вести себя непредсказуемо, например хватать цвета для рабочих plot с соседних буферов которые не используются, а часто и просто "дефолтный" серый цвет


сейчас борюсь вот с такой проблемой не могу сообразить, почему так

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

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

Смотрите таблицу и примеры в https://www.mql5.com/ru/docs/customind/indicators_examples

Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах
Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах
  • www.mql5.com
В клиентский терминал MetaTrader 5 встроено 38 технических индикаторов, которые можно использовать в программах MQL5 с помощью соответствующих функций. Но главное достоинство языка MQL5 – возможность создавать свои собственные пользовательские индикаторы, которые потом можно использовать в советниках для получения значений или просто...
 
Vladimir Pastushak:

Не используемые буферы освобождайте...

на этапе построения мешается постоянно, рабочие буферы заимствуют цвета с еще не рабочих

--

возникал вопрос почему пересчет в индикаторе некоторые делают такой строкой

 start=prev_calculated-1;

с -1, т.е. пересчитывают 2 бара, вместо одного?

вроде в этом причина? https://www.mql5.com/ru/forum/347385/page43#comment_18214585

 
Vladimir Karputov:

Ich habe den Code mit dem MQL-Assistenten generiert - und ich habe keinen Fehler (kann auf 2593 nicht reproduziert werden).

Bitte verwenden Sie den Code von - können Sie den Fehler in diesem Code reproduzieren?

With you code I don't get the 4603 error but you have an additional buffer (3 for one colored line?):

   SetIndexBuffer(0,Lne,INDICATOR_DATA);
   SetIndexBuffer(1,LneColor,INDICATOR_DATA);
   SetIndexBuffer(2,LneColorColors,INDICATOR_COLOR_INDEX);

while I followed the example from the MQL5 reference you find at PlotIndexSetInteger():

//--- indicator buffers mapping
   SetIndexBuffer(0,ColorLineBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ColorBuffer,INDICATOR_COLOR_INDEX);

This version seems to be clear: one buffer for the values and one buffer for the colors - for which is the third buffer?

Documentation on MQL5: Custom Indicators / PlotIndexSetInteger
Documentation on MQL5: Custom Indicators / PlotIndexSetInteger
  • www.mql5.com
//| Custom indicator initialization function                         | //| get color index                                               | //| Custom indicator iteration function                              |
 
Carl Schreiber:

With you code I don't get the 4603 error but you have an additional buffer (3 for one colored line?):

while I followed the example from the MQL5 reference you find at PlotIndexSetInteger():

This version seems to be clear: one buffer for the values and one buffer for the colors - for which is the third buffer?

0 - буфер обычная линия,

1-2 буфер цветная линия

---------

вариант 1 для #property indicator_type1   DRAW_LINE

#property indicator_buffers 4
#property indicator_plots   2
//--- plot FTS
#property indicator_label1  "StopLines1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot FTS2
#property indicator_label2  "StopLines2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed 
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2

//--- input parameters
input int draw_begin=100; // Количество начальных баров без отрисовки и значений в DataWindow
//--- indicator buffers
double         BufferUp[];
double         BufferDown[];
double         iCustomUp[];
double         iCustomDown[];

int Handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUp,INDICATOR_DATA);
   SetIndexBuffer(1,BufferDown,INDICATOR_DATA);
   SetIndexBuffer(2,iCustomUp,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,iCustomDown,INDICATOR_CALCULATIONS);
   Handle=iCustom(_Symbol,PERIOD_CURRENT,"_iStop",20,2);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,draw_begin);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---
   return(0);
  }


 
вариант 2, это тоже самое в варианте Цветная линия #property indicator_type1   DRAW_COLOR_LINE
#property indicator_buffers 4
#property indicator_plots   1
//--- plot FTS
#property indicator_label1  "Name"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrDeepSkyBlue,clrTomato 
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters
input int draw_begin=100; // Количество начальных баров без отрисовки и значений в DataWindow
//--- indicator buffers
double         Buffer[];
double         BufferColors[];
double         iCustomUp[];
double         iCustomDn[];

int Handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,2);
   SetIndexBuffer(1,BufferColors,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,iCustomUp,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,iCustomDn,INDICATOR_CALCULATIONS);
   Handle=iCustom(_Symbol,PERIOD_CURRENT,"_iStop",20,2);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,draw_begin); 
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits); // 
//---
   return(0);
  }


 
Carl Schreiber:

With you code I don't get the 4603 error but you have an additional buffer (3 for one colored line?):

while I followed the example from the MQL5 reference you find at PlotIndexSetInteger():

This version seems to be clear: one buffer for the values and one buffer for the colors - for which is the third buffer?

Я пытался максимально приблизится к Вашему коду.

Раньше у меня были много ошибок когда я вручную пытался объявлять цветные стили рисования - но потом я стал использовать MQL Wizard и проблемы с цветными стилями рисования исчезли.

 

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

(правда список подстановки теперь короткий и это вначале смущает)

 
да и теперь получается иногда надо больше букв нажимать так как прокрутить список нельзя до конца
 
Vladimir Karputov :

Я пытался максимально приблизится к Вашему коду.

Раньше у меня были много ошибок когда я вручную пытался объявлять цветные стили рисования - но потом я стал использовать MQL Wizard и проблемы с цветными стилями рисования исчезли.

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

My code is working perfectly except that stupid error 4603 (which causes no further errors) and where the function was executed several time right before that without any error.