Indicador Perguntas Diversas - página 11

 
Você pode ver meu código de exemplo neste comentário #99
 

Oh ok, esse código.

ObjectCreate() também precisa do ID do gráfico:

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
   );

como o primeiro parâmetro.

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");
     }
  }

Mas você começa com o nome do objeto.

Você também pode especificar um canto base/ponto de ancoragem.

Por favor, veja: 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
 

Só estou preocupado por não conseguir explicar meu problema que quero perguntar, você tentou, por favor? Então você pode saber qual é o meu problema com esse código.

Eu apenas tento assim - 1. Eu adicionei meu arquivo de exemplo ao gráfico e depois fechei o MT4. 2. Abrir o MT4 - então eu não vejo meu objeto de etiqueta interna.

É isso que eu tento encontrar para resolver meu problema : /


Talvez eu esteja na segunda-feira com certeza.

( quando penso que isto é tão fácil, passo muito tempo para essas coisas fáceis - quando penso que isto é tão difícil que as fiz tão facilmente... - Quase tudo o que quero fazer. primeiro tento ler a documentação... )

 

Eu experimentei e há dois objetos mostrados.

//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+


 

Legal!

Veja minha captura de tela, por favor.

há um problema

Muito obrigado pelo seu tempo, Sr. Marco

 

Não me importo que parte do código me dê um resultado diferente no Indicador : /
Eu tento essa parte do código em meu arquivo de Indicador.

( Decidi que vou escrever algum código em arquivos indicadores, mas não no meu arquivo do Painel de Comércio. )


2ª vez editado

Já uso seu método - agora ele funciona sem problemas, espero que funcione.

Muito obrigado, Sr. Marco


#Não segunda-feira - Fechado
 

#Refresh - Aberto

Uma vez resolvido este problema - meu indicador funciona bem em minha plataforma MT4 principal - mas eu uso a 2ª plataforma MT4 que é meu indicador precisa ser atualizada quando eu inicio a plataforma MT4.
Não tenho idéia de onde vem esse problema... que eu pergunto algo exatamente sobre isso.

P: Alguém pode me deixar algo a respeito desta situação estranha, por favor?

Agradecemos antecipadamente.

 

Você quer dizer que testemunha um comportamento diferente entre duas plataformas?

Elas são da mesma construção?

 
Marco vd Heijden:

Você quer dizer que testemunha um comportamento diferente entre duas plataformas?

Eles são da mesma construção?

Sim, comportamento absolutamente diferente...

Também sim ambas as plataformas 1065 Build

 

Talvez tenha encontrado onde vêm esses assuntos estranhos...

Que segredo do modelo de carga?
Há coisas místicas, que estão me destruindo de todo... que realmente estão me deixando furioso de todo... - Já fiz coisas enormes para as minhas EA's e Indicator's que nunca passei muito tempo como se estivesse passando poucos assuntos menores...

Como? Simples!

Depois que decidi que não deveria colocar alguns scripts nos arquivos da EA - então enfrento continuamente questões menores que não consigo encontrar solução em SEO. ( na verdade, às vezes eu encontro facilmente uma solução para os meus enormes problemas com SEO da EA - mas estes problemas menores. )

---

Coloquei este código simples em meu arquivo indicador de exemplo.

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

Quando tento carregar este arquivo de exemplo no meu gráfico. Ele não funciona corretamente até que eu mude o TimeFrame.
( é possível que eu já esteja cansado hoje )
( também sei que posso resolver esse problema se colocar esse código no OnCalculate(...) - mas só preciso colocar esse código no OnInit() )

Por favor, preciso apenas de uma explicação mais clara para esta questão. Eu realmente preciso dela, porque poucos dos meus indicadores têm os mesmos problemas irrelevantes. ( que se eu colocar isto nos arquivos do meu EA, ele funcionará corretamente )

Obrigado de antemão.
Tenha um bom fim de semana.