Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не работает ArrayInitialize код прилагается если раскоментировать цикл то все нормально.
И еще при обьявлении переменных в классе и индикаторе на глобальном уровне с одинаковыми именами - выскакивает предупреждение .
На выходных, пока не было тиков, отлаживал индикатор на демо-счетах, прогоняя на последнем билде двух экземпляров терминала MT5, но от разных компаний: MetaQuotes и EGlobal. Настройки везде одинаковые. Для верности проверял в офф-лайне, поэтому тиковый фактор исключён.
Проблема в том, что наипростейший код "недоиндикатора" (не говоря уже о полноценном и более сложном индикаторе) на разных терминалах разных компаний отображает разное количество выдачи результата:
1. EGlobal. 2. MetaQuotes.
Оба терминала полностью выгружал (проверял через Менеджер Задач по процессам в памяти), загружал по новой и на всякий случай перекомпилировал оба кода. В итоге - без изменений.
По разному работают MathRound() в 4-ке и в 5-ке, а должно бы одинаково.
4-шный код:
5-шный код:
По разному работают MathRound() в 4-ке и в 5-ке, а должно бы одинаково.
4-шный код:
5-шный код:
Проблема тут:
это значение по разному округляется в 4-ке и 5-ке.
Тут ничего удивительного, так и должно быть.
Почему в МТ5 не сохраняется история ордеров и т.д., если прервать тестирование? В МТ4 сохранялось.
Также нет позиционирования в истории ордеров из графика тестирования - было удобно просматривать ордера в зоне крупных просадок, кликая по графику.
Добрый вечер.
Объясните мне пожалуйста, Как работает метод SLeep() ?
ПО идее он должен приостанавливать работу эксперта на определенный интервал времени, или я не прав?
{for (int sleep=0;sleep<10000;sleep++)
if (BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } else Sleep(100);}
По данному коду, я жду результата такового - Если Количество Просчитанных баров определенного индикатора стало больше определенного значения, цикл прерывается; В ином случае происходит Задержка дальнейшего выполнения кода В размере 100мс . Итого возможная общая задержка 100*10000 мс....Достаточное время для просчета индикатора. Тогда почему код продолжает выполняться?( который следует за этим циклом) Или в тестере эта функция не работает так как я предполагаю. Заранее спасибо за разъяснения.
Добрый вечер.
Объясните мне пожалуйста, Как работает метод SLeep() ?
ПО идее он должен приостанавливать работу эксперта на определенный интервал времени, или я не прав?
{for (int sleep=0;sleep<10000;sleep++)
if (BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } else Sleep(100);}
По данному коду, я жду результата такового - Если Количество Просчитанных баров определенного индикатора стало больше определенного значения, цикл прерывается; В ином случае происходит Задержка дальнейшего выполнения кода В размере 100мс . Итого возможная общая задержка 100*10000 мс....Достаточное время для просчета индикатора. Тогда почему код продолжает выполняться?( который следует за этим циклом) Или в тестере эта функция не работает так как я предполагаю. Заранее спасибо за разъяснения.
Скрежет головного мозга вызывает документация, например, CopyBuffer: "Если необходимо произвести частичное копирование значений индикатора в другой массив (не индикаторный буфер), то для этих целей необходимо использовать промежуточный массив, в который копируется требуемое количество. И уже из этого массива-посредника произвести поэлементное копирование нужного количества значений в нужные места принимающего массива."
Если явно ссылаются на buffer_num, стало быть, безусловно подразумевается необходимость предварительного увязывания принимающего массива с индикаторным буфером под тем или иным порядковым номером через SetIndexBuffer под видом скорее всего INDICATOR_CALCULATIONS. Но "если необходимо произвести частичное копирование значений индикатора в другой массив (не индикаторный буфер)", то и речи быть не может ни о каком buffer_num, ибо он не индикаторный и мы его по определению ни с чем не увязывали.
Противоречие?
Двусмысленность?
Или я совсем запрограммировался?
Попытался самостоятельно найти чёткое определение индикаторного буфера и не смог. Таковым является любой, увязанный через SetIndexBuffer, или этого мало и надо, чтобы это был массив именно с идентификатором INDICATOR_DATA?