assessor especializado - perguntas diversas - página 6

 

Estou tentando fazer muito reset , mas preciso obter um resultadomuitomelhor do que este, mas não consigo.
( Eu não gosto de todas as minhas ea's e indicadores Button objetos porque todos eles muito feios como este. )

Preciso de duas coisas de vocês que podem ajudar e me dão bons conselhos, por favor, preciso muito de sua ajuda.
Eu gastei muito tempo e não consigo descobrir o que é um problema com meu código.

Obrigado de antemão.

//--- segunda vez editado - enquanto escrevo este comentário talvez estivesse dormindo...

ObjectCreate     ( 0, "button lot reset", OBJ_BUTTON           , 0, 0, 0           );
ObjectSetString  ( 0, "button lot reset", OBJPROP_TEXT         , "x"               );
ObjectSetString  ( 0, "button lot reset", OBJPROP_FONT         , "Verdana"         );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_FONTSIZE     , 14                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YDISTANCE    , 16                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_XSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_YSIZE        , 18                );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_CORNER       , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_COLOR        , White             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BGCOLOR      , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BORDER_COLOR , Black             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_STATE        , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_BACK         , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTABLE   , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_SELECTED     , false             );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_HIDDEN       , true              );
ObjectSetInteger ( 0, "button lot reset", OBJPROP_ZORDER       , true              );
 
  1. Se estiver escondido, como você pode ver e clicar nele?
  2. ZORDER não é booleano, é um int 0...
 
//+------------------------------------------------------------------+
//| Create the button                                                |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // chart's ID
                  const string            name="Button",            // button name
                  const int               sub_window=0,             // subwindow index
                  const int               x=0,                      // X coordinate
                  const int               y=0,                      // Y coordinate
                  const int               width=50,                 // button width
                  const int               height=18,                // button height
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                  const string            text="Button",            // text
                  const string            font="Arial",             // font
                  const int               font_size=10,             // font size
                  const color             clr=clrBlack,             // text color
                  const color             back_clr=C'236,233,216',  // background color
                  const color             border_clr=clrNONE,       // border color
                  const bool              state=false,              // pressed/released
                  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 the button
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create the button! Error code = ",GetLastError());
      return(false);
     }
//--- set button coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set button size
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- 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 text color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set background color
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- set border color
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- enable (true) or disable (false) the mode of moving the button 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);
  }
//+------------------------------------------------------------------+

Por favor, você pode simplesmente usar a função da documentação "como está" para criar os botões basta adicioná-la na parte inferior de seu código e você pode chamar a função e passar os parâmetros.

Assim, você pode simplesmente chamar:

ButtonCreate(...

Também

whroeder1:
  1. Se estiver escondido, como você pode ver e clicar nele?
  2. ZORDER não é booleano, é um int 0...
Escondido está apenas escondido na lista de objetos.
 
whroeder1:
  1. Se estiver escondido, como você pode ver e clicar nele?
  2. ZORDER não é booleano, é um int 0...

Obrigado eu consertei, só que foi um erro.
--------------------------------------------

Marco vd Heijden:

Por favor, você pode simplesmente usar a função da documentação "como está" para criar os botões basta adicioná-la na parte inferior de seu código e você pode chamar a função e passar os parâmetros.

Então você pode simplesmente ligar:

ButtonCreate(...)

Obrigado Marco que me ajudará muito, e os códigos da EA parecem estar limpos.
Também preciso perguntar sobre o código abaixo, o que é isso, como funciona? ( até eu li sobre isso, mas não entendo mais claramente )

Por favor, explique um pouco mais, obrigado de antemão.

ObjectSetString ( 0, name, OBJPROP_TOOLTIP , tip );

----------------------------------------

Também preciso usar o vazio em vez de bool como abaixo do código para quequal seja o bom?

bool ButtonCreate(...)

// or

void ButtonCreate(...)
 

A função ou retorna verdadeiro ou falso, dependendo se a criação do botão foi bem sucedida ou não, então depende de você se você quiser verificar se o botão foi realmente criado.

Para a segunda pergunta, a dica de ferramenta é o que se torna visível quando você passa o mouse sobre o objeto no gráfico.

A maneira como você está trabalhando agora tem limitações.

Se você quiser expandir, leia os seguintes artigos:

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

 
Marco vd Heijden:

A função ou retorna verdadeiro ou falso, dependendo se a criação do botão foi bem sucedida ou não, então depende de você se você quiser verificar se o botão foi realmente criado.

Para a segunda pergunta, a dica de ferramenta é o que se torna visível quando você passa o mouse sobre o objeto no gráfico.

A maneira como você está trabalhando agora tem limitações.

Se você quiser expandir, leia os seguintes artigos:

https://www.mql5.com/en/search#!keyword=graphical%20interfaces&module=mql5_module_articles

Muito obrigado.
WOW, homem, você vai ser meu homem, Sr. Marco.

( desde seu primeiro comentário - você me ajudou muito - você sempre tenta entender minhas preocupações - mais uma vez, muito obrigado )

 
Bem, eu apenas aponto estes artigos e devemos agradecer muito aos autores que os escreveram e também os traduziram.
 

Preciso usar o formato de arquivo .PNG no código do meu EA, para o ícone LotSize.
Mas eu encontrei apenas o formato de arquivo .BMP, então alguém pode me ajudar / me aconselhar?

Se qualquer comentário puder ser rapidamente apreciado, só que estou um pouco mais apressado.
Obrigado com antecedência.

 

Eu tento fazer com que o lote seja melhor do que o lote valorize 'State true' ou 'State false'.
( quando clico em 'Resetar' objeto, então me torno 'State false' e depois de aumentar o tamanho do lote, não me torno verdadeiro )

O código abaixo está errado?

//|     Lot Reset
if ( sparam == _namelotRset )
{
    if ( _lotSize > _lotValue )
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, true );
    }   //---if Close
    else
    {
        ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
    }   //---if Close
    _lotSize = _lotValue * _lotMin;

    _infoUpdate();
    return;
}   //---if Close

Obrigado!

//--- segunda vez editado

Eu tento fazer"ON OFF" com o código abaixo.

ObjectSetString( chart_ID, name, OBJPROP_BMPFILE, on_off, file )
 

Por favor, veja:

https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_bitmap

Para a questão do bitmap.

E para a outra questão você pode juntá-la em partes separadas para definir o estado fora da sparam.

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