Metatrader 4
билд 970
появилась ошибка
мой код, одна строка, обновляю базу :
int z=EcUpdate(Source);
в журнале ошибка
fileupdate AUDUSD,H1: array out of range in 'EcLib.mq4' (244,15)
по указанным координатам в файле идет код:
//читаем words
ArrayFree(words_array); words_count = 1; handle_READ = FileOpen("ec\\DB\\words.csv", FILE_COMMON|FILE_READ|FILE_TXT, 0); while(!FileIsEnding(handle_READ)) { ArrayResize(words_array, words_count + 1, 100); words_array[words_count] = StringTrimRight(FileReadString(handle_READ)); words_count++; } FileClose(handle_READ); words_array[0] = NULL; //ОТЛАДКА -- вот именно тут появляется ошибка
закомментировал последнюю строку и процесс пошел.
Вторая функция:
/*=============================================================================================== внешняя; выводит базу данных FileName(.dat) в файл FileName(.csv), разделитель ';' */ void dat2txt
ошибка в пути к базе данных:
//запись бд в текстовом виде //первоисточник путь к базе данных //handle_READ = FileOpen("ec\\" + FileName + ".dat", FILE_COMMON|FILE_READ|FILE_BIN); //исправление handle_READ = FileOpen("ec\\DB\\" + FileName + ".dat", FILE_COMMON|FILE_READ|FILE_BIN);
небольшое замечание,
в справке к коду указан сайт, с которого рекомендуется качать архив котировок,
наткнулся на такую особенность:
-если скачать с сайта страницу в формате "только HTML" то сохраняются не все даты, а только 2016 год, хотя сама страница отображает нужные данные
-если качаем "веб страницу полностью"- то все даты на месте.
небольшое замечание,
в справке к коду указан сайт, с которого рекомендуется качать архив котировок,
наткнулся на такую особенность:
-если скачать с сайта страницу в формате "только HTML" то сохраняются не все даты, а только 2016 год, хотя сама страница отображает нужные данные
-если качаем "веб страницу полностью"- то все даты на месте.
Привет. Спасибо за комментарии
Браузер по умолчанию предлагает скачать страницу целиком, я так и делал. Но в нужную папку перекладывал только html страничку, папка была не нужна
Видимо браузер неправильно скачивает html страницу, если указать "только HTML", посему так делать не стоит
Что касается кода - давно в него не лазил, обязательно перепроверю
Единственное, если в комментарии стоит //ОТЛАДКА - значит, данный фрагмент вызвал у меня определенные трудности и, возможно, я забыл или не сумел до конца правильно оформить код
В любом случае на это стоиит обратить внимание
Вторая функция:
ошибка в пути к базе данных:
насколько помню - это не ошибка :) на данном этапе в библиотеке под разные источники (в связи с тем, что они ну очень сильно отличаются) были сделаны разные каталоги - для основного \DB, для Яхо \DB_YAHOO и т.д. Работает только основной пока
Поэтому, чтобы выводить текстовые файлы из разных баз предполагается, что FileName указывается вместе с каталогом
Здравствуйте!
Оригинал вопросов - на форуме, где Вы начинали эту библиотку писать, но вдруг тут быстрее увидите... :)
1. Для тестирования на истории достатоно функций EcUpdate (по поводу EcUpdate также см. вопрос 4) и EcNewsCount (если только "было/не было" хочу проверить), верно?
2. Функция FetchWeek только текущую неделю подкачивает, верно? Т.е. если вот прям щас начать тестировать, то придется подкачивать данные вручную, начиная с момента, когда Вы последний раз базу обновляли?
3. Не очень понятно, для чего используется GMT2serverShiftMin. Если я правильно понял, время в БД у Вас по Гринвичу, и вы предлагаете самим учитывать свой часовой пояс при обработке данных. Опять же, если я праильно понял, GMT2serverShiftMin используется только в функции dat2txt, которая используется в скрипте weekupdate (который нужен только для периодической подгрузки данных в БД).... если это так, то в Вашей БД до определенной даты будут данные со временем по Гринвичу, а после этой даты - данные с тем временем, которое зададут... если это так, то как-то...неконсистентненько?
4. Код EcUpdate не анализировал, поэтому вопрос: я правильно понимаю, что для обновления БД недостаточно просто вызвать EcUpdate, а нужно запустить ecexpert? Т.е., вроде как не сама EcUpdate пишет в БД, а dat2txt, вызываемаея в этом советнике? ... правда, я запутался между ecexpert и weekupdate... я правильно понял, что первый (с EcUpdate и dat2txt) - для подкачки в БД истории (скажем, за прошлую неделю), а второй (с FetchWeek и dat2txt), - для подкачки текущей недели?
...или обновить БД с помощью ecexpert не получится, если своевременно каждую неделю не запускал weekupdate? Вроде, не так, но вдруг...
5. Можете (не очень детально, а кратко, но конкретно) указать последовательность запуска экспертов (и функций из библиотеки) для работы с тестером и, отдельно, для боевой работы?
Как я понимаю:
Тестер:
Запускаем ecexpert (предварительно установив GMT2serverShiftMin в 0 и выбрав в [EcExpert] даты за диапазон тестирования).
Запускаем свой советник, используюя функции из библиотеки (в моем случае, - только EcNewsCount)
"Боевое":
В начале недели запускаем скрипт weekupdate.
Потом - свой советник (с использованием функций из библиотеки)
... Правильно?
ИМХО база данных нужна только для тестирования. На боевом терминале требуется как можно быстрее получить фактическое значение показателя новости в момент выхода, что можно сделать только обратившись напрямую к сайту. И база будет только тормозить.
Огромное спасибище!
На текущий момент работает, сайт с календарем тоже жив.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
EcLib:
Автор: Sergei789