Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 609

 
Alexander Antoshkin:

Também retirei o código do botão a partir dos exemplos, .... Como fazer pressão no botão não fixo, ou seja, após a sua função ser executada, volta ao seu estado inicial.

No que diz respeito aos botões, aqui está um exemplo da ajuda:

//+------------------------------------------------------------------+
//|                                               ControlsButton.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property description "Панель индикации и диалогов управления. Демонстрация работы класса CButton"
#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
//--- indents and gaps
#define  INDENT_LEFT                         (11)      // indent from left (with allowance for border width)
#define  INDENT_TOP                          (11)      // indent from top (with allowance for border width)
#define  INDENT_RIGHT                        (11)      // indent from right (with allowance for border width)
#define  INDENT_BOTTOM                       (11)      // indent from bottom (with allowance for border width)
#define  CONTROLS_GAP_X                      (5)       // gap by X coordinate
#define  CONTROLS_GAP_Y                      (5)       // gap by Y coordinate
//--- for buttons
#define  BUTTON_WIDTH                        (100)     // size by X coordinate
#define  BUTTON_HEIGHT                       (20)      // size by Y coordinate
//--- for the indication area
#define  EDIT_HEIGHT                         (20)      // size by Y coordinate
//--- for group controls
#define  GROUP_WIDTH                         (150)     // size by X coordinate
#define  LIST_HEIGHT                         (179)     // size by Y coordinate
#define  RADIO_HEIGHT                        (56)      // size by Y coordinate
#define  CHECK_HEIGHT                        (93)      // size by Y coordinate
//+------------------------------------------------------------------+
//| Class CControlsDialog                                            |
//| Usage: main dialog of the Controls application                   |
//+------------------------------------------------------------------+
class CControlsDialog : public CAppDialog
  {
private:
   CButton           m_button1;                       // the button object
   CButton           m_button2;                       // the button object
   CButton           m_button3;                       // the fixed button object

public:
                     CControlsDialog(void);
                    ~CControlsDialog(void);
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   //--- chart event handler
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);

protected:
   //--- create dependent controls
   bool              CreateButton1(void);
   bool              CreateButton2(void);
   bool              CreateButton3(void);
   //--- handlers of the dependent controls events
   void              OnClickButton1(void);
   void              OnClickButton2(void);
   void              OnClickButton3(void);
  };
//+------------------------------------------------------------------+
//| Event Handling                                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CLICK,m_button1,OnClickButton1)
ON_EVENT(ON_CLICK,m_button2,OnClickButton2)
ON_EVENT(ON_CLICK,m_button3,OnClickButton3)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CControlsDialog::CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CControlsDialog::~CControlsDialog(void)
  {
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CControlsDialog::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
//--- create dependent controls
   if(!CreateButton1())
      return(false);
   if(!CreateButton2())
      return(false);
   if(!CreateButton3())
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Button1" button                                      |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateButton1(void)
  {
//--- coordinates
   int x1=INDENT_LEFT;
   int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
   int x2=x1+BUTTON_WIDTH;
   int y2=y1+BUTTON_HEIGHT;
//--- create
   if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!m_button1.Text("Button1"))
      return(false);
   if(!Add(m_button1))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Button2" button                                      |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateButton2(void)
  {
//--- coordinates
   int x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X);
   int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
   int x2=x1+BUTTON_WIDTH;
   int y2=y1+BUTTON_HEIGHT;
//--- create
   if(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!m_button2.Text("Button2"))
      return(false);
   if(!Add(m_button2))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Button3" fixed button                                |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateButton3(void)
  {
//--- coordinates
   int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
   int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
   int x2=x1+BUTTON_WIDTH;
   int y2=y1+BUTTON_HEIGHT;
//--- create
   if(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!m_button3.Text("Locked"))
      return(false);
   if(!Add(m_button3))
      return(false);
   m_button3.Locking(true);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton1(void)
  {
   Comment(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton2(void)
  {
   Comment(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton3(void)
  {
   if(m_button3.Pressed())
      Comment(__FUNCTION__+" Состояние элемента управления: On");
   else
      Comment(__FUNCTION__+" Состояние элемента управления: Off");
  }
//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+
CControlsDialog ExtDialog;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
      return(INIT_FAILED);
//--- run application
   ExtDialog.Run();
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- очистим комментарии
   Comment("");
//--- destroy dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+

Atenção: Os Botões1 e 2 não são bloqueáveis, enquanto que o Botão3 é bloqueável.

Arquivos anexados:
 

Transitado:

George:

Por favor, aconselhe este ponto:

1. O indicador EA + está a funcionar

2. A ligação ao servidor é desconectada e toda a renderização de indicadores é perdida, os dados que fornece permanecem.

Pode sugerir onde ler sobre isso e/ou o que acontece quando a ligação se perde, porque é que o desenho se perde, mas os dados permanecem. É possível redesenhá-lo de novo?

Obrigado de antemão!

 
Karputov Vladimir:

Transitado:

George:

Por favor, aconselhe este ponto:

1. O indicador EA + está a funcionar

2. A ligação ao servidor é quebrada e toda a renderização do indicador desaparece, os dados que ele fornece permanecem.

Pode sugerir onde ler sobre isso e/ou o que acontece quando a ligação se perde, porque é que o desenho se perde, mas os dados permanecem. É possível redesenhá-lo de novo?

Obrigado de antemão!

Comece com o indicador - nomeadamente, o que acontece em OnCalculate() quando o parâmetro "rates_total" é "0":

O primeiro parâmetro rate_total contém o número de barras disponíveis para o indicador para cálculo e corresponde ao número de barras disponíveis no gráfico.

Note a ligação entre o valor retornado por OnCalculate() e o segundo parâmetro de entrada pré_calculado. O parâmetro pré_calculado na chamada de função contém um valordevolvido pela OnCalculate() na chamadaanterior. Isto permite algoritmos económicos para calcular o indicador personalizado, a fim de evitar cálculos repetidos para as barras que não mudaram desde a chamada anterior desta função.

Para isso, é normalmente suficiente devolver o valor do parâmetro rate_total, que contém o número de barras na chamada de função actual. Se desde a última chamada do OnCalculate() os dados de preços mudaram (foi bombeado um histórico mais profundo ou foram preenchidos espaços em branco no histórico), então o valor do parâmetro de entrada pré_calculado será definido para zero pelo terminal.

 
Karputov Vladimir:

Se se trata de botões, aqui está um exemplo da ajuda:

Nota: Botão1 e Botão2 são não bloqueáveis, mas o Botão3 é bloqueável.

Este não é um bom exemplo:

1 porque bibliotecas

2 porque é feito por um painel

3 porque não o compreende.

Esbocei dois botões, um é fixo e o outro precisa de ser desbloqueado - "Adicionar" que precisa de ser desbloqueado

//+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
bool stop_trading; 
 
int OnInit()
{//--- Создание Фиксированной кнопки "Старт-Стоп"
  if( !ObjectCreate( 0, "stop_button", OBJ_BUTTON, 0, 0, 0 ) )
  { MessageBox( "Кнопка 'Старт-стоп' не создана!", "Ошибка", MB_OK | MB_ICONHAND );return( INIT_FAILED );}
  else
  {ObjectSetInteger( 0, "stop_button", OBJPROP_CORNER, CORNER_RIGHT_LOWER );
  ObjectSetInteger( 0, "stop_button", OBJPROP_XDISTANCE, 60 );
  ObjectSetInteger( 0, "stop_button", OBJPROP_YDISTANCE, 20 );
  ObjectSetInteger( 0, "stop_button", OBJPROP_XSIZE, 60 );
  ObjectSetInteger( 0, "stop_button", OBJPROP_YSIZE, 20 );
  if ( stop_trading )
    {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMagenta);
    ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, true );
    ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" );}
    else
    {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMediumSeaGreen);
    ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, false );
    ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" );}  } 

 //--- Создание Нефиксированной кнопки "Добавить 
  if( !ObjectCreate( 0, "Add", OBJ_BUTTON, 0, 0, 0 ) ) 
  {   Print( "Кнопка 'Добавить' не создана!" );return( INIT_FAILED ); } 
  { 
    ObjectSetInteger( 0, "Add", OBJPROP_CORNER, CORNER_RIGHT_LOWER );
    ObjectSetInteger( 0, "Add", OBJPROP_XDISTANCE, 140 );         //--- установим координаты кнопки            
    ObjectSetInteger( 0, "Add", OBJPROP_YDISTANCE, 20 );
    ObjectSetInteger( 0, "Add", OBJPROP_XSIZE,80);                //--- установим размер кнопки
    ObjectSetInteger( 0, "Add", OBJPROP_YSIZE, 20); 
   //---
    ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR, clrWhite );      //--- установим цвет фона
    ObjectSetInteger( 0, "Add", OBJPROP_STATE, false );            //--- переведем кнопку в состояние false
    ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" );        //--- установим текст  
    
     
  }  
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{
//--- Удаление кнопки старт-стоп
  ObjectDelete( 0, "stop_button"  ); 
//--- Удаление кнопки Добавить
  ObjectDelete( 0, "Add" );  
}
//+------------------------------------------------------------------+
//| Expert Chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  long b_state; 
  long f_state;
//---  
  if( id == CHARTEVENT_OBJECT_CLICK )
  {
    if ( sparam == "stop_button" )
    {
      if ( ObjectGetInteger( 0, "stop_button", OBJPROP_STATE, 0, b_state ) )
      {
        if ( b_state == 1 ) 
        {
          stop_trading = true;
          ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMagenta);
          ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" );
        }
        else
        {
          stop_trading = false;
          ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMediumSeaGreen );
          ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" );
        }
      }
      
    }
     
  }
  
  ChartRedraw(ChartID());

   //--Создание Нефиксированной кнопки "Добавить
    
 if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ       
         if ( sparam == "Add" )// Нажата кнопка
         {
      if ( ObjectGetInteger( 0, "Add", OBJPROP_STATE, 0, f_state ) ) 
      {
        if (f_state == 1 ) 
        
        {
         // то, что то =true; здесь можно выбирать цвет /текст и т.д до нажатия
         //---
          ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrWhite ); //цвет кнопки
          ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" );  // текст кнопки          
        }
         else
        {
          // то ,что то равно false;
          //---здесь можно изменять цвет /текст  и т.д после нажатия 
         // ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrMediumSeaGreen );//цвет кнопки
        //  ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); // текст кнопки  
        
        }
 ChartRedraw(ChartID());

   }
  
}
 return;  
  
} 
 
como juntar-se ao gestor?
 
coon:
como juntar-se a um gestor?
Aqui estão as instruções:Comoinscrever-se para os sinais
 

mmm, ter um gestor, ver a eficácia do seu trabalho, querer "investir".

ps - desculpe, eu sou um bule.

 
coon:

mmm, ter um gestor, ver a eficácia do seu trabalho, querer "investir".

Desculpe, sou um principiante completo.

 

Obrigado, vou analisar o assunto.

Realmente, à primeira aproximação....... tem de se estar no terreno para o descobrir, aparentemente.

Mas eu gostaria de....

Alguma opção? Faz um pedido de adesão, preenche a papelada, deposita $ e ponto final?

 
coon:

Obrigado, vou analisar o assunto.

Realmente, à primeira aproximação....... tem de se estar no terreno para o descobrir, aparentemente.

Mas eu gostaria de....

Alguma opção? Fazer um pedido de adesão, preencher a papelada, depositar os $ e ponto final?

Ver vídeo tutorial:Vervídeo tutorial sobre sinais no YouTube

Tem de depositar dinheiro na sua conta MQL5.account para iniciar uma subscrição paga. Leia mais sobre oserviço de SinaisFAQ

Витрина торговых сигналов в MetaTrader 4/5
Витрина торговых сигналов в MetaTrader 4/5
  • 2015.03.09
  • www.youtube.com
Как выбрать торговый сигнал в платформе MetaTrader и подписаться на него за пару кликов? Очень просто, смотри наше видео и ты узнаешь все о торговых сигналах.