Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1011

 
Vitaly Muzichenko:

Это работало когда нибудь, или нет?

Как сделать так, чтобы при смене цвета во входных параметрах, этот цвет находился в "indicator_color1" ? Сейчас как не изменяй - находится первоначальный

Comment(Buffer1_Color[0]);

Может так?

 
Сергей Таболин:

Может так?

 
Vitaly Muzichenko:

Это работало когда нибудь, или нет?

Как сделать так, чтобы при смене цвета во входных параметрах, этот цвет находился в "indicator_color1" ? Сейчас как не изменяй - находится первоначальный

Что-то можно проследить так:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDarkGoldenrod
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Файлы:
Test.mq5  5 kb
 
Vladimir Karputov:

Что-то можно проследить так:

Отлично, так поехало:  PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Спасибо!

 

Каким образом в пользовательском индикаторе получать данные из OnCalculate() только минутной таймсерии, на любых таймфреймах? Я использую  CopyRates(sym,PERIOD_M1,...), как можно лучше, что посоветуете?

 
Vladimir M.:

Каким образом в пользовательском индикаторе получать данные из OnCalculate() только минутной таймсерии, на любых таймфреймах? Я использую  CopyRates(sym,PERIOD_M1,...), как можно лучше, что посоветуете?

Если нужно сразу по нескольким барам, то лучшего ничего не найдёте. Да и значения одного бара на мой взгляд лучше получить посредством CopyRates

 
Alexey Viktorov:

Если нужно сразу по нескольким барам, то лучшего ничего не найдёте. Да и значения одного бара на мой взгляд лучше получить посредством CopyRates

Я тоже всё перечитал и перепробовал, ничего не могу лучше найти.С другой стороны и OnCalculate() не убрать из индикатора за ненадобностью. Получается, что дважды получаешь одни и те же данные?
 
Vladimir M.:
 OnCalculate() не убрать из индикатора за ненадобностью. Получается, что дважды получаешь одни и те же данные?

Вроде можно и без него если OnTick() есть?

 
Vladimir M.:
Я тоже всё перечитал и перепробовал, ничего не могу лучше найти.С другой стороны и OnCalculate() не убрать из индикатора за ненадобностью. Получается, что дважды получаешь одни и те же данные?

Ну, если не нужны, то можно второй вариант использовать

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

Вроде можно и без него если OnTick() есть?

Сомневаюсь, что это можно, но уже пробовать не буду. И документация говорит:

 "...Событие NewTick генерируется только для экспертов при поступлении нового тика по символу, к графику которого прикреплен эксперт. Функцию OnTick() бесполезно определять в пользовательском индикаторе или скрипте, поскольку событие NewTick для них не генерируется..."