Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 609

 
Alexander Antoshkin:

Ho anche preso il codice del pulsante dagli esempi, .... Come fare in modo che il pulsante non sia fisso, cioè che dopo l'esecuzione della sua funzione ritorni al suo stato originale.

Per quanto riguarda i pulsanti, ecco un esempio dalla guida:

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

Nota: i pulsanti 1 e 2 non sono bloccabili, mentre il pulsante 3 è bloccabile.

File:
 

Riportato:

George:

Per favore, consigliate un punto del genere:

1. EA + indicatore è in esecuzione

2. La connessione al server è scollegata e tutto il rendering dell'indicatore è perso, i dati che fornisce rimangono.

Potete suggerirmi dove leggere a riguardo e/o cosa succede quando la connessione viene persa, perché il disegno viene perso, ma i dati rimangono. È possibile ridisegnarlo di nuovo?

Grazie in anticipo!

 
Karputov Vladimir:

Riportato:

George:

Per favore, consigliate un punto del genere:

1. EA + indicatore è in esecuzione

2. La connessione al server è scollegata e tutto il rendering dell'indicatore è perso, i dati che fornisce rimangono.

Potete suggerirmi dove leggere a riguardo e/o cosa succede quando la connessione viene persa, perché il disegno viene perso, ma i dati rimangono. È possibile ridisegnarlo di nuovo?

Grazie in anticipo!

Iniziare con l'indicatore - cioè cosa succede in OnCalculate() quando il parametro "rates_total" è "0":

Il primo parametro rates_total contiene il numero di barre disponibili all'indicatore per il calcolo e corrisponde al numero di barre disponibili nel grafico.

Notate la connessione tra il valore restituito da OnCalculate() e il secondo parametro di input prev_calculated. Il parametro prev_calculated nella chiamata di funzione contiene un valorerestituito da OnCalculate() nella chiamataprecedente. Questo permette algoritmi economici per il calcolo dell'indicatore personalizzato al fine di evitare calcoli ripetuti per quelle barre che non sono cambiate dalla precedente chiamata di questa funzione.

Per questo, di solito è sufficiente restituire il valore del parametro rates_total, che contiene il numero di barre nella chiamata di funzione corrente. Se dall'ultima chiamata di OnCalculate() i dati sui prezzi sono cambiati (è stata pompata una storia più profonda o sono stati riempiti gli spazi vuoti della storia), allora il valore del parametro di input prev_calculate sarà impostato a zero dal terminale.

 
Karputov Vladimir:

Se si tratta di pulsanti, ecco un esempio dalla guida:

Nota: i pulsanti 1 e 2 non sono bloccabili, ma il pulsante 3 è bloccabile.

Questo non è un buon esempio:

1 perché le biblioteche

2 perché è fatto da un pannello

3 perché non lo capite.

Ho disegnato due pulsanti, uno è fisso e l'altro deve essere sbloccato - "Add" che deve essere sbloccato

//+------------------------------------------------------------------+
//|                                                         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;  
  
} 
 
come unirsi al manager?
 
coon:
come entrare in un manager?
Ecco le istruzioni:Comeiscriversi ai segnali
 

mmm, avere un manager, vedere l'efficacia del suo lavoro, voler "investire".

ps - scusate, sono una teiera.

 
coon:

mmm, avere un manager, vedere l'efficacia del suo lavoro, voler "investire".

Mi dispiace, sono un principiante assoluto.

 

Grazie, darò un'occhiata.

Davvero, alla prima approssimazione....... bisogna essere sul campo per capirlo a quanto pare.

Ma mi piacerebbe....

Ci sono opzioni? Faccio una domanda di adesione, compilo i documenti, deposito i dollari e basta?

 
coon:

Grazie, darò un'occhiata.

Davvero, alla prima approssimazione....... bisogna essere sul campo per capirlo a quanto pare.

Ma mi piacerebbe....

Ci sono opzioni? Fare una domanda di adesione, riempire i documenti, depositare i dollari ed è tutto?

Guarda il video tutorial:Guarda ilvideo tutorial sui segnali su YouTube

È necessario depositare denaro sul tuo conto MQL5.account per iniziare un abbonamento a pagamento. Per saperne di più sulservizio SignalsFAQ

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