Всем доброго времени суток!
...настал творческий тупняк...
второй день бьюсь не могу придумать функцию для сжатия временного ряда...
что бы из:
получить:
прим.:
...чуйкой чуюю что без y/n здесь не обойтись..))
#property copyright "Copyright 2015, Mikalas" #property link "https://www.mql5.com" #property version "1.00" // double inp_array[23]; //23 взял для примера. Размер может быть любой double out_array[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void CompressTime() { int out_size = int( ArraySize( inp_array ) / 2 ); ArrayResize( out_array, out_size ); //--- inp_array[0] = 1.5; inp_array[1] = 1.4; inp_array[2] = 1.45; inp_array[3] = 1.55; inp_array[4] = 1.67; inp_array[5] = 1.63; inp_array[6] = 1.59; inp_array[7] = 1.61; inp_array[8] = 1.55; inp_array[9] = 1.53; //--- if ( out_size > 0 ) { for ( int i = 0; i < out_size; i++ ) { out_array[i] = ( inp_array[i * 2] + inp_array[i * 2 + 1] ) / 2; Print( i + 1, " = ", out_array[i] ); } } } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { CompressTime(); return(INIT_SUCCEEDED); }
2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 11 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 10 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 9 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 8 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 7 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 6 = 0.0 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 5 = 1.54 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 4 = 1.6 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 3 = 1.65 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 2 = 1.5 2015.12.10 12:18:49.321 Test_deinit (RTS-12.15,M1) 1 = 1.45
//+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property strict double n[12]={0,1.5,1.4,1.45,1.55,1.67,1.63,1.59,1.61,1.55,1.53}; double y[6]; int i,k; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void OnInit() { SR(); } void SR(){ i=1;k=1; while(i<11){ y[k]=(n[i]+n[i+1])/2; Print("n[",i,"]=",n[i]," n[",i+1,"]=",n[i+1]," y[",k,"]=",y[k]); i=i+2;k++; } }
c кратными то числами понятно, вот с не кратными....
постарался максимально визуализировать идею:
(y) и (n) - должны быть любые целые числа
Какое Т.З, таков и результат.
То, что Вы вновь нарисовали - опять не правильно.
Нужно так:
1. Есть исходные 8 точек, которые соответствуют таким-то отрезкам времени (указать шаг времени)
2. То, что нужно получить (из каких параметров Вы строите первую красную точку? Почему первая синяя точка = 1, а первая красная = 0,6 ?)
То, что вы хотите, называется передискретизация.
- ru.wikipedia.org
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени суток!
...настал творческий тупняк...
второй день бьюсь не могу придумать функцию для сжатия временного ряда...
что бы из:
получить:
прим.:
...чуйкой чуюю что без y/n здесь не обойтись..))