Class и массив в Методе

 

Исход, задаю массивы в методе класса:

   double   array_HL[];
   MqlRates Rates_TF[];

Получаю данные:

for(int i=0;i<10;i++)
  {
      tf_rates = CopyRates(Symbol(),Период,0,100, Rates_TF);
      if(tf_rates>0) break;
   }

Формирую массив:

for(int i=0; i<100;i++) 
{
  array_HL[i]=(Rates_TF[i].high-Rates_TF[i].low));
}

Сравниваю:

for(int i=0; i<100;i++) 
{
   Print(i +"   "+ Rates_TF[i].time +"   "+ array_HL[i] +"   "+ (Rates_TF[i].high-Rates_TF[i].low));
}

Смотрю на результат:

0   2013.08.01 00:00:00   -0.05641 0.02768
1   2013.09.01 00:00:00   -0.02881 0.04638
2   2013.10.01 00:00:00   -0.02424 0.03586
3   2013.11.01 00:00:00   -0.02065 0.03255
4   2013.12.01 00:00:00   -0.02047 0.03689
5   2014.01.01 00:00:00   -0.00709 0.02958
6   2014.02.01 00:00:00   -0.00581 0.03471
7   2014.03.01 00:00:00   -0.00341 0.02618
8   2014.04.01 00:00:00   0.002269 0.02331
9   2014.05.01 00:00:00   0.002439 0.04074
10   2014.06.01 00:00:00   0.00279 0.01941
...

И ничего не понимаю :) .... Есть Профи, знающие в чём сие Незнание ? :)

 
Vjacheslav Lapaev:

Исход, задаю массивы в методе класса:

не видно в Вашем коде где массив array_HL получает свой размер, я про ArrayResize()

для массива Rates_TF размер будет автоматически установлен после выполнения CopyRates()

 
Igor Makanu:

не видно в Вашем коде где массив array_HL получает свой размер, я про ArrayResize()

для массива Rates_TF размер будет автоматически установлен после выполнения CopyRates()

в этом месте:

   ArrayResize(array_HL,100);
   ArrayInitialize(array_HL,0);
//---
   for(int i=0;i<10;i++)
     {
         tf_rates = CopyRates(Symbol(),Период,0,100, Rates_TF);
         if(tf_rates>0) break;
      }
 
не обратил внимание на предупреждение:

if(Bars_HL=1) ...

вроде бы заработало 
 

вот набросал скрипт:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   double arrHL[];
   MqlRates arrRates[];
   int i,allrates;
   string s;
   allrates=CopyRates(Symbol(),PERIOD_CURRENT,0,100,arrRates);
   if(allrates<0) {Print("Нет данных!!!");return;}
   ArrayResize(arrHL,allrates);
   for(i=0;i<allrates;i++)
     {
      arrHL[i]=arrRates[i].high-arrRates[i].low;
     }

   for(i=0;i<allrates;i++)
     {
      s = StringConcatenate(i," ",arrRates[i].time," ",arrHL[i]," = ",arrRates[i].high-arrRates[i].low);
      Print(s);
      Sleep(123);
     }
  }

вот результат:

2018.07.29 12:11:09.848 tst EURUSD,M5: 99 2018.07.27 23:55:00 0.0007099999999999884 = 0.0007099999999999884

2018.07.29 12:11:09.725 tst EURUSD,M5: 98 2018.07.27 23:50:00 0.000199999999999978 = 0.000199999999999978

2018.07.29 12:11:09.602 tst EURUSD,M5: 97 2018.07.27 23:45:00 0.0001499999999998725 = 0.0001499999999998725

2018.07.29 12:11:09.479 tst EURUSD,M5: 96 2018.07.27 23:40:00 0.0003100000000000325 = 0.0003100000000000325

2018.07.29 12:11:09.356 tst EURUSD,M5: 95 2018.07.27 23:35:00 0.0001500000000000945 = 0.0001500000000000945

2018.07.29 12:11:09.233 tst EURUSD,M5: 94 2018.07.27 23:30:00 0.00012000000000012 = 0.00012000000000012

2018.07.29 12:11:09.110 tst EURUSD,M5: 93 2018.07.27 23:25:00 0.0001299999999999635 = 0.0001299999999999635

2018.07.29 12:11:08.987 tst EURUSD,M5: 92 2018.07.27 23:20:00 0.0001700000000000035 = 0.0001700000000000035

2018.07.29 12:11:08.864 tst EURUSD,M5: 91 2018.07.27 23:15:00 0.00012000000000012 = 0.00012000000000012

2018.07.29 12:11:08.741 tst EURUSD,M5: 90 2018.07.27 23:10:00 0.000259999999999927 = 0.000259999999999927

...

2018.07.29 12:10:59.146 tst EURUSD,M5: 12 2018.07.27 16:40:00 0.0005100000000000104 = 0.0005100000000000104

2018.07.29 12:10:59.023 tst EURUSD,M5: 11 2018.07.27 16:35:00 0.0006899999999998574 = 0.0006899999999998574

2018.07.29 12:10:58.900 tst EURUSD,M5: 10 2018.07.27 16:30:00 0.0007299999999998974 = 0.0007299999999998974

2018.07.29 12:10:58.777 tst EURUSD,M5: 9 2018.07.27 16:25:00 0.0004699999999999704 = 0.0004699999999999704

2018.07.29 12:10:58.654 tst EURUSD,M5: 8 2018.07.27 16:20:00 0.001139999999999919 = 0.001139999999999919

2018.07.29 12:10:58.531 tst EURUSD,M5: 7 2018.07.27 16:15:00 0.0003799999999998249 = 0.0003799999999998249

2018.07.29 12:10:58.408 tst EURUSD,M5: 6 2018.07.27 16:10:00 0.0005199999999998539 = 0.0005199999999998539

2018.07.29 12:10:58.285 tst EURUSD,M5: 5 2018.07.27 16:05:00 0.001090000000000035 = 0.001090000000000035

2018.07.29 12:10:58.162 tst EURUSD,M5: 4 2018.07.27 16:00:00 0.0005899999999998684 = 0.0005899999999998684

2018.07.29 12:10:58.039 tst EURUSD,M5: 3 2018.07.27 15:55:00 0.0007899999999998464 = 0.0007899999999998464

2018.07.29 12:10:57.916 tst EURUSD,M5: 2 2018.07.27 15:50:00 0.0007200000000000539 = 0.0007200000000000539

2018.07.29 12:10:57.793 tst EURUSD,M5: 1 2018.07.27 15:45:00 0.0008299999999998864 = 0.0008299999999998864

2018.07.29 12:10:57.670 tst EURUSD,M5: 0 2018.07.27 15:40:00 0.0005300000000001415 = 0.0005300000000001415

2018.07.29 12:10:57.670 tst EURUSD,M5: initialized

не вижу почему у Вас не работает Ваш код
 
Igor Makanu:

вот набросал скрипт:

вот результат:

не вижу почему у Вас не работает Ваш код

спасибо за помощь, разобрался ... ! :)