Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 798

 
Roman Sharanov:

ничего, пустые

Тут спросите.

 
Artyom Trishkin:

Тут спросите.

Если это поможет, должен стрелки рисовать, на евро, на евроиене, австралийце рисует, на других нет

Файлы:
Hydra.mq4  9 kb
 
Roman Sharanov:

Если это поможет, должен стрелки рисовать, на евро, на евроиене, австралийце рисует, на других нет

Просто предположение.

В настройках есть такая величина:

input int so_slowma = 233;//Медленная МА

и далее в OnInit():

   //---- установка номера бара, начиная с которого будет отрисовываться индикатор 
   SetIndexDrawBegin(0,so_slowma);
   SetIndexDrawBegin(1,so_slowma);

Вижу, что для расчёта используются данные дневных баров:

if(so > so_minsize && fto > fto_minsize && fo[1] < 0 && fo[0] > 0 && (iHigh(_Symbol,PERIOD_D1,0)-iLow(_Symbol,PERIOD_D1,0))/daily_atr <= 0.6) buf_1[i+1] = Low[i+1] - 10 * Point;  
if(so < -so_minsize && fto < -fto_minsize && fo[1] > 0 && fo[0] < 0 && (iHigh(_Symbol,PERIOD_D1,0)-iLow(_Symbol,PERIOD_D1,0))/daily_atr <= 0.6) buf_2[i+1] = High[i+1] + 10 * Point; 

Вы уверены, что на символах, где нет отрисовки, баров достаточно? Поставьте значение в переменной so_slowma поменьше - 100 хотя бы. Если будет отрисовка, значит у вас не хватает исторических данных.

Это лишь моё предположение, которое сразу пришло на ум при первом взгляде на код. И может быть ошибочным. Но проверить нужно в первую очередь.

 

Как заставить прямоугольник https://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_rectangle рисоваться поверх другого прямоугольника без смешивания их цветов?

Вот, например, более поздняя горизонтальная линия рисуется поверх более ранней горизонтальной линии без смешивания их цветов, но я не вижу, чем вызвано отличие от прямоугольников.

Спасибо.

OBJ_RECTANGLE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL4
OBJ_RECTANGLE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Следующий скрипт создает и перемещает на графике прямоугольник. Для создания и изменения свойств графического объекта написаны специальные функции, которые вы можете использовать "как есть" в своих собственных программах. //| Cоздает прямоугольник по заданным координатам                    |               time1=0,           ...
 
Artyom Trishkin:

Просто предположение.

В настройках есть такая величина:

и далее в OnInit():

Вижу, что для расчёта используются данные дневных баров:

Вы уверены, что на символах, где нет отрисовки, баров достаточно? Поставьте значение в переменной so_slowma поменьше - 100 хотя бы. Если будет отрисовка, значит у вас не хватает исторических данных.

Это лишь моё предположение, которое сразу пришло на ум при первом взгляде на код. И может быть ошибочным. Но проверить нужно в первую очередь.

То есть из за того что я там где-то в коде один раз беру данные с дневки индикатор не будет рисовать первые 233 дня?
 
Roman Sharanov:
То есть из за того что я там где-то в коде один раз беру данные с дневки индикатор не будет рисовать первые 233 дня?

Нет, не так. Это значение указывает с номера какого бара индикатор начнёт отрисовку на графике. Но это количество баров используется и для расчёта скользящей средней. И, если баров на графике меньше, то МА рассчитана не будет. Для избежания такой ситуации в коде в строке 73 прописан возврат из OnCalculate() в случае недостатка баров для просчёта:

if (Bars <= so_slowma) return (0);

Ну и насчёт дневных данных - их тоже может не оказаться, но это уже скорее как "продолжение истории"...

 
Artyom Trishkin:

Нет, не так. Это значение указывает с номера какого бара индикатор начнёт отрисовку на графике. Но это количество баров используется и для расчёта скользящей средней. И, если баров на графике меньше, то МА рассчитана не будет. Для избежания такой ситуации в коде в строке 73 прописан возврат из OnCalculate() в случае недостатка баров для просчёта:

Ну и насчёт дневных данных - их тоже может не оказаться, но это уже скорее как "продолжение истории"...

Ну вот фунт например, и на дневке, и на м15 больше 1000 баров, но не рисует...

 
Roman Sharanov:

Ну вот фунт например, и на дневке, и на м15 больше 1000 баров, но не рисует...

У вас же есть исходник. Распечатайте в журнал значения всех переменных, да гляньте что они получают.

 
Artyom Trishkin:

У вас же есть исходник. Распечатайте в журнал значения всех переменных, да гляньте что они получают.

А это откуда вылезает?


 
Roman Sharanov:

А это откуда вылезает?


Мусор в буферах. Сначала нужно вписать пустое значение во все рисуемые буфера (если они стрелочные), и лишь затем уже выполнять расчёт индикатора. Я код не вижу с мобильного, точнее сказать не могу.