Ошибки, баги, вопросы - страница 3123

 

Прошу помочь разобраться с типом построения DRAW_FILLING

Почему-то одна пара буферов работает нормально, а вторая отказывается принимать цвет назначаемый разными способами.


Даже пытался оставить два буфера и соответственно одно построение и результат не изменяется. Если по high строить заполнение, то цвет нормальный, а по low цвета нет.

Вот код

#property indicator_chart_window
//---
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_FILLING
#property indicator_label1  "Line UP"
#property indicator_color1  clrDarkOrchid
#property indicator_type2   DRAW_FILLING
#property indicator_label2  "Line DN"
#property indicator_color2  clrMagenta

/****************indicator buffers****************/
double upLine[],
       upWidth[],
       dnLine[],
       dnWidth[];
/**************Custom indicator initialization function**************/
int OnInit()
 {
  SetIndexBuffer(0, upLine);
  SetIndexBuffer(1, upWidth, INDICATOR_CALCULATIONS);
  SetIndexBuffer(2, dnLine);
  SetIndexBuffer(3, dnWidth, INDICATOR_CALCULATIONS);
  //PlotIndexSetInteger(1, PLOT_SHOW_DATA, false);
  //PlotIndexSetDouble(1, PLOT_EMPTY_VALUE, -1.0);
  //PlotIndexSetInteger(2, PLOT_SHOW_DATA, false);
  //PlotIndexSetInteger(2, PLOT_LINE_COLOR, clrYellow);
  //PlotIndexSetDouble(2, PLOT_EMPTY_VALUE, -1.0);
  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[])
 {
  int count = 0, limit = prev_calculated > 0 ? rates_total-1 : 0;
  if(prev_calculated == 0)
   {
    ArraySetAsSeries(time, true);
    ArraySetAsSeries(high, true);
    ArraySetAsSeries(low, true);
    ArraySetAsSeries(upLine, true);
    ArraySetAsSeries(upWidth, true);
    ArrayInitialize(upLine, 0.0);
    ArrayInitialize(upWidth, 0.0);
    ArraySetAsSeries(dnLine, true);
    ArraySetAsSeries(dnWidth, true);
    ArrayInitialize(dnLine, 0.0);
    ArrayInitialize(dnWidth, 0.0);
    for(int i = limit; i < rates_total; i++)
     {
      int arrMax = ArrayMaximum(high, i, 11); //  ищем максимум в 11-ти барах
      if(arrMax-i == 5)                       //  если максимум средний из 11-ти баров
       {
        for(int j = arrMax; j > fmax(arrMax-5, 0); j--)
        {
         upLine[j] = high[arrMax];
         upWidth[j] = high[arrMax]-_Point*2;
        }
       }
      int arrMin = ArrayMinimum(low, i, 11); //  ищем минимум в 11-ти барах
      if(arrMin-i == 5)                      //  если минимум средний из 11-ти баров
       {
        for(int j = arrMin; j > fmax(arrMin-5, 0); j--)
        {
         dnLine[j] = low[arrMin];
         dnWidth[j] = low[arrMin]+_Point*10;
  //PlotIndexSetInteger(3, PLOT_LINE_COLOR, clrYellow); // Это тоже не помогает…
        }
       }
     }
   }
//---
  Comment("\n"
         );
  return(rates_total);
 }/*******************************************************************/

Может в каком-то .ini файле застряла какая настройка? Может его удалить, да я не знаю где искать этот файл… Я уже не знаю что и думать.

 
Народ, день добрый, почему при открытии демо стчета на любую сумму, баланс 0
 
Alexey Viktorov #:

Прошу помочь разобраться с типом построения DRAW_FILLING

Почему-то одна пара буферов работает нормально, а вторая отказывается принимать цвет назначаемый разными способами.


Даже пытался оставить два буфера и соответственно одно построение и результат не изменяется. Если по high строить заполнение, то цвет нормальный, а по low цвета нет.

Вот код

Может в каком-то .ini файле застряла какая настройка? Может его удалить, да я не знаю где искать этот файл… Я уже не знаю что и думать.

У DRAW_FILLING два буфера для построения

 

Ошибка или так задумано? 

double arr[3] = {1.0, 2.0, 3.0};

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{

   StringFormat("%*.f", 3, arr);

}
'arr' - invalid array access 
 
Финансы: Нефинансовый вопрос

Открыта, Начата:  2021.09.02 10:45 , #3182963

Здравствуйте! Активировал тиккет так как кнопка "Новая заявка" не работает.

Причина обращения: В сигналах не сохраняется описание последних 4х языков, Корейский, итальянский, французский, турецкий.

 
Artyom Trishkin #:

У DRAW_FILLING два буфера для построения

Правильно. Потому в этом коде 4 буфера и 2 построения.

 
Alexey Viktorov #:

Правильно. Потому в этом коде 4 буфера и 2 построения.

Все рисуемые буферы должны идти по порядку:

0, 1, 2, 3

и уже после них - расчётные:

4, 5.

При этом в #property нужно указать для двух рисуемых буферов 1 и 2

Нельзя буферы располагать вперемешку.

 
Alexey Viktorov #:

Правильно. Потому в этом коде 4 буфера и 2 построения.

#property indicator_color2  0,clrMagenta
 Возможно, костыль, но работает.
 
Artyom Trishkin #:

Все рисуемые буферы должны идти по порядку:

0, 1, 2, 3

и уже после них - расчётные:

4, 5.

При этом в #property нужно указать для двух рисуемых буферов 1 и 2

Нельзя буферы располагать вперемешку.

Расчётными они стали через 2 дня мучений. И на построение никак не влияет. Ведь верхние полоски работают без проблем…
 
x572intraday #:
 Возможно, костыль, но работает.

Возможно не костыль, но пока у меня нет объяснений происходящему. Спасибо…

Вероятно зависит от того, какой буфер выше в построении. Достаточно изменить + на -

         dnWidth[j] = low[arrMin]-_Point*10;

и тоже будет работать. Но мне надо было внутрь бара направить толщину.