Индикатор Разные вопросы - страница 11

 
Вы можете посмотреть мой пример кода в этом комментарии #99
 

Хорошо, этот код.

ObjectCreate() также требует ID графика:

bool  ObjectCreate(
   long         chart_id,      // chart identifier
   string       name,          // object name
   ENUM_OBJECT  type,          // object type
   sub_window   nwin,          // window index
   datetime     time1,         // time of the first anchor point
   double       price1,        // price of the first anchor point
   ...
   datetime     timeN=0,       // time of the N-th anchor point
   double       priceN=0,      // price of the N-th anchor point
   ...
   datetime     time30=0,      // time of the 30th anchor point
   double       price30=0      // price of the 30th anchor point
   );

в качестве первого параметра.

int OnInit()
  {
   Print("Outside");

   ObjectCreate("Object Outside",OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,"Object Outside",OBJPROP_XDISTANCE,20);
   ObjectSetInteger(0,"Object Outside",OBJPROP_YDISTANCE,20);
   ObjectSetString(0,"Object Outside",OBJPROP_TEXT,"Outside");

   if(DayOfWeek()==5)
     {
      Print("Inside");

      ObjectCreate("Object Inside",OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,"Object Inside",OBJPROP_XDISTANCE,20);
      ObjectSetInteger(0,"Object Inside",OBJPROP_YDISTANCE,40);
      ObjectSetString(0,"Object Inside",OBJPROP_TEXT,"Inside");
     }
  }

Но вы начинаете с имени объекта.

Также вы можете указать базовый угол/точку привязки.

Пожалуйста, посмотрите: https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_label

//+------------------------------------------------------------------+
//| Create a text label                                              |
//+------------------------------------------------------------------+
bool LabelCreate(const long              chart_ID=0,               // chart's ID
                 const string            name="Label",             // label name
                 const int               sub_window=0,             // subwindow index
                 const int               x=0,                      // X coordinate
                 const int               y=0,                      // Y coordinate
                 const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                 const string            text="Label",             // text
                 const string            font="Arial",             // font
                 const int               font_size=10,             // font size
                 const color             clr=clrRed,               // color
                 const double            angle=0.0,                // text slope
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type
                 const bool              back=false,               // in the background
                 const bool              selection=false,          // highlight to move
                 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 text label
   if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create text label! Error code = ",GetLastError());
      return(false);
     }
//--- set label coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set the chart's corner, relative to which point coordinates are defined
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the text
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- set text font
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- set font size
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- set the slope angle of the text
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- set anchor type
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the label by mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_LABEL
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_LABEL
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Types / OBJ_LABEL - Reference on algorithmic/automated trading language for MetaTrader 5
 

Я просто беспокоюсь, что не смог объяснить свою проблему, поэтому хочу спросить, пробовали ли вы это, пожалуйста? Тогда вы сможете понять, в чем моя проблема с этим кодом.

Я просто попробовал вот так - 1. Я добавил свой файл примера на график, затем закрыл MT4. 2. Открываю MT4 - и не вижу своего объекта Inside Label.

Вот что я пытаюсь найти решение моей проблемы : /.


Может быть, я буду уверен в понедельник.

( когда я думаю, что это так просто, я трачу много времени на эти простые вещи - когда я думаю, что это так сложно, что я сделал их так легко... - Почти все, что я хочу сделать. сначала я пытаюсь прочитать документацию.... )

 

Я попробовал, и отображаются два объекта.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
      Print("Outside");

   ObjectCreate(0,"Object Outside",OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,"Object Outside",OBJPROP_XDISTANCE,20);
   ObjectSetInteger(0,"Object Outside",OBJPROP_YDISTANCE,20);
   ObjectSetString(0,"Object Outside",OBJPROP_TEXT,"Outside");

   if(DayOfWeek()==5)
     {
      Print("Inside");

      ObjectCreate(0,"Object Inside",OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,"Object Inside",OBJPROP_XDISTANCE,20);
      ObjectSetInteger(0,"Object Inside",OBJPROP_YDISTANCE,40);
      ObjectSetString(0,"Object Inside",OBJPROP_TEXT,"Inside");
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+


 

Круто!

Посмотрите мой скриншот, пожалуйста.

есть проблема

Большое спасибо за ваше время, господин Марко.

 

Я никогда не возражал, что часть кода даст мне другой результат в индикаторе : /.
Я попробую эту часть кода в моем файле индикатора.

( Я решил, что буду писать код в файлах индикаторов, но не в файле торговой панели. )


2-й раз редактировалось

Я уже использовал ваш метод - сейчас он работает без проблем, надеюсь, что и дальше будет работать.

Большое спасибо, господин Марко.


#Не понедельник - закрыто
 

#Обновить - Открыть

Как только я решил эту проблему - мой индикатор хорошо работает в моей основной платформе MT4 - но я использую вторую платформу MT4, в которой мой индикатор требует обновления, когда я запускаю платформу MT4.
Я понятия не имею, откуда взялась эта проблема... поэтому я спрашиваю что-то именно об этом.

Вопрос: Может ли кто-нибудь сообщить мне что-нибудь об этой странной ситуации, пожалуйста?

Заранее спасибо.

 

Вы имеете в виду, что наблюдаете разное поведение двух платформ?

Они одинаковой сборки?

 
Marco vd Heijden:

Вы имеете в виду, что наблюдаете разное поведение между двумя платформами?

Это одна и та же сборка?

Да, абсолютно разное поведение...

Также да, обе сборки 1065.

 

Может быть, я нашел, откуда берутся эти странные проблемы...

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

Как? Да очень просто!

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

---

Я поместил этот простой код в свой файл примера индикатора.

int OnInit()
{
  Print( "This Year", Year() );
  return(INIT_SUCCEEDED);
}

Когда я пытаюсь загрузить этот файл примера на свой график. Он не работает правильно, пока я не изменю TimeFrame.
(возможно, я уже устал сегодня).
(также я знаю, что могу решить эту проблему, если помещу этот код в OnCalculate(...) - но мне просто нужно поместить этот код в OnInit()).

Пожалуйста, мне просто нужно более четкое объяснение этого вопроса. Мне это действительно нужно, потому что несколько моих индикаторов имеют такие же не относящиеся к делу проблемы. ( что если я помещу это в файлы моего эксперта, то он будет работать правильно).

Заранее спасибо.
Хороших выходных.