Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1185

 
odyn:

Ciao intenditori!

Ecco il codice:

struct STRUCT_POSITION {\i}

STRUCT_POSITION SPosition[];

Domanda:

Cos'è STRUCT_POSITION SPosition[]; ? Se sta creando un'istanza della struttura, perché è un array dinamico? È davvero possibile farlo? Perché?


Vi sarò molto grato per la vostra risposta.

Dichiarare la struttura struct STRUCT_POSITION {\...\ è la creazione di un tipo di dati definito dall'utente. E STRUCT_POSITION SPosition[]; è la dichiarazione di una variabile di tipo utente. Il fatto che la variabile sia un array è indicato dalle parentesi quadre [] Potete dichiarare diverse variabili di tipo personalizzato proprio come qualsiasi altro tipo.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
In questo tipo di voce, variabile,array
 
Buona giornata a tutti, ora del giorno.
Su uno dei miei dispositivi Android, MT5 ha smesso di funzionare
Ha semplicemente smesso di funzionare. Non ha cambiato nulla, non ha configurato nulla.
Assomiglia allo screenshot.
Ho Internet, tutto il resto funziona.
Ho solo un conto demo.
Scusa se sono nel posto sbagliato.
 

C'è qualche utility (come WatchDog) per riavviare MT5.


Supponiamo che MT5 abbia chiuso a causa di qualche errore. Come posso rintracciare a distanza questo immediatamente e riavviare MT5.

Sto usando MT4bar per MT4. Ho bisogno di qualcosa di simile per MT5.

 

Buon pomeriggio.

Sto cercando di fare una classe base universale per definire e chiamare sempre un oggetto della stessa classe.

E sto facendo due soluzioni per testare le notizie. Ho una classe base CNewsFilter e due ereditate CNewsFilterLive e CNewsFilterTester. Voglio definire un oggetto CNewsFilter nel mio codice. E selezionerà automaticamente una classe a seconda di quale modalità è in esecuzione. Ma qualcosa non funziona. Ecco una classe base, ho lasciato solo il metodo Init() per esempio.

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

Una classe ereditata:

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

E poi lo chiamo nel mio codice EA:

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

Durante il debug, non entra mai in una classe ereditata CNewsFilterTester, che dovrebbe entrare secondo la direttiva della classe base, che ho aggiunto alla fine del codice della classe base. __MQL5__ è qui solo come esempio. Come farlo con il tester è un'altra questione. Finora, l'idea stessa non funziona - i metodi della classe ereditata non vengono chiamati. Quando Init() viene chiamato, non va a Init() della classe ereditata - in questo esempio CNewsFilterTester. Aiuto, per favore.

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

Buon pomeriggio.

Sto cercando di fare una classe base universale per definire e chiamare sempre un oggetto della stessa classe.

E sto facendo due soluzioni per testare le notizie. Ho una classe base CNewsFilter e due ereditate CNewsFilterLive e CNewsFilterTester. Voglio definire un oggetto CNewsFilter nel mio codice. E selezionerà automaticamente una classe a seconda di quale modalità è in esecuzione. Ma qualcosa non funziona. Ecco una classe base, ho lasciato solo il metodo Init() per esempio.

Una classe ereditata:

E poi lo chiamo nel mio codice EA:

Durante il debug, non entra mai in una classe ereditata CNewsFilterTester, che dovrebbe entrare secondo la direttiva della classe base, che ho aggiunto alla fine del codice della classe base. __MQL5__ è qui solo come esempio. Come farlo con il tester è un'altra questione. Finora, l'idea stessa non funziona - i metodi della classe ereditata non vengono chiamati. Quando Init() viene chiamato, non va a Init() della classe ereditata - in questo esempio CNewsFilterTester. Per favore, aiutatemi.

Qui

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

si crea un oggetto di classe base. Di conseguenza - avete una classe base ovunque.

 

Come scrivere correttamente una condizione:

come questo

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

o come questo:

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

Come scrivere correttamente una condizione:

come questo

o come questo:

??

Non ha molta importanza. Puoi anche scriverlo in questo modo.

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

Le operazioni aritmetiche hanno la precedenza su quelle logiche.

Ma se ci sono sia && che || nella condizione, è preferibile separarli con le parentesi per renderlo più facile da capire.

 
Alexey Viktorov:

Non è una questione di principio. Puoi anche metterla in questo modo

La priorità dell'aritmetica è superiore a quella della logica.

Ma se la condizione ha sia && che ||, è preferibile dividerla con delle parentesi per renderla più facile da capire.

Grazie per la risposta!

 

Per quale motivo non posso pubblicare il codice?

Ricevo sempre un messaggio:

Revisione del codice completata con errori:
Errori rilevati durante la verifica del codice Trading Statistics Real Time Report.
https://www.mql5.com/en/code/28074/230766

Ma non capisco la ragione dell'errore di pubblicazione del codice.

Per favore, rispondetemi su questo.

Qual è il problema, almeno dovrebbe essere evidenziato.

 
jaffer wilson:

Per quale motivo non posso pubblicare il codice?

Ricevo sempre un messaggio:

Controllo del codice completato con errori:
Errori rilevati durante il controllo del codice Trading Statistics Real Time Report.
https://www.mql5.com/en/code/28074/230766

Ma non capisco la ragione dell'errore di pubblicazione del codice.

Per favore, rispondetemi su questo.

Qual è il problema, almeno dovrebbe essere evidenziato.

Dov'è la domanda? Quali sono esattamente gli errori? Mi dispiace, tutti i telepati sono in vacanza.

Fare clic su

Motivazione: