Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1247099400 - это соответствует времени 1 бара в окне истории котировок EURUSD M1. В тесторе, когда расчет индикатора достигает предпоследнего бара т.е. 1 по индексации терминала (1247099400== Time[0]), перед тем, как тестор остановится, это условие должно срабатывать, и до того, как индикатор отключится, сохранить сформированный массив. И как Вы поступаете в подобных случаях и сохраняете расчетные значения при работе в тесторе?
Не знаю как реализовано в МТ, но если компилятор пропускает, наверное, допустимо. НО в языках программировани есть понятие lvalue & rvaluе - то бишь "левого" и "правого" значения. Это берется относительно оператора присваивания. То есть, выражение
1247099400 = Time[0];
будет неверным в том смысле, что константе нельзя присвоить значение, которое хранится в элементе массива Time[0].
Выражение же Time[0] = 1247099400; в общем смысле (без учета специфики переменной Time[]) будет корректно: значение можно сохранить в элементе массива. Это лирическое отступление в том смысле, что, общности ради, стоит придерживаться правил и в операторах сравнения.
По поводу сохранения значений перед завершением работы индикатора - есть функция деинит, которая вызывается один раз перед выгрузкой индикатора/советника/скрипта - сохраняю в ней все, что мне необходимо.
Что касается проверки на обрыв связи - определитесь сколько значений индикатора Вам нужно. Возможно быстрее просто все это пересчитать один раз на момент открытия бара? Файловые операции весьма "недешевое" (с точки зрения требуемых рессурсов) операции. И еще - операция динамического переразмещения массива (ArrayResize(TS, mc+1);) весьма много рессурсов (по времени) требует - тестер "тормозить" будет.
Удачи.
По поводу сохранения значений перед завершением работы индикатора - есть функция деинит, которая вызывается один раз перед выгрузкой индикатора/советника/скрипта - сохраняю в ней все, что мне необходимо.
Что касается проверки на обрыв связи - определитесь сколько значений индикатора Вам нужно. Возможно быстрее просто все это пересчитать один раз на момент открытия бара? Файловые операции весьма "недешевое" (с точки зрения требуемых рессурсов) операции. И еще - операция динамического переразмещения массива (ArrayResize(TS, mc+1);) весьма много рессурсов (по времени) требует - тестер "тормозить" будет.
Удачи.
Если бы в функции деинит это срабатывало - не было бы вопросов, но в тесторе это не срабатывает, я использую сохранение в деинит в статическом режиме работы индикатора или на демо. А Вам удавалось сохранять в ней результаты расчетов в тесторе?
Что касается проблемы обрыва связи, то в соответствии с создаваемой стратегией мне нужен именно такой вариант, а не полный пересчет по приходу нового бара. Если такого варианта нет, придется пока делать индикатор без учета разрыва связи.
Может всетаки модераторы снизойдут до нас смертных, и скажут: возможно ли вообще сохранение массива в тесторе? А то похоже на форуме никто этого не знает, или не хочет говорить, а то бьешся над проблемой, а возможно она и не имеет решения.
Если бы в функции деинит это срабатывало - не было бы вопросов, но в тесторе это не срабатывает, я использую сохранение в деинит в статическом режиме работы индикатора или на демо. А Вам удавалось сохранять в ней результаты расчетов в тесторе?
Что касается проблемы обрыва связи, то в соответствии с создаваемой стратегией мне нужен именно такой вариант, а не полный пересчет по приходу нового бара. Если такого варианта нет, придется пока делать индикатор без учета разрыва связи.
Может всетаки модераторы снизойдут до нас смертных, и скажут: возможно ли вообще сохранение массива в тесторе? А то похоже на форуме никто этого не знает, или не хочет говорить, а то бьешся над проблемой, а возможно она и не имеет решения.
У эксперта в режиме тестирования deinit() отрабатывает нормально. Как и при оптимизации. Использую запись в файл для своих нужд. Например свой критерий оптимизации.
У эксперта в режиме тестирования deinit() отрабатывает нормально. Как и при оптимизации. Использую запись в файл для своих нужд. Например свой критерий оптимизации.
Вопрос касается индикатора при визуализации его работы, а не эксперта, у меня эксперт, в этом случае, включен только для работы тестора, и не связан с индикатором который я отлаживаю.
Может быть кто-то выводил коэффициент соотношения инструментов и таймфреймов?
Я пробовал работать над этой областью,.... и столкнулся с неимоверной проблеммой..... даже не одной,... при таком глобальном анализе комп просто зависает с записью в файл,... а что косаеться инструментов,... на разных парах и разных таймах, то тут еще хуже,... дело в том что на каждой паре инструмент работает по своему,.. и отсюда значения коэффициента практически невозможно подобрать правильно, ну мне пока не удалось,..... только с расхождениями коэф.одних и тех же инструментов по разным парам.
Что-то у меня никак не получается сохранить массив при работе тестора.
Загружаю индикатор в режиме визуализации,
устанавливаю счетчик баров mc=0; при каждом новом баре занашу в массив последнее расчетное значение одной из индикаторных линий:
TS[mc]= GM2[nq]; по комменту вижу, что накопление значений в массив производится.
Далее на предпоследнем баре графика пытаюсь сохранить массив
но ничего не получается. Подскажите, пожалуйста, как мне это сделать!попробуйте вот такую конструкцию:
в принципе открывать файл можно и в deinit()
но такая конструкция универсальна, можно писать в файл и в промежутке между init() и deinit() тобиш в start() не мучаясь с сохранением предидущего значения.
Потом ещё можно не сохранять значения в буфер, а сохранять в переменные и переменные записывать в файл в конце start().
В общем вариантов много выбирайте какой вам больше подходит.
удачи.