Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2077
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем доброго времени суток! Вопрос по mql4. В Справочнике сказано ArrayBsearch Возвращает индекс первого найденного элемента. Вот мой код
Код обращается к двухмерному массиву UN в первом измерении которого хранятся 6700 строк со значениями цены , которые повторяются. Массив отсортирован по возрастанию.
Вот фрагмент этого массива
ВОПРОС Почему ArrayBsearch возвращает индекс не первого найденного элемента(желтый) как написано в Справочнике, а возвращает индекс последнего элемента (зеленый).
И какие исправления нужно внести в код что бы ArrayBsearch возвращал индекс первого найденного элемента(желтого)
Всем спасибо за помощь.
Всем доброго времени суток! Вопрос по mql4. В Справочнике сказано ArrayBsearch Возвращает индекс первого найденного элемента. Вот мой код
Код обращается к двухмерному массиву UN в первом измерении которого хранятся 6700 строк со значениями цены , которые повторяются. Массив отсортирован по возрастанию.
Вот фрагмент этого массива
ВОПРОС Почему ArrayBsearch возвращает индекс не первого найденного элемента(желтый) как написано в Справочнике, а возвращает индекс последнего элемента (зеленый).
И какие исправления нужно внести в код что бы ArrayBsearch возвращал индекс первого найденного элемента(желтого)
Всем спасибо за помощь.
Дело может быть в этом. Попробуйте изменить флаг AS_SERIES перед вызовом ArrayBsearch()
P.S. Когда меня в очереди спрашивают "кто крайний?", я уточняю, с какой стороны :)
Дело может быть в этом. Попробуйте изменить флаг AS_SERIES перед вызовом ArrayBsearch()
P.S. Когда меня в очереди спрашивают "кто крайний?", я уточняю, с какой стороны :)
Спасибо большое за ценную информацию. Читал про этот флаг. Но никогда не вдумывался в него, поскольку написано что ArraySetAsSeries
устанавливает флаг AS_SERIES указанному объекту динамического массива, индексация элементов массива будет производиться как в таймсериях.
А у меня массив статический
Спасибо.
Заполняю массив разницей Хай[0] и клоз[1]. Одни положительные числа (логично). После цикла заполнения, принтую циклом все эти значения - половина отрицательных значений. Что это? Откуда они? Почему изменились?
for (int i = 0; i < 1000; i++)
{ mass[i]=iHigh(_Symbol, PERIOD_H1, i)-iClose(_Symbol, PERIOD_H1, i+1);
Print( mass[i]; }
for (int i = 0; i < 1000; i++)
{ if (mass[i]<0) Print( mass[i], " ", i);
}
{ mass[i]=iHigh(_Symbol, PERIOD_H1, i)-iClose(_Symbol, PERIOD_H1, i+1);
Два раза прибавляется 1. Прибавление в теле цикла где разница лишнее.
Обычно i принтую, так понятней что происходит. Print("i ",i," ", mass[i]; }
А это я просто для проверки. Сейчас тот же код после перезагрузки терминала заработал нормально. То есть, принтует повторно те же значения. Видимо, косяк терминала, если перезагрузка спасает.
А это я просто для проверки. Сейчас тот же код после перезагрузки терминала заработал нормально. То есть, принтует повторно те же значения. Видимо, косяк терминала, если перезагрузка спасает.
Зы, ошибся, код верный.)
Принтуют конечно для ловли косяков. это нормально, просто когда принтуются значения массива без номера элемента, не всегда понятно что происходит.
Вообще для чистоты эксперимента в таких случаях принтую в теле цикла все значения, и клоз и хай и разницу и номер массивов))) Так наглядней.Заполняю массив разницей Хай[0] и клоз[1]. Одни положительные числа (логично). После цикла заполнения, принтую циклом все эти значения - половина отрицательных значений. Что это? Откуда они? Почему изменились?
for (int i = 0; i < 1000; i++)
{ mass[i]=iHigh(_Symbol, PERIOD_H1, i)-iClose(_Symbol, PERIOD_H1, i+1);
Print( mass[i]; }
for (int i = 0; i < 1000; i++)
{ if (mass[i]<0) Print( mass[i], " ", i);
}
А почему хай свечи не может быть ниже клоуза соседней?
А почему хай свечи не может быть ниже клоуза соседней?
Конечно, может. Только не половина. 1% от какого-то количества.
Всем привет
Кто подскажет, как работает функция print
Хочу глазами проверить, что сделки открываются корректно. В момент открытия позиции вывожу 7 значений типа double:
printf("Parametrs",a,b,c,d,f,g,h);
Итог, в журнал записывается только слово: " Parametrs "
Что не так?
Всем привет
Кто подскажет, как работает функция print
Хочу глазами проверить, что сделки открываются корректно. В момент открытия позиции вывожу 7 значений типа double:
printf("Parametrs",a,b,c,d,f,g,h);
Итог, в журнал записывается только слово: " Parametrs "
Что не так?
Здравствуйте, Михаил! Попробуйте применить функцию Print() вместо printf():
С уважением, Владимир.