Приветствую. Ничего не понимаю, прошу избавить меня от ощущения тающей связи с реальностью :)
не могу присвоить значение эллементу массива, который сопоставлен с буфером индикатора.
so[1]=100;
Print("so[1]: " + so[1]);
грубо говоря вот так. so - это буферный массив, результатом принта печатается нулевое значение. Принт, естественно, это просто отладочная строка, сразу за присвоением. И все равно печатает ноль. Ничего не понимаю! Подскажите, что не так???
сделайте инициализацию массива
double myarray[10];
ArrayInitialize(myarray,2.1);
сделайте инициализацию массива
double myarray[10];
я тут немного подправил стартовый пост - у меня массивы сопоставлены с буферами индикатора. и они автоматически инициализируются в функции инициализации и распределения буфером. По стандарту mql4 не рекумендуется использовать ArrayInitialize для инициализации массивов буферов индикатора, по вышеуказанной причине....
так что они считай фактически инициализированы. что то тут другое...
Все нормально
#property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Olive extern int period=5; double sa[],so[]; int init() { SetIndexStyle(0,DRAW_LINE,STYLE_DOT,1); SetIndexBuffer(0,sa); SetIndexLabel(0,"Prison average line " + period); SetIndexStyle(1,DRAW_NONE); SetIndexBuffer(1,so); } int start() { so[1]=100; Alert("so[1]: " + so[1]); }
Приветствую. Ничего не понимаю, прошу избавить меня от ощущения тающей связи с реальностью :)
не могу присвоить значение эллементу массива, который сопоставлен с буфером индикатора.
so[1]=100;
Print("so[1]: " + so[1]);
грубо говоря вот так. so - это буферный массив, результатом принта печатается нулевое значение. Принт, естественно, это просто отладочная строка, сразу за присвоением. И все равно печатает ноль. Ничего не понимаю! Подскажите, что не так???
Мне знакомы два способа получить такой результат:
- если so[] - это индикаторный буфер, то, как вариант: нет инициализации (ошибка при инициализации) буфера so в init().
- использование индикаторных буферов в скриптах и советниках. Пример такого скрипта:
//+------------------------------------------------------------------+ //| 1.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| https://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "https://www.metaquotes.net" double so[]; int init() { //---- indicators IndicatorBuffers(4); SetIndexBuffer(0, so); //---- return(0); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- so[1]=100; Print("so[1]: " + so[1]); //---- return(0); } //+------------------------------------------------------------------+
Спасибо всем, что не бросили на произвол судьбы :)
Дело, как часто бывает, оказалось в чрезмерной кривизне рук. Все действительно работает корректно, вот только каменты на экране и принты обновились только после удаления/установки индикатора на график, а не после рекомпиляции, как я ожидал.
Анекдот вспомнился...
Автобус резко затормозил. Кто стоял - короче, черт знает что там было. Один пассажир после того, как все устаканилось, начал истерично выкликивать:
- Где мой зеленый шарик?! Где мой зеленый шарик?!
Все, ужаснувшись подачей, начали искать. Ищут, ищут...
Через нектр. время виновник торжества говорит (засовывая палец в нос):
- Ладно. Я себе еще скатаю...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую. Ничего не понимаю, прошу избавить меня от ощущения тающей связи с реальностью :)
не могу присвоить значение эллементу массива, который сопоставлен с буфером индикатора.
грубо говоря вот так. so - это буферный массив, результатом принта печатается нулевое значение. Принт, естественно, это просто отладочная строка, сразу за присвоением. И все равно печатает ноль. Ничего не понимаю! Подскажите, что не так???