- Помощь Copilot - Разработка программ
- Индикаторы - Чарты - MetaTrader 5 для Android
- MQL5 Wizard: разработка торговых роботов для MetaTrader 5
На момент запуска индикатора я не знаю сколько мне нужно будет буферов для рисования. Их количество будет зависеть от введённых настроек. Каким то образом данный вопрос решается динамически ? или нужно описывать все возможные 8 буферов и использовать только то количество которое нужно.
В неиспользуемые на данный момент буферы вписывайте EMPTY_VALUE, ну или какое там у вас задано "пустое" значение в индикаторе ... Но быть они должны все.
Так то понятно. Думал можно по красивому сделать. Хорошо. Значит оставлю как есть. Спасибо за ответ.
На момент запуска индикатора я не знаю сколько мне нужно будет буферов для рисования. Их количество будет зависеть от введённых настроек. Каким то образом данный вопрос решается динамически ? или нужно описывать все возможные 8 буферов и использовать только то количество которое нужно.
Если индикаторный буфер не будет использоваться, то его можно и не объявлять. Теперь в МТ4 нет ограничения на 8 индикаторных буферов, можно и больше задействовать. Даже рисовать можно больше восьми.
for(i=0;i<9;i++) if(Show[i]) { switch(i) { case 0: {SetIndexBuffer(0,Buffer0); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,Width,c0);} break; case 1: {SetIndexBuffer(1,Buffer1); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,Width,c1);} break; case 2: {SetIndexBuffer(2,Buffer2); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,Width,c2);} break; case 3: {SetIndexBuffer(3,Buffer3); SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,Width,c3);} break; case 4: {SetIndexBuffer(4,Buffer4); SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,Width,c4);} break; case 5: {SetIndexBuffer(5,Buffer5); SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,Width,c5);} break; case 6: {SetIndexBuffer(6,Buffer6); SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,Width,c6);} break; case 7: {SetIndexBuffer(7,Buffer7); SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,Width,c7);} break; case 8: {SetIndexBuffer(8,Buffer8); SetIndexStyle(8,DRAW_LINE,STYLE_SOLID,Width,c8);} } SetIndexLabel(i,Label[i]); } else SetIndexLabel(i,"");
Если индикаторный буфер не будет использоваться, то его можно и не объявлять. Теперь в МТ4 нет ограничения на 8 индикаторных буферов, можно и больше задействовать. Даже рисовать можно больше восьми.
Больше 8 можно использовать для расчётов. Там их аж до 512. А для рисования каким образом больше 8 ? Если взять хелп, то мы видим следующее: (для примера взял SetIndexLabel): Порядковый номер линии. Должен быть от 0 до 7.
А по поводу объявить буферы, но не присваивать им стили рисования и остальные атрибуты...попробую, по логике идея здравая.
А для рисования каким образом больше 8 ? Если взять хелп, то мы видим следующее: (для примера взял SetIndexLabel): Порядковый номер линии. Должен быть от 0 до 7.
Справка не актуальна местами или устарела. Мой индикатор может рисовать 9 линий.
Круто! проверил и вот результат:
13 буферов.
Разработчикам жирный минус в карму и плохое настроение пока не исправят справку !
Но динамически добавлять буферы, хотя бы только во время инициализации не получается. Если я к примеру в заголовке напишу #property indicator_buffers 10, то не важно что я делаю дальше, в окне данных всё равно будет 10 буферов.
Но динамически добавлять буферы, хотя бы только во время инициализации не получается. Если я к примеру в заголовке напишу #property indicator_buffers 10, то не важно что я делаю дальше, в окне данных всё равно будет 10 буферов.
Да, максимальное количество буферов для рисования линий указывается в заголовке. Превысить его уже нельзя. Меньше можно. Чтобы убрать из окна данных лишнее просто указываем пустое значение в функции SetIndexLabel(i,NULL);
Разработчикам жирный минус в карму и плохое настроение пока не исправят справку !
Прежде чем нести чепуху будьте внимательней - для справки IndicatorBuffers
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования