Una domanda per gli esperti di MQL - pagina 15

 

Grazie Zhunko e TheXpert!

Le vostre varianti eliminano questo tipo di errore!

 

Ciao!

Potete dirmi cosa può significare l'avviso quando si compila un indicatore in un mt4 aggiornato:

non tutti i percorsi di controllo restituiscono un valore S_E_v.mq4 181
0 errore(i), 1 avviso(i) 1 2

 
Rita:

Puoi dirmi cosa potrebbe significare l'avvertimento durante la compilazione dell'indicatore in mt4 aggiornato:

Significa che c'è un caso nella funzione che restituisce un valore in cui non viene restituito nulla e questo è male.
 

Programmatori, aiutatemi: ho bisogno di determinare l'offset della barra per un dato tempo su un TF orario. La procedura standard (dal tutorial) dà 0. Indicami la direzione sbagliata...

 datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Nesradamus:

Programmatori, aiutatemi: ho bisogno di determinare l'offset della barra per un dato tempo su un timeframe orario. La procedura standard (dal tutorial) dà 0. Indicami la direzione sbagliata...

"EUROUSD"

Esiste un tale simbolo?

 

Pomeriggio.

Dopo l'ultimo aggiornamento di mt4 e la compilazione di EA ci sono avvertimenti in tre linee 101-106-109, vedi fig:

Si prega di consigliare, - come risolvere, ecco il codice di questa funzione:

(e dovrebbe essere corretto?)

int init()
{
 ExpertBars = Bars;
//-----------------------------------------------------------
gbNoInit=False; if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
//------------------
}
 
Rita:

Pomeriggio. Dopo l'ultimo aggiornamento di mt4 e la compilazione di EA ci sono avvertimenti in tre linee 101-106-109, vedi fig:

Si prega di consigliare, - come risolvere, ecco il codice di questa funzione:

(e dovrebbe essere corretto?)

La vostra init() è di tipo int, il che significa che deve restituire un valore. Prima dell'ultima parentesi di chiusura scrivere

return(INIT_SUCCEEDED);

C'è un posto in una funzione dove la funzione può non restituire nulla. Non avete mostrato le funzioni - cercate voi stessi in quelle funzioni dove è possibile lasciare sull'ultima parentesi di chiusura.

 
Ecco il codice
artmedia70:

Prima dell'ultima parentesi di chiusura, scrivere .....

Non hai mostrato le funzioni - cerca tu stesso in quelle funzioni dove è possibile lasciare sull'ultima parentesi di chiusura.


Grazie. Corretto return(INIT_SUCCEED);.

Ecco il codice di questa funzione non mostrata per gli altri due avvisi rimanenti:

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);}

.

 
Rita:
Ecco il codice

Grazie. Corretto.

Ecco il codice di questa funzione sugli altri due avvisi:

1. Molto probabilmente, avete deinit() anche int e return(0) non è scritto in esso

2. Questa funzione è nulla e la parentesi di chiusura serve come return` in essa. Tutto è a posto in esso.

 

deinit() - non ce l'ho affatto.

Corretto il ritorno a return(0) sui due avvertimenti rimanenti e il codice è stato compilato senza problemi.

Grazie.

Motivazione: