![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за ваше объяснение.
Теперь я вижу это лучше.
SCFX
Привет,
Я чешу голову от этой безумной ошибки.
До сих пор этот простой индикатор из 4 рядов кода исчезает, когда я меняю таймфрейм.
Как ни странно, я уже применил все предложения, размещенные здесь, но все равно ничего не получилось.
Я чувствую себя так плохо...
Пожалуйста, помогите мне.
Большое спасибо,
SCFX
Привет,
Я чешу голову от этой безумной ошибки.
До сих пор этот простой индикатор из 4 рядов кода исчезает, когда я меняю таймфрейм.
Как ни странно, я уже применил все предложения, размещенные здесь, но все равно ничего не получилось.
Я чувствую себя так плохо...
Пожалуйста, помогите мне.
Большое спасибо,
SCFX
Спасибо за ответ.
На моем журнале нет такого уведомления, но когда я меняю TF, этот индикатор удаляется.
Пока не могу исправить.
SCFX
2014.05.18 08:41:31.080Пользовательский индикатор H_889_boring GBPUSD,H1: удален
2014.05.18 08:41:25.441 Пользовательский индикатор H_889_boring GBPUSD,H4: успешно загружен
Я все еще не могу исправить это.
SCFX
Это потому, что вы не очень стараетесь.
Вы ничему не научитесь, если попросите других людей сделать это за вас, единственный способ - сделать это самому, чтобы понять это. Единственный способ сделать это самому - изучить каждую строку кода, разбить ее на части и понять, что именно она делает, и есть несколько способов сделать это.
Это все, что вы можете сделать, чтобы найти причину проблемы.
Если бы вы перешли на вкладку "Эксперты", то там было бы сказано, что ваш индикатор сделал нулевое деление на этой линии, смена таймфреймов здесь ни при чем.
Это означает, что High[i]-Low[i] по какой-то причине был равен нулю. Если вы посмотрите на индикатор на графике, вы увидите, что индикатор нарисовал некоторые из своих значений, а затем остановился на баре, где есть только один тик. Если есть только один тик high[i] == low[i], то это вызвало бы нулевое деление.
Теперь убедитесь, что значение high[i]-low[i] не используется, если оно равно нулю.
Теперь вы увидите, что на вкладке "Эксперты" показано, что код больше не делится на ноль, но выдает ошибку array out of range на этой строке.
if(high[i] - low[i] == 0)
Что же произойдет, если убрать все вычисления и условия для проверки цикла?
Теперь вкладка experts снова сообщает об ошибке array out of range, на этот раз в этой строке:
Теперь вы знаете, что ваш код приводит к выходу массива за пределы диапазона каждый раз, когда в цикле используется массив цен. Итак, выясните, что не так с циклом и почему Close[i], Low[i], High[i] выходят за пределы диапазона. Вы видите, что индикатор рисует до конца графика, поэтому ошибка должна быть в конце, в самых высоких индексах массива.
Похоже, что вы пытаетесь сделать индикатор, не научившись сначала кодировать правильно работающий цикл. Существует множество примеров того, как это сделать. Посмотрите на код включенных индикаторов и поэкспериментируйте с ними, пока не поймете, как именно они работают, затем попробуйте сделать индикатор для рисования простой одиночной линии, который работает правильно, прежде чем пытаться заставить его выполнять вычисления.
@ scfx
Единственный человек, который может исправить, это вы. Или зайдите на https://www.mql5.com/en/job
и опубликуйте работу там.
...
Пожалуйста, SDC, не нужно быть таким суровым, даже если вы правы.
Пожалуйста, SDC, не нужно быть таким суровым, даже если вы правы.
lol Я немного переформулировал свой пост ;)
Извините, я ввел вас в заблуждение, прошу прощения, индикатор может быть закодирован таким образом:
Если график имеет менее 3000 баров, он все равно будетвне диапазона.