Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 201

 
Alexsandr San:

Lo vuoi per mt4 o mt5? Ho cancellato il codice che ho postato. Non ho notato subito che mt4 era discusso qui

MQL4

 
Speculator:

MQL4

Qui, un sacco di roba buonahttps://www.mql5.com/ru/forum/131859/page6#comment_3359705
 
Ciao, è possibile ricevere notifiche via telefono/email in MT4 quando il terminale è spento, ma con un server VPS collegato?
 
Alexsandr San:

Ti consiglio - ci sono un sacco di cose buone da trovarehttps://www.mql5.com/ru/forum/131859/page6#comment_3359705

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
C'è un modo per vedere in cosa si svilupperà il codice risultante applicando le macro?
 

Una domanda più specifica e forse interessante:

Uso lo stesso costrutto in diverse funzioni

if(FileReadStruct(handle,temp_rate)!=60)
{
  IsError=true;
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError());
  return;
}

Tuttavia, alcune funzioni sono di tipo nullo e altre restituiscono un valore, quindi restituisco zero da esse:

return(0);

Posso fare una macro magica che mi sostituisca quella giusta in ogni caso?

 
Yurij Kozhevnikov:

Una domanda più specifica e forse interessante:

Uso lo stesso costrutto in diverse funzioni

Tuttavia, alcune funzioni sono di tipo nullo e altre restituiscono un valore, quindi restituisco zero da esse:

Posso fare una tale macro magica, che in ogni caso sostituirebbe per me la variante necessaria?

L'uso di return in una macro è una pistola armata puntata alla propria gamba, e quando è combinata con if - si trasforma in un cannone))) Ma se vuoi davvero farlo:

#define  CHECK_READ(dHndl,dRate,dRet)  do \
if(FileReadStruct(dHndl,dRate)!=60){    \
  IsError=true;   \
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); \
  return dRet;} while(false)
  
...
CHECK_READ(handle,temp_rate,);
...
CHECK_READ(handle,temp_rate,0);
...

Non l'ho testato, ma dovrebbe funzionare. Ha anche ritrasformato la pistola in una pistola)))

 

Grazie!

Quindi passo nell'ultimo parametro o un valore di ritorno, o uno vuoto, che si trasformerà in

return ;

e uno spazio non significa nulla. Naturalmente, come ho dimenticato che può essere usato senza le mie parentesi preferite.

return(x);
return x; //равноценны

A proposito, potresti dire perché questo costrutto è dentro un ciclo, che può essere eseguito solo una volta? È un cannone trasformato in una pistola? Possibili situazioni come la ricorsione infinita o qualcosa del genere?

 
Yurij Kozhevnikov:

Grazie!

Quindi passo nell'ultimo parametro o un valore di ritorno, o uno vuoto, che si trasformerà in

e uno spazio non significa nulla. Naturalmente, come ho fatto a dimenticare che può essere usato anche senza le mie staffe preferite.

Inoltre, potresti dirmi perché questo costrutto è infilato in un ciclo che può essere eseguito solo una volta? È una pistola trasformata di nuovo in una pistola? Possibili situazioni come la ricorsione infinita o qualcosa del genere?

if (condizione) CHECK_READ(h,r,0); altrimenti CHECK_READ(h,r,1);
Distribuire la macro senza il wrapper do-while e vedere cosa succede))
 
Vladimir Simakov:
if (condizione) CHECK_READ(h,r,0); altrimenti CHECK_READ(h,r,1);
Distribuire la macro senza il wrapper do-while e vedere cosa succede))
if (condition) if(FileReadStruct(h,r)!=60){   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;}; else if(FileReadStruct(dHndl,dRate)!=60){    
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return dRet;};

=

if (condition) 
 if(FileReadStruct(h,r)!=60)
 {   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;
 }; 
 else 
  if(FileReadStruct(dHndl,dRate)!=60)
  {    
   IsError=true;   
   Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
   return dRet;
  };

Questo sembra essere il caso, se ho capito bene il principio di sostituzione.

Punto e virgola superfluo dopo le parentesi graffe. E non è chiaro a cos'altro si riferisca ora.

È un peccato che apparentemente non ci sia un modo semplice per automatizzare l'espansione delle macro per vedere cosa succede. A meno che non si possa fare il proprio script.

Grazie! C'è una ragione per cui non c'è un punto e virgola dopo while nella macro.

Motivazione: