пробовали через Мастер создания создавать? там очередность есть декларации, где-то нарушен порядок
здесь всегда рекомендуют шапку декларации и привязки буферов делать через "Мастер создания"
Буквально уже неделю бьюсь об стену не могу понять почему если поставить индикатор типа DRAW_ARROW в списке индикторово до DRAW_CANDLES индикатора то всё работает нормально. Но если после, то уже DRAW_ARROW будет рисовать исключительно точки. Игнорируя задание символа (как здесь : PlotIndexSetInteger(11, PLOT_ARROW,169);
/Так работает
А так уже нет
Прикреплен тест пример
Заготовку создайте при помощи 'MQL Wizard' и не будете ничем биться о стену.
Буквально уже неделю бьюсь об стену не могу понять почему если поставить индикатор типа DRAW_ARROW в списке индикторово до DRAW_CANDLES индикатора то всё работает нормально. Но если после, то уже DRAW_ARROW будет рисовать исключительно точки. Игнорируя задание символа (как здесь : PlotIndexSetInteger(11, PLOT_ARROW,169);
/Так работает
А так уже нет
Прикреплен тест пример
Когда меняете местами DRAW_ARROW и DRAW_CANDLES функция OnInit() остаётся неизменной?
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //arrows SetIndexBuffer(0,Arrows,INDICATOR_DATA); PlotIndexSetInteger(0, PLOT_ARROW,arrowchar); SetIndexBuffer(1,ArrowsColors,INDICATOR_COLOR_INDEX); //-Candles SetIndexBuffer(2,CandlesBuffer1,INDICATOR_DATA); SetIndexBuffer(3,CandlesBuffer2,INDICATOR_DATA); SetIndexBuffer(4,CandlesBuffer3,INDICATOR_DATA); SetIndexBuffer(5,CandlesBuffer4,INDICATOR_DATA); SetIndexBuffer(6,CandlesColors,INDICATOR_COLOR_INDEX); SetIndexBuffer(7,BodyO,INDICATOR_DATA); SetIndexBuffer(8,BodyH,INDICATOR_DATA); SetIndexBuffer(9,BodyL,INDICATOR_DATA); SetIndexBuffer(10,BodyC,INDICATOR_DATA); PlotIndexSetDouble(7,PLOT_EMPTY_VALUE,0); SetIndexBuffer(11,Arrows2,INDICATOR_DATA); PlotIndexSetInteger(11, PLOT_ARROW,169); //--- return(INIT_SUCCEEDED); }
Когда меняете местами DRAW_ARROW и DRAW_CANDLES функция OnInit() остаётся неизменной?
Конечно меняю. В примере именно и есть два индекса с DRAW_ARROW чтобы продемонстрировать баг
Я в принципе понимаю как обойти - просто задавать все DRAW_ARROW до блоков DRAW_CANDLES. Но меня беспокоит почему так? Эти индексные буфферы и массивы с ними связанные постоянно глючат , вот я пытаюсь разобраться где я что не понимаю
Конечно меняю. В примере именно и есть два индекса с DRAW_ARROW чтобы продемонстрировать баг
Я в принципе понимаю как обойти - просто задавать все DRAW_ARROW до блоков DRAW_CANDLES. Но меня беспокоит почему так? Эти индексные буфферы и массивы с ними связанные постоянно глючат , вот я пытаюсь разобраться где я что не понимаю
Нет никакого "бага". Генерируйте при помощи MQL5 Wizard и учитесь на сгенерированном шаблоне.
Нет никакого "бага". Генерируйте при помощи MQL5 Wizard и учитесь на сгенерированном шаблоне.
Так. сделал как посоветовали - через визард. Нашёл в чем причина. Спасибо что натолкнули на путь.
Штука была в том, что я полагал что 11 массив значит и PlotIndexSetInteger 11.
SetIndexBuffer(11,Arrows2,INDICATOR_DATA); PlotIndexSetInteger(11, PLOT_ARROW,169);
А на самом деле должно быть 3 - по номеру индикатора. Почему 3? Ведь #property indicator_label4 ? - Ну наверное потому что массивы с нуля считаются. Система ниппель! Но хоть логика понятна теперь
Всем спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Буквально уже неделю бьюсь об стену не могу понять почему если поставить индикатор типа DRAW_ARROW в списке индикторово до DRAW_CANDLES индикатора то всё работает нормально. Но если после, то уже DRAW_ARROW будет рисовать исключительно точки. Игнорируя задание символа (как здесь : PlotIndexSetInteger(11, PLOT_ARROW,169);
/Так работает
А так уже нет
Прикреплен тест пример