Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 671

 
Artyom Trishkin:

Nada complicado.

Obrigado, estarei no meu computador hoje à noite e vou buscá-lo para mim mesmo... nada complicado, mas estou faminto pelo tempo ))))

 
Olá! Por favor, me dê um exemplo de código para criar um botão em um gráfico e fazer com que ele realize pelo menos uma operação. Pelo menos no comentário saia qualquer sinal. Obrigado.
 
inter78:
Olá! Por favor, me dê um exemplo de código para criar um botão em um gráfico e fazer com que ele realize pelo menos uma operação. Pelo menos no comentário saia qualquer sinal. Obrigado.

Aqui está um código como este:

#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
kn();
return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete("close");
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
if(ObjectGetInteger(0,"close",OBJPROP_STATE)==true)
 {
  ObjectSetString(0,"close",OBJPROP_TEXT,"Открыть ВСЕ"); 
  Comment("Открыть всё!");
 }
else
 {
  ObjectSetString(0,"close",OBJPROP_TEXT,"Закрыть ВСЕ"); 
  Comment("Закрыть всё!");
 }
return;
}

//==============================================================
void kn()
{
 if (ObjectFind("close")==-1)
  {
   ObjectCreate(0,"close",OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,"close",OBJPROP_XDISTANCE,30); 
   ObjectSetInteger(0,"close",OBJPROP_YDISTANCE,30); 
   //--- установим размер кнопки 
   ObjectSetInteger(0,"close",OBJPROP_XSIZE,100); 
   ObjectSetInteger(0,"close",OBJPROP_YSIZE,30); 
   //--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,"close",OBJPROP_CORNER,CORNER_LEFT_UPPER); 
   //--- установим текст 
   ObjectSetString(0,"close",OBJPROP_TEXT,"Закрыть ВСЕ"); 
   //--- установим цвет фона 
   ObjectSetInteger(0,"close",OBJPROP_BGCOLOR,clrRed); 
   //--- установим цвет текста 
   ObjectSetInteger(0,"close",OBJPROP_COLOR,clrWhite);
  }
}
 
Valerius:

Isto é sobre o tamanho do código:

Os comentários não saem.
 
inter78:
Os comentários não saem.

Após iniciar o programa, pressione o botão e a inscrição correspondente aparece no canto superior esquerdo. Pressione o botão novamente e a mensagem mudará. Não se esqueça de pressionar o botão de auto-comércio ou permitir a negociação nos ajustes da EA. Deve haver uma cara sorridente no canto superior direito. Tudo funciona no testador.

 
Valerius:

Após iniciar o programa, pressione o botão e a inscrição correspondente aparece no canto superior esquerdo. Pressione o botão novamente e a mensagem mudará. Não se esqueça de pressionar o botão de auto-comércio ou permitir a negociação nos ajustes da EA. Deve haver uma cara sorridente no canto superior direito. Tudo funciona no testador.

Como funcionará o indicador ?
 
inter78:
Como funcionará o indicador?

É feito para um EA, não para um indicador.

 
É uma pena. Eu preciso de um indicador.
 
inter78:
É uma pena. Eu preciso de um indicador.

Não há muita diferença, não é mesmo?

//==============================================================
void kn()
{
 if (ObjectFind("close")==-1)
  {
   ObjectCreate(0,"close",OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,"close",OBJPROP_XDISTANCE,30); 
   ObjectSetInteger(0,"close",OBJPROP_YDISTANCE,30); 
   //--- установим размер кнопки 
   ObjectSetInteger(0,"close",OBJPROP_XSIZE,100); 
   ObjectSetInteger(0,"close",OBJPROP_YSIZE,30); 
   //--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,"close",OBJPROP_CORNER,CORNER_LEFT_UPPER); 
   //--- установим текст 
   ObjectSetString(0,"close",OBJPROP_TEXT,"Закрыть ВСЕ"); 
   //--- установим цвет фона 
   ObjectSetInteger(0,"close",OBJPROP_BGCOLOR,clrRed); 
   //--- установим цвет текста 
   ObjectSetInteger(0,"close",OBJPROP_COLOR,clrWhite);
  }
}

Este é o código para a criação de um botão.

O botão é criado na função de inicialização

int OnInit()
{
kn();
return(INIT_SUCCEEDED);
}

E isto é

if(ObjectGetInteger(0,"close",OBJPROP_STATE)==true)
 {
  ObjectSetString(0,"close",OBJPROP_TEXT,"Открыть ВСЕ"); 
  Comment("Открыть всё!");
 }
else
 {
  ObjectSetString(0,"close",OBJPROP_TEXT,"Закрыть ВСЕ"); 
  Comment("Закрыть всё!");
 }

Código de controle dos botões.

 
Alexey Viktorov:

Não há muita diferença, não é mesmo?

Este é o código para a criação de um botão.

O botão é criado na função de inicialização

E isto é

é o código para controlar o botão.

Na verdade, eu fiz, mas não gosto do longo tempo de resposta

int start()
 {
  string    Direktor="ID";     // Имя каталога 
  string    Fail_ID=Symbol();      // Имя файла 
  int file_ID;
  file_ID=FileOpen(Direktor+"//"+Fail_ID,FILE_READ|FILE_WRITE|FILE_TXT); 
  FileWrite(file_ID,ChartID()); 
  FileClose(file_ID); 

  int total_GLOB=GlobalVariablesTotal();
  string name;
  string text;
  int kol=0;
  int x=1000;
  string strGl;
  string strGl_2;
  string strGl_3;
  double strGl_4;
  double strGl_5;
  for(int g=0;g<total_GLOB;g++)
    {
     name= GlobalVariableName(g);
     string g_2=IntegerToString(g+1,2,'0');
     text=g_2+" .  "+name+"   "+DoubleToString(GlobalVariableGet(name),4);
     kol++;
     strGl=IntegerToString(MathAbs(GlobalVariableGet(name)*10000),15,'0');
     strGl_2=StringSubstr(strGl,11,2);
     strGl_3=StringSubstr(strGl,13,2);
     strGl_4=StringToDouble(strGl_2);
     strGl_5=StringToDouble(strGl_3);
     ObjectCreate(name,OBJ_BUTTON,0,0,0);
         if(ObjectGet(name,OBJPROP_STATE)==true)
         {
          string Fail_ID_2=name;
          int file_ID_2 =FileOpen(Direktor+"//"+Fail_ID_2,FILE_READ|FILE_WRITE|FILE_TXT);
          string id =FileReadString(file_ID_2);
          long id2=StringToInteger(id);
          ChartSetInteger(id2,CHART_BRING_TO_TOP,true);
          FileClose(file_ID_2); 
         }
     if(strGl_4==strGl_5)
     {
      ObjectSet(name,6,clrDarkSlateGray);
      ObjectSet(name,OBJPROP_BGCOLOR,clrAquamarine);
      }
     if(strGl_4!=strGl_5)
     {
      ObjectSet(name,6,clrDarkSlateGray);
      ObjectSet(name,OBJPROP_BGCOLOR,clrSnow);
      }
     ObjectSet(name,102,x);
     ObjectSet(name,OBJPROP_SELECTED,false);
     ObjectSetText(name,text,10,"Arial",clrLightCyan);
     ObjectSet(name,103,40+(kol*20));
     if(GlobalVariableGet(name)<0) ObjectSet(name,6,Red);
     if(GlobalVariableGet(name)>0) ObjectSet(name,6,clrMediumBlue);
     if(GlobalVariableGet(name)==0) ObjectDelete(name);
     ObjectSetInteger(0,name,OBJPROP_XSIZE,180); 

//--- переведем кнопку в заданное состояние 
     ObjectSetInteger(0,name,OBJPROP_STATE,false); 

     if(Symbol()==name)
      {
       ObjectSet(name,6,clrMaroon);
       ObjectSet(name,103,25);
       ObjectSet(name,OBJPROP_FONTSIZE,13);
       ObjectSetInteger(0,name,OBJPROP_YSIZE,25); 
       ObjectSetInteger(0,name,OBJPROP_XSIZE,200); 
      }
    }

  return(0);
 }
void OnDeinit(const int reason)
  {
  GlobalVariablesDeleteAll();
ObjectsDeleteAll(0,0,OBJ_BUTTON);

  }
  
Razão: