Скачать MetaTrader 5

Математики и программисты! Нужна помощь!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Michael Dolgushin
873
Michael Dolgushin  

Всем доброго времени суток!

...настал творческий тупняк...

второй день бьюсь не могу придумать  функцию для сжатия временного ряда...

что бы из:  

получить: 

прим.: пример

...чуйкой чуюю что без y/n здесь не обойтись..))

Michael Dolgushin
873
Michael Dolgushin  
int Sizer(int n, double &inputs, int y, double &outs)
{
   int s=y/n;
   for(int i=0;i<y;i++)
   {
      //на этом мысли останавливаются...(((
      
   }
   return(1);
}
Michael Dolgushin
873
Michael Dolgushin  
при делении y на n без остатка (т.е. 10/2=5) как то мысли вроде просветляются, а вот с дробными (7/5=1,4) вот тут начинается тупаик.
Mikhail Filimonov
5931
Mikhail Filimonov  
Michael Dolgushin:

Всем доброго времени суток!

...настал творческий тупняк...

второй день бьюсь не могу придумать  функцию для сжатия временного ряда...

что бы из:  

получить: 

прим.: 

...чуйкой чуюю что без 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
Yuri Evseenkov
2313
Yuri Evseenkov  

//+------------------------------------------------------------------+ #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++; } }



Mikhail Filimonov
5931
Mikhail Filimonov  
Yuri Evseenkov:
:)
Yuri Evseenkov
2313
Yuri Evseenkov  

Mikhail Filimonov
5931
Mikhail Filimonov  
Yuri Evseenkov:

:):)
Michael Dolgushin
873
Michael Dolgushin  

c кратными то числами понятно, вот с не кратными....

постарался максимально визуализировать идею: 

(y) и (n) - должны быть любые целые числа

Mikhail Filimonov
5931
Mikhail Filimonov  
Michael Dolgushin:

c кратными то числами понятно, вот с не кратными....

постарался максимально визуализировать идею: 

(y) и (n) - должны быть любые целые числа

Какое Т.З, таков и результат.

То, что Вы вновь нарисовали - опять не правильно.

Нужно так:

1. Есть исходные 8 точек, которые соответствуют таким-то отрезкам времени (указать шаг времени)

 2. То, что нужно получить (из каких параметров Вы строите первую красную точку? Почему первая синяя точка = 1, а первая красная = 0,6 ?)

 

Vladimir Suslov
468
Vladimir Suslov  
Michael Dolgushin:

То, что вы хотите, называется передискретизация.

https://ru.wikipedia.org/wiki/Передискретизация 

Передискретизация — Википедия
  • ru.wikipedia.org
Иллюстрация эффекта наложения спектров (алиасинга) при уменьшении разрешения (децимации) растрового изображения. Сверху — изображение, уменьшенное без фильтрации. Снизу — изображение, уменьшенное с применением фильтра нижних частот. Отсчёты сигнала, соответствующие новой частоте дискретизации, вычисляются по уже имеющимся отсчётам и не...
12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий