Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я пока разбираюсь в тонкостях индикаторов и есть вопросы. Я делаю сброс буфера индикатора в OnInit(), но почему то буфера не сбрасывается при компиляций индикатора. По логике должно остаться одна полная ячейка для каждого буфера после компиляций, но по картинке видно что там их много (думаю это остались предыдущие ячейки буферов). Где мне ошибка?
if(rates_total-8==i)// || rates_total-5==i || rates_total-2==i) { ColorHistogram_2Buffer1[i]=high[i]; ColorHistogram_2Buffer2[i]=low[i]; ColorHistogram_2Colors[i]=0; }
Я пока разбираюсь в тонкостях индикаторов и есть вопросы. Я делаю сброс буфера индикатора в OnInit(), но почему то буфера не сбрасывается при компиляций индикатора. По логике должно остаться одна полная ячейка для каждого буфера после компиляций, но по картинке видно что там их много (думаю это остались предыдущие ячейки буферов). Где мне ошибка?
В OnInit индикаторные буферы имеют нулевую длину.
Поэтому с ними делай что душе угодно, им всё это как мёртвому припарки.
А вот когда выполнение кода переходит в OnCalculate тут-же размер становится равным rates_total
и во всех ячейках массива находится "мусор". Может и от старого расчёта индикатора остаться.
В OnInit индикаторные буферы имеют нулевую длину.
Поэтому с ними делай что душе угодно, им всё это как мёртвому припарки.
А вот когда выполнение кода переходит в OnCalculate тут-же размер становится равным rates_total
и во всех ячейках массива находится "мусор". Может и от старого расчёта индикатора остаться.
Большое спасибо, все понял и все получилось! Сделал вот так:
Большое спасибо, все понял и все получилось! Сделал вот так:
А зачем дважды присваивать значение переменной?
И вопрос: А зачем всё это надо? Ведь проходя по всем барам в цикле все ячейки массива по-любому чем-то должны заполняться. Разве-что индикатор должен показывать только текущее положение, но тогда инициализировать массив надо на каждом баре, а не только в начале...
А зачем дважды присваивать значение переменной?
И вопрос: А зачем всё это надо? Ведь проходя по всем барам в цикле все ячейки массива по-любому чем-то должны заполняться. Разве-что индикатор должен показывать только текущее положение, но тогда инициализировать массив надо на каждом баре, а не только в начале...
В этом примере, я хотел просто понять как сбросить буфер. Но в дальнейшем (в индикаторе над чем я сейчас работаю), мне надо будет и оставлять предыдущие ячейки и добавлять новые. И как раз над этим я стал работать.Так сказать - первые тесты.
Я не был уверен что все действия с графиком имитирует OnInit(), например смена таимфреимов. Смена таимфреимов сбросила (счас проверил), но может есть что-то другое, поэтому я и поставил второй в OnInit() для уверенности. Но если не надо, тогда я не будут там ставить.
Ааа... Ну да, при смене периода графика переменные глобального уровня не инициализируются. ???Кажется... точно не помню.
А в общем-то можно обойтись без этой дополнительной bool переменной.
А в общем-то можно обойтись без этой дополнительной bool переменной.
Да, точно, еще лучше, спасибо.
Не подскажете почему если период больше 30 минут, то возвращает такое странное число?
KP 0 14:33:22.423 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,M30) PERIOD: 30
GG 0 14:33:24.402 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H1) PERIOD: 16385
RJ 0 14:33:25.675 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H4) PERIOD: 16388Не подскажете почему если период больше 30 минут, то возвращает такое странное число?
в МТ5, значения периодов не равны количеству минут, как в МТ4