- Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ
- Объекты - Чарт - MetaTrader 5 для iPhone
- Шаблоны и профили - Дополнительные возможности - Графики котировок, технический и фундаментальный анализ
каждый графический объект имеет свойства -- свойства можно как задавать, так и считывать.
Логика вашей задачи такая:
-- перебираете на графике все объекты
-- ищите нужный заданного типа (прямоугольник) и цвета
-- дальше получаете тот параметр что вам нужен
Все команды по работе с объектами -- к каждой команде есть пример -- в справке (например, для МТ4, для МТ5 аналогично)
Пример перебора объектов https://docs.mql4.com/ru/objects/objectstotal
Пример считывания свойства https://docs.mql4.com/ru/objects/objectget .
for(int i=ObjectsTotal()-1;i>=0;i--) { if(ObjectType==прямугол && ObjectGetInteger(0,name,OBJPROP_COLOR)==clrYellow) ... }
Спасибо за информацию. Но все это я уже пробовал. Фунция реагирует на измененте цвета или только первого объекта или только последнего. Необходимо как то обнулить интерации что бы с каждым новым тиком поиск начинался заного. Одним простым оперетором здесь не обойтись. Будем думать дальше как создать отдельную функцию по нахождению нужного объекта из множества.
Да показывать то в общем и нечего. Я же говорю, что я новичок.
//+------------------------------------------------------------------+ //| SD.mq4 | //| Copyright 2015, | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, " #property link "https://www.mql5.com" #property version "1.00" #property strict //--- input parameters input color zone=clrSilver; //Trading Zone //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- string obj_name; color obj_color; int obj_total=ObjectsTotal(); int i; for (i=ObjectsTotal()-1;i>=0;i--)// last rectangle { obj_name=ObjectName(i); obj_color=ObjectGet(obj_name,OBJPROP_COLOR); if (ObjectGetInteger(0,obj_name,OBJPROP_COLOR)==zone) Comment(i,"zone found",obj_name); else Comment ("No zones"); } Sleep(3000); //--- } //+------------------------------------------------------------------+
- www.mql5.com
boolz=false; for (i=ObjectsTotal()-1;i>=0;i--)// last rectangle { obj_name=ObjectName(i); obj_color=ObjectGet(obj_name,OBJPROP_COLOR); if (ObjectGetInteger(0,obj_name,OBJPROP_COLOR)==zone){ z=true; break; } } } if(z)Comment(i,"zone found",obj_name); else Comment ("No zones");Попробуйте так.
Попробуйте так.
Спасибо, попробовал. К сожалению данная функция вообще никак не реагирует на изменение цвета прямоугольника. Все время выдает z=false. Подскажите кто знает как обнулить "i" для оператора "for" , чтобы с каждым новым тиком i=0 и процесс поиска начинался бы с начала.
Не знаю, что я тут нахимичил, но вроде работает. решил использовать оператор While вместо for. Первый шаг сделан. Спасибо всем за помощь.
void OnTick() { //--- string obj_name; color obj_color=clrNONE; int obj_total=ObjectsTotal(OBJ_RECTANGLE); bool z=false; int i=0; while(i<=obj_total)// last rectangle { obj_name=ObjectName(i); obj_color=ObjectGet(obj_name,OBJPROP_COLOR); i=i+1; if(ObjectType(obj_name)==OBJ_RECTANGLE && obj_color==zone_color) { z=true; if(z) break; else i=i+1; } } if(z) Comment(i,"zone found",obj_color); else Comment(i,"No zones"); }
Правда не знаю как исправить это предупреждение об ошибке. Вроде типы всех перенных совпадают.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования