Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.06.2018
Сообщений: 3

Нахождение экстремумов числового ряда

24.05.2019, 11:04. Показов 2655. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята доброго времени суток, нужна ваша помощь в составлении программы, сам вообще не понимаю как ее сделать для диплома. нахождение экстремумов числового ряда с++ надо составить программу, кто может помочь заранее большое спасибо за помощь.


преподаватель по диплому дал справочник там вроде нашел программу, но на работоспособность не знаю


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
input int      bars=500;                 //  окно для поиска экстремумов
input double   delta_points=160;         //  размах перепада, определяющий минимальное расстояние между пиком и впадиной в пунктах
input double   first_extrem=0.9;         //  дополнительный  коэффициент для поиска первого экстремума
input double   reload_time=5;            //  значение временного интервала, через который производится перерасчет значений индикатора в секундах
 
double High[],Low[];
datetime Time[];
 
ArraySetAsSeries(Low,true);
int copied1=CopyLow(Symbol(),0,0,bars+2,Low);
ArraySetAsSeries(High,true);
int copied2=CopyHigh(Symbol(),0,0,bars+2,High);
ArraySetAsSeries(Time,true);
int copied3=CopyTime(Symbol(),0,0,bars+2,Time);
 
double delta=delta_points*Point();  //  размах перепада между экстремумами в абсолютных величинах
 
int j,k,l;
int j2,k2,l2;
double  j1,k1,l1;
int min[6];  // массив, определяющий впадины, значение соответствует номеру бара для найденного экстремума
int max[6];  // массив, определяющий пики, значение соответствует номеру бара для найденного экстремума
 
int mag1=bars;
int mag2=bars;
int mag3=bars;
int mag4=bars;
 
j1=SymbolInfoDouble(Symbol(),SYMBOL_BID)+(1-first_extrem)*delta_points*Point();
// при поиске первого экстремума дополнительный коэффициент определяет минимальную цену, ниже которой должна располагаться первая впадина
 
j2=0; // на первой итерации поиск ведется начиная с последнего бара истории
 
for(j=0;j<=15;j++) // цикл, определяющий первую впадину - min[1]
  {
   min[1]=minimum(j2,bars,j1);
   //определяется ближайшая впадина на указанном интервале
 
   j2=min[1]+1;     // на следующей итерации поиск ведется от уже найденной впадины min[1]
   j1=Low[min[1]]+delta;
   //минимальная цена для впадины, найденной на последующей итерации должна быть ниже, чем минимальная цена для впадины, найденной на текущей итерации 
 
   k1=Low[min[1]];
   //минимальная цена для впадины при поиске последующей вершины определяет максимальную цену, выше которой должна располагаться эта вершина
 
   k2=min[1];         //поиск пика, располагающегося за впадиной, ведется от найденной впадины min[1]
 
   for(k=0;k<=12;k++) // цикл, определяющий первый пик - max[1]
     {
      max[1]=maximum(k2,bars,k1);
      //--- определяется ближайший пик на указанном интервале
      k1=High[max[1]]-delta;
      //максимальная цена для пика, найденного на последующей итерации должна быть выше, чем максимальная цена для пика, найденного на текущей итерации 
 
      k2=max[1]+1;   // на следующей итерации поиск ведется от уже найденного пика max[1]
 
      l1=High[max[1]];
      //максимальная цена для вершины при поиске последующей впадины определяет минимальную цену, ниже которой должна располагаться эта впадина
      l2=max[1];     // поиск впадины, располагающейся за пиком, ведется от  найденного пика max[1]
      for(l=0;l<=10;l++) // цикл, определяющий вторую впадину - min[2], и второй пик max[2]
        {
         min[2]=minimum(l2,bars,l1);
         //---определяется ближайшая впадина на указанном интервале
         l1=Low[min[2]]+delta;
         //минимальная цена для впадины, найденной на последующей итерации должна быть ниже, чем минимальная цена для впадины, найденной на текущей итерации 
 
         l2=min[2]+1;     // на следующей итерации поиск ведется от уже найденной впадины min[2]
         max[2]=maximum(min[2],bars,Low[min[2]]);
         //определяется ближайший пик на указанном интервале
 
         if(max[1]>min[1] && min[1]>0 && min[2]>max[1] && min[2]<max[2] && max[2]<mag4)
           //отфильтровываются совпадающие экстремумы и особые случаи
           {
            mag1=min[1];   // на каждой итерации в случае выполнения условия, положения найденных экстремумов запоминаются
            mag2=max[1];
            mag3=min[2];
            mag4=max[2];
           }
        }
     }
  }
min[1]=mag1; // экстремумы определены, в ином случае всем переменным присваивается значение bars
max[1]=mag2;
min[2]=mag3;
max[2]=mag4;
int minimum(int a,int b,double price0)
//функция определяет ближайшую впадину на указанном интервале, которая располагается ниже цены price0 на расстоянии большем, чем размах перепада
  {
   double High[],Low[];
   ArraySetAsSeries(Low,true);
   int copied4=CopyLow(Symbol(),0,0,bars+2,Low);
 
   int i,e;
   e=bars;
   double pr=price0-delta_points*Point();    // значение цены ниже  которой должна располагаться впадина уже с добавлением размаха перепада
   for(i=a;i<=b;i++)                         // поиск впадины  в окне заданном параметрами a и b
     {
      if(Low[i]<pr && Low[i]<Low[i+1])       // определяется ближайшая впадина,  после которой начинается рост цены 
        {
         e=i;
         break;
        }
     }
 
   return(e);
  }
int maximum(int a,int b,double price1)
//--- функция определяет ближайший пик на указанном интервале, который располагается выше цены price1 на расстоянии большем, чем размах перепада
  {
   double High[],Low[];
   ArraySetAsSeries(High,true);
   int copied5=CopyHigh(Symbol(),0,0,bars+2,High);
 
   int i,e;
   e=bars;
   double pr1=price1+delta_points*Point();   // значение цены выше  которой должен располагаться пик уже с добавлением размаха перепада
   for(i=a;i<=b;i++)                         // поиск пика в окне заданном параметрами a и b
     {
      if(High[i]>pr1 && High[i]>High[i+1])   // определяется ближайший пик, после которого начинается падение цены     
        {
         e=i;
         break;
        }
     }
   return(e);
  }
Добавлено через 23 минуты
нахождение экстремумов числового ряда итерационным методом забыл метод написать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2019, 11:04
Ответы с готовыми решениями:

Составить программу вычисления числового ряда для известного числа членов ряда N
Пожалуйста, как на C++ выполнить это задание, много времени потратил и все никак. Работает частично, но что-то я упускаю. Составить...

Суммирование числового ряда
дан числовой ряд и некоторое число e, считать сумму до тех пор, пока модуль очередного члена ряда больше заданного числа e или равен ему....

Сумма членов числового ряда
Дано числовой ряд: Найти сумму ряда с точностью Е=10-5 Помогите чем-нибудь%-)

2
0 / 0 / 0
Регистрация: 23.06.2018
Сообщений: 3
27.05.2019, 08:41  [ТС]
какие библиотеки надо добавить чтобы программа заработала?
0
0 / 0 / 0
Регистрация: 02.06.2019
Сообщений: 1
02.06.2019, 15:11
этот код написан не на плюсах, а на mql5 погугли, вроде можно в вижуал студио как-то запускать mql. А вообще если тебе не нужно "прогнозировать" экстремумы на числовом ряде который постоянно меняется, а у тебя есть готовый ряд и из него найти экстремумы, то это оч просто, первое что приходит на ум это пройтись по ряду, перебирая все элементы, сравнивая их и вывести макс и мин.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2019, 15:11
Помогаю со студенческими работами здесь

Вычисление числового ряда с циклом for
Нужно написать программу, которая высчитывает числовой ряд (см. изображение) с помощью цикла for. Не могу обойти условие i!=0, считает до...

Частичные суммы числового ряда
Собственно, надо написать программу, которая бы считала частичные сумму ряда по заданному n. Ряд, собственно вот: Σ∞n=9 ...

Сумма числового ряда, степень (-1)
Доброго времени суток! Задание: &quot;Вычислить заданную сумму числового ряда для заданных начальных индексов nn и nk. Обязательно...

Рассчитайте сумму числового ряда
В С++, помогите пожалуйста, никак не получается.

Вычисление произведения числового ряда
Всем привет. Никак не получается написать рабочий код. Помогите пожалуйста. Задание. Составить программу вычисления числового ряда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru