Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Надо код смотреть.Так бесполезно.
Простите все, что так долго не отписывал
Ну вот простой пример моей проблемы:
Предположим мы используем вот этот индикатор для генерирования файла - это стандартный МА, с функциею записывания в файл.
Как только мы бросаем на график этот индюк, он сразу создаёт файл.
Этот файл я должен отобразить вот этим индюком: - это стандартный МА с функцией по выводу данных с файла в массив.
И если это делать в том же самом терминале где был создан сам файл то всё как бы прекрасно работает, и все буфера занимают свои значения,
ну а если изменить на другой терминал (даже просто переустановленною копию предыдущего терминала в другую папку), то все значения просто пропадают и на их место и становится 2147483647 или "ничто".
Вот и вся проблема в более "информативно"
С Уважением, спасибо ещё раз за помощь!
P.S. я использовал UWCT терминал
Каждый терминал установлен в своей директории. МТ4 по умолчанию открывает и пишет клиентские файлы только в папке C:\Program Files\папка терминала\experts\files\
Так что если вы этим способом передаете информацию из одного терминала в другой, то адрес файла нужно указывать со всем путем.
Каждый терминал установлен в своей директории. МТ4 по умолчанию открывает и пишет клиентские файлы только в папке C:\Program Files\папка терминала\experts\files\
Так что если вы этим способом передаете информацию из одного терминала в другой, то адрес файла нужно указывать со всем путем.
Нет я файл передаю в другой терминал просто, копирую из терминала где был создан файл C:\Program Files\папка терминала\experts\files\
в всавляю в папку /файлы другова терминала (тово где записанная инйормацыя должна быть отображена)
- тоесьть я копирую буфера чтобы работать с ними на растоянии от главного индикатора.
Простите все, что так долго не отписывал...
Ну вот сразу бы с кодом… :)
Ошибка закралась в индикатор считывающий данные из файла "test.bin". Ниже «проблемный кусок»
Нельзя индикаторный массив принудительно заставлять менять свои размеры с помощью функции ArrayResize(). На это способна лишь MQL-машина, соответственно при поступлении новых баров, она автоматически изменяет размер индикаторного массива, а когда вы самостоятельно хотите это сделать, то в журнале появляется вот это (к слову, не забываем в первую очередь смотреть именно туда, следить за ошибками среды исполнения, так как компилятор данный нюанс прошляпил):
Это результат ошибки 4053 - ERR_SOME_ARRAY_ERROR - Ошибка массива.
Так что дело вовсе не в различных терминалах, если вы посмотрите в журналы терминалов в которых «вроде все в порядке», то увидите туже печальную ошибку. А первичное построение мувинга из файла в «родном» терминале происходит от того что количество истории (ровно как и баров, а также естественно размеров индикаторных массивов) совпадают, поэтому первая стадия конфликта первоначально проходит не замеченной, но как я уже сказал – журнал без пристрастен, и баг в нем лезет во всех терминалах.
Ну а теперь немного о решении это проблемы. Мне ничего лучше в голову не пришло, как создать обыкновенный массив который соответственно можно растягивать как захочется, и использовать его как буфер, между файлом и индикаторным массивом. Итак создаем простой массив буфер:double tmp[];
Первоначально записываем данные в него, естественно меняем его размеры как хотим, так как уже можно (массив то обыкновенный, а не индикаторный): Далее нюанс, простые массивы организованны не так как индикаторные (где нулевой индекс последний, а не первый как у обычных).Поэтому перед тем как "слить" оба массива приводим обычный массив (tmp) в соответствие с индикаторным, для того чтобы не перепутать элементы и правильно построить МА:
ArraySetAsSeries(tmp, true);
Ну а далее просто копируем данные из массива-буфера в индикаторный массив:
Так как МА будет строить естественно индикаторный массив, то его размер для нас важнее, и мы будем равняется на него (размер индикаторного массива равен количеству баров = Bars)
Исправленный вариант прилагаю.
Ну вот сразу бы с кодом… :)
.........................................................
Ошибка закралась в индикатор считывающий данные из файла "test.bin". Ниже «проблемный кусок»
Исправленный вариант прилагаю.
Огромнейшие СПАСИБО! ;) Всё работает!