[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 354
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
подскажите, как работает ArrayMaximum?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Поиск элемента с максимальным значением. Функция возвращает позицию максимального элемента в массиве.
Параметры:array[] - Числовой массив, в котором производится поиск.
count - Количество элементов для поиска.
start - Начальный индекс для поиска.
Пример:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Max value = ", num_array[maxValueIdx]);
значит тут мне не понятно count... как написать, чтоб у меня советник искал, скажем, со 2го номера массива?
int MinArray[7] = {1,2,3,4,5,6,7}
int ArrayMaximum (MinArray[7], "А тут что?", 2); не понятно мне
К примеру была задача сколько раз цена пересекала заданные уровни за последние два года.
1. Можно брать каждый уровень и просматривать данные за два года. Затраты: количество баров умножаем на количество уровней.
2. Можно создать отдельный массив уровней. И достаточно перебрать все бары проверяя и инкрементируя нужные элементы массива. В этом случае вычисления будут производиться быстрее.
Меня интересует пример подобный данному:
for (a=0;a<=100;a++){
for (b=0;b<=100;b++){
for (c=0;c<=100;c++){
for (d=0;d<=100;d++){
for (e=0;e<=100;e++){
for (f=0;f<=100;f++){
for (g=0;g<=100000;g++){
jaw_val1=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, g);
jaw_val2=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH , g);
jaw_val3=iAlligator(NULL, 0, a, b, c, d, f, e, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS , g);
if ( jaw_val1>Close[g] && jaw_val2>Close[g] && jaw_val3>Close[g]) sum=sum+(High[g]-Low[g]);
}}}}}}}
Но тогда массив должен быть 7-ми мерный?
подскажите, как работает ArrayMaximum?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Поиск элемента с максимальным значением. Функция возвращает позицию максимального элемента в массиве.
Параметры:array[] - Числовой массив, в котором производится поиск.
count - Количество элементов для поиска.
start - Начальный индекс для поиска.
Пример:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("Max value = ", num_array[maxValueIdx]);
значит тут мне не понятно count... как написать, чтоб у меня советник искал, скажем, со 2го номера массива?
int MinArray[7] = {1,2,3,4,5,6,7}
int ArrayMaximum (MinArray[7], "А тут что?", 2); не понятно мне
Вам нужно найти наибольшее значение, содержащееся в этом массиве, начиная с нулевого элемента массива:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 0); // находим индекс элемента с наибольшим значением.
double MaxValue=DataMass[IndexMaxValue]; // находим максимальное значение в массиве по его индексу
Строку поиска элемента с максимальным значением можно записать короче:
int IndexMaxValue=ArrayMaximum(DataMass); // Два последних аргумента функции имеют значения по умолчанию, поэтому их можно опустить при вызове функции, ведь мы ищем по всему массиву (WHOLE_ARRAY) и начиная с нулевой ячейки (0), а эти значения передаются в функцию по умолчанию.
Всё это можно записать одной строкой:
double MaxValue=DataMass[ArrayMaximum(DataMass)]; // находим максимальное значение в массиве по его индексу.
В переменной MaxValue будет содержаться искомое максимальное значение в массиве DataMass[]
Если же вам нужно искать не во всём массиве и начиная не с нулевого элемента, то эти значения нужно указывать явно в передаваемых параметрах:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // находим индекс элемента с наибольшим значением. Поиск выполняем по всему массиву (WHOLE_ARRAY), начиная со второй ячейки (2)
int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // находим индекс элемента с наибольшим значением. Поиск выполняем по десяти элементам массива (10), начиная с третьей ячейки (3)
Надеюсь доходчиво объяснил :)
Допустим, есть у вас массив DataMass[], в котором содержатся некие значения. Тип содержащихся в нём значений - double.
Вам нужно найти наибольшее значение, содержащееся в этом массиве, начиная с нулевого элемента массива:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 0); // находим индекс элемента с наибольшим значением.
double MaxValue=DataMass[IndexMaxValue]; // находим максимальное значение в массиве по его индексу
Строку поиска элемента с максимальным значением можно записать короче:
int IndexMaxValue=ArrayMaximum(DataMass); // Два последних аргумента функции имеют значения по умолчанию, поэтому их можно опустить при вызове функции, ведь мы ищем по всему массиву (WHOLE_ARRAY) и начиная с нулевой ячейки (0), а эти значения передаются в функцию по умолчанию.
Теперь всё это можно записать одной строкой:
double MaxValue=DataMass[ArrayMaximum(DataMass)]; // находим максимальное значение в массиве по его индексу
Если же вам нужно искать не во всём массиве и начиная не с нулевого элемента, то эти значения нужно указывать явно в передаваемых параметрах:
int IndexMaxValue=ArrayMaximum(DataMass, WHOLE_ARRAY, 2); // находим индекс элемента с наибольшим значением. Поиск выполняем по всему массиву (WHOLE_ARRAY), начиная со второй ячейки
int IndexMaxValue=ArrayMaximum(DataMass, 10, 3); // находим индекс элемента с наибольшим значением. Поиск выполняем по десяти элементам массива (10), начиная с третьей ячейки
Надеюсь доходчиво объяснил :)
более чем =) спасибо, но один вопрос все же остался.... а что если у меня 2 одинаковых максимальных значения, то какое он выберет? то, которое слева?
более чем =) спасибо, но один вопрос все же остался.... а что если у меня 2 одинаковых максимальных значения, то какое он выберет? то, которое слева?
А проверьте :)
Напишите коротенький скрипт, который будет вам выводить найденное максимальное значение в массиве и его индекс. Массив явно инициализируйте значениями, два из которых будут одинаковыми и будут больше остальных значений.
По индексу и определите которое из двух наибольших значений он вам выводит.
Выводит индекс ближайшего к началу поиска:
Догадайтесь индекс которого он выводит :)
Есть сочинение Н.Старицкого. По нему снят фильм "За двумя зайцами". Хочу почитать этого гениального автора. Мне не удаётся найти его текст. Помогите найти. и извините, если попросил не в ту ветку ;)
Доброе утро! Есть два вопроса (чего-то нигде не могу найти удобоваримого ответа):
1. Индикатор рисует в подокне два ряда вертикальных трендовых линий. Как мне получить номера баров, соответствующих этим линиям?
2. В том же индикаторе необходимо отрисовывать линии в будущее где-то на 24 часа вперед. Но что-то никак не соображу, как это лучше реализовать.
Очень надеюсь на помощь форумчан!)