[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 236
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не совсем понимаю,что значит двоичный поиск. Это поиск в двухмерном массиве? Но у меня одномерный.
Проведите сортировку массива, если Вы до сих пор ее не сделали и для контроля правильной подготовки в init() распринтуйте его содержание, можно не весь а 20-50 первых элементов.
P.S. Вы видите идентичность двоичности и двухмерности??? Терминал видит Ваши циферки в "двоичном" коде и для правильной работы функции ArrayBsearch() требует предварительной сортировки массива.
Вы ничего там не увидели???
Я вижу, что функция ArrayBsearch() ВЕЗДЕ возвращает 0 (как индекс элемента). В 0-ой ячейке Вашего массива находится число 1.0408. Возвращаемся к коду:
Теперь подставляем в это условие полученные значения переменных (на каритинке Bid находится в пределах 0.8-0.9, возьмём максимум этого диапазона - 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). Условие выполняется ПРАВИЛЬНО!!! Ищите ошибки в заполнении своего массива. Предположительно Вы не обратили внимание на этот пункт работы функции ArrayBsearch():
Замечание: двоичный поиск обрабатывает только сортированные массивы. Для сортировки числового массива используется функция ArraySort().
P.S. Print желательно предоставлять не в виде картинки, а путём одновременного выделения нескольких строк (с использованием SHIFT - если не знаете ка это делается) этого самого принта (достаточно 10-20 строк) в окне терминала, затем копирования выделенного и вставки в свой пост в виде кода с использованием кнопочки SRC.
Я понял что проблема в функции ArrayBsearch()
Но я так и не понял почему эта функция не должна сразу возвращать один единственный N элемента массива со значением наиболее близким по значению к значению value
Почему еще участвуют в вычислениях massiv[S-1] и massiv[S+1] ?
Я понял что проблема в функции ArrayBsearch()
Но я так и не понял почему эта функция не должна сразу возвращать один единственный N элемента массива со значением наиболее близким по значению к значению value
Почему еще участвуют в вычислениях massiv[S-1] и massiv[S+1] ?
Проблема не в функции ArrayBsearch(), а в подготовке передаваемого в эту функцию массива!!!
А дальше пошёл просто "полёт фантазии"... Вашей фантазии...
Функция ArrayBsearch() возвращает ЕДИНСТВЕННОЕ значение, а для того, чтобы найти причину кривости кода, я в принт вывел значения: (по порядку) значение ячейки массива с индексом S (его вернула функция ArrayBsearch()), ближайшее слева значение в заданном массиве (massive[]) с индексом S-1, ближайшее справа значение с индексом S+1, цену на момент открытия ордера.
Вы пришли в 1-ый класс, а пытаетесь подсматривать в класс к выпускникам... Вернитесь в свой класс!!! - аналогия. :))
Проблема не в функции ArrayBsearch(), а в подготовке передаваемого в эту функцию массива!!!
А дальше пошёл просто "полёт фантазии"... Вашей фантазии...
Функция ArrayBsearch() возвращает ЕДИНСТВЕННОЕ значение, а для того, чтобы найти причину кривости кода, я в принт вывел значения: (по порядку) значение ячейки массива с индексом S (его вернула функция ArrayBsearch()), ближайшее слева значение в заданном массиве (massive[]) с индексом S-1, ближайшее справа значение с индексом S+1, цену на момент открытия ордера.
Вы пришли в 1-ый класс, а пытаетесь подсматривать в класс к выпускникам... Вернитесь в свой класс!!! - аналогия. :))
Единственное что еще не понимаю....
Вот мне нужно проинициализировать массив 3000 значениями.И я делал это при помощи EXCEL.
Мне показалось это долгим, многошаговым и нудным процессом.
А есть какие-то более оптимальные алгоритмы этого процесса?
Спасибо.
я делал это при помощи EXCEL.
Через DDE или через Лодырь?
Макрос напишите автоматизируете, если с истории. Открываете в Ворде со включенной записью макроса, там конвертируете и в эксель, там сохраняете макросом в csv и через DDE. По формату файлов данных метатрейдера и метастока не ко мне, некогда разбираться, сами. А так если double array[3000] нулями, то через for, но нулями и так инициализируются, если не ошибаюсь.
Все понял.Большое спасибо за помощь....я всегда немного тороплюсь и забегаю вперед....мне кажется в целом в этом больше плюсов чем минусов.
Единственное что еще не понимаю....
Вот мне нужно проинициализировать массив 3000 значениями.И я делал это при помощи EXCEL.
Мне показалось это долгим, многошаговым и нудным процессом.
А есть какие-то более оптимальные алгоритмы этого процесса?
Спасибо.
Выложите файл, в котором записаны значения инициализации..
Через DDE или через Лодырь?
Макрос напишите автоматизируете, если с истории. Открываете в Ворде со включенной записью макроса, там конвертируете и в эксель, там сохраняете макросом в csv и через DDE. По формату файлов данных метатрейдера и метастока не ко мне, некогда разбираться. А так если нулями, то через for, но нулями и так инициализируются, если не ошибаюсь.
Спасибо буду изучать.А я просто заходил в Сервис - сохранял в файл EXCEL историю по паре.
Разбивал единый столбец со всеми данными по столбцам.В столбце в ценами открытия ставил после каждого значения запятую - транспонировал в строку - сортировал - и вставлял в редактор,т.е. во
включаемые файл mqh.
Если есть ссылочки на инф. о DDE или Лодырь - дайте пожалуйста.
Спасибо.
Спасибо буду изучать.А я просто заходил в Сервис - сохранял в файл EXCEL историю по паре.
Разбивал единый столбец со всеми данными по столбцам.В столбце в ценами открытия ставил после каждого значения запятую - транспонировал в строку - сортировал - и вставлял в редактор,т.е. во
включаемые файл mqh.
Если есть ссылочки на инф. о DDE или Лодырь - дайте пожалуйста.
Спасибо.
Да не нужен вам ни DDE ни Лодырь. Нужна функция (10 строчек кода). кидаете файл в дирректорию терминала и массив будет проинициализирован.. Файл давайте.
Да не нужен вам ни DDE ни Лодырь. Нужна функция (10 строчек кода). кидаете файл в дирректорию терминала и массив будет проинициализирован.. Файл давайте.
Мне нужно инициализировать 2 массива
1.double
2.datetime
В первом массиве некоторые значения после 1120 строки почему - то преобразовались в другой формат после того как я поменял разделительный знак запятую на точку.(у меня там была запятая)
Если не сложно киньте мне пожалуйста и эти 10 строк кода ......я буду их изучать....мне хочется научится делать в дальнейшем это самому.
Большое спасибо за помощь.
Странно.Файл 140 кило.Я его заархивировал и прикрепил к сообщению.....а его нет.
Урежьте файл, мне достаточно пары строк в нем..