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

 
Seric29:

В общем раз Артём не отвечает ничего, а человек выше дал ответ что функции работают со структурами которые должны быть известны и следовательно должны быть объявлены глобально - делаем вывод что структура должна быть объявлена глобально.

По своей природе функция работающая со структурой может принимать только одинаковые статические структуры. Значит локально объявить структуру чтобы она имела ограниченную область видимости объявить и передать в функцию не получится.

Не надо на меня ссылаться когда плохо понимаете о чём я говорил. Внимательно прочтите что сказал Артём.

По запарке он допустил некоторую неточность в коде. Это не означает что он говорил не правильно. Структура - есть пользовательский тип данных и определяется в области глобальной видимости. Переменная пользовательского типа может быть объявлена где угодно. И таких переменных может быть объявлено сколько угодно.
 
Artyom Trishkin:
Статистика от этого не изменится.

Кстати мне не просто не показывает в час ночи или в 23 часа будет срок. мне вот чего показывает.


Техническое задание

Прогресс

Согласование ТЗ
Демонстрация
Передача работы и оплата


Все эти галочки прожаты. сказано что через неделю автоматом оплата уедет. Вот только был получен только файл демонстрации и в нём сидит ограничитель даты позволяющий работать только в прошлом году. Я так догадываюсь он абыделся и теперь будет неделю тянуть чтобы файл за оплату поменялся автоматом?


Было уже


Заказчик Zlaya_budka подтвердил шаг "Демонстрация"
2020.01.29 21:47

Передача работы и оплата

Заказчик принял Демонстрацию, теперь Разработчик должен передать финальный результат.

После принятия работы оплата со счета Заказчика поступит автоматически (за вычетом комиссии). Если в течение недели Заказчик не даст ответа на представленную работу, то Заказ автоматически будет считаться выполненным.

2020.01.29 21:47

Разработчик=========подтвердил шаг "Передача работы и оплата"


Это как понимать? уже было прелестное от пайпала где списание и слово остаток поменяны местами, уже 3 недели ждал сервисдеск с оплатой. теперь эта радость что значит?

Zlaya_budka
Zlaya_budka
  • www.mql5.com
Профиль трейдера
 
Alexey Viktorov:

Не надо на меня ссылаться когда плохо понимаете о чём я говорил. Внимательно прочтите что сказал Артём.

По запарке он допустил некоторую неточность в коде. Это не означает что он говорил не правильно. Структура - есть пользовательский тип данных и определяется в области глобальной видимости. Переменная пользовательского типа может быть объявлена где угодно. И таких переменных может быть объявлено сколько угодно.

Ну я говорю именно про мой случай и именно про структуру и именно про такую, это понятно что это тоже пользовательский тип переменной но в частности меня интересует локальный уровень. Может это через клас можно сделать. В принципе через класс по любому можно объявить закрытый тип и всё, но я в этом мало понимаю.

 
Коллеги - просьба сообщить ф-ия Инит запускается на каждом проходе тестера?
 
Seric29:

Ну я говорю именно про мой случай и именно про структуру и именно про такую, это понятно что это тоже пользовательский тип переменной но в частности меня интересует локальный уровень. Может это через клас можно сделать. В принципе через класс по любому можно объявить закрытый тип и всё, но я в этом мало понимаю.

Структуру свою определяете на глобальном уровне - о ней вся программа должна знать - это новый, созданный вами тип переменных.

А различные переменные с типом этой структуры можете задавать на любом из локальных уровней - только в них (локальных уровнях) будут видны переменные, созданные в их области видимости.

 

Всем привет!

Помогите пристроить

extern   ENUM_BASE_CORNER  InpCorner      =  CORNER_LEFT_UPPER;   // Угол привязки индикатора

 к этому объекту

//--- Clicking on the fifth rectangle
   if(id==CHARTEVENT_OBJECT_CLICK) 
     {
      string clickedChartObject=sparam;
      if(clickedChartObject==obj_name[5]) 
        {
         string name="name_"+IntegerToString(MathRand()+100,0,' ');

         y=100;x=5;
         ChartXYToTimePrice(0,x,y,window,dt_1,price_1);
         ChartXYToTimePrice(0,x+250,y,window,dt_2,price_2);
         ChartXYToTimePrice(0,x,y+20,window,dt_3,price_3);

         ChannelCreate(0,name,0,dt_1,price_1,dt_2,price_2,dt_3,price_3,1,clrRed,STYLE_SOLID,1,InpBackRect,true,false,false,InpHidden_OBJ,0);
        }
     }

bool

//+------------------------------------------------------------------+
//| Create an equidistant channel by the given coordinates           |
//+------------------------------------------------------------------+
bool ChannelCreate(const long             chart_ID=0,                   // chart's ID
                   const string           name="Channel",               // channel name
                   const int              sub_window=0,                 // subwindow index  
                   datetime               time1=0,                      // first point time
                   double                 price1=0,                     // first point price
                   datetime               time2=0,                      // second point time
                   double                 price2=0,                     // second point price
                   datetime               time3=0,                      // third point time
                   double                 price3=0,                     // third point price
                   const ENUM_BASE_CORNER corner = CORNER_RIGHT_UPPER,  // the angle of the graph for the binding
                   const color            clr=clrRed,                   // channel color
                   const ENUM_LINE_STYLE  style=STYLE_SOLID,            // style of channel lines
                   const int              width=1,                      // width of channel lines
                   const bool             back=false,                   // in the background
                   const bool             selection=true,               // highlight to move
                   const bool             ray_left = false,             // extend the line to the left
                   const bool             ray_right=false,              // channel's continuation to the right
                   const bool             hidden=true,                  // hidden in the object list
                   const long             z_order=0)                    // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create a channel by the given coordinates
   if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_window,time1,price1,time2,price2,time3,price3))
     {
      Print(__FUNCTION__,
            ": failed to create an equidistant channel! Error code = ",GetLastError());
      return(false);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete the channel                                               |
//+------------------------------------------------------------------+
bool ChannelDelete(const long   chart_ID=0,     // chart's ID
                   const string name="Channel") // channel name
  {
//--- reset the error value
   ResetLastError();
//--- delete the channel
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete the channel! Error code = ",GetLastError());
      return(false);
     }
//---
   return(true);
  }
//---
 

Я так понял, что ChartXYToTimePrice расчитывает координаты и по умолчанию с левого верхнего углу.

Как бы ChartXYToTimePrice переубедить считать с указанного мной угла?

 
MakarFX:

Я так понял, что ChartXYToTimePrice расчитывает координаты и по умолчанию с левого верхнего углу.

Как бы ChartXYToTimePrice переубедить считать с указанного мной угла?

Переубедить можно только того у кого есть то, чем принимаются решения. А если "это" только исполняет чужие установки, то всяческий диалог в попытке убедить в чём-то просто пустая трата времени.)))

Я не совсем понял задачу, но обратите внимание не только на угол привязки ENUM_BASE_CORNER, но и на точку привязки ENUM_ANCHOR_POINT

 

Alexey Viktorov:

Я не совсем понял задачу

индикатор по вызову создает в левом верхнем углу объект(OBJ_CHANNEL)

как задать условие создания объекта в другом углу.

 
MakarFX:

индикатор по вызову создает в левом верхнем углу объект(OBJ_CHANNEL)

как задать условие создания объекта в другом углу.

Внимательно читайте справочник. OBJ_CHANNEL никакого отношения к углу не имеет.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR. – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты...