Errori, bug, domande - pagina 736

 
Mi riferivo ad esso e anche all'estensione .chm
 
 
void OnStart()
  {
   MqlRates a[],b[];
   Alert("после MqlRates a[],b[] Series == "+ArrayIsSeries(b));
   CopyRates(Symbol(),PERIOD_CURRENT,0,TerminalInfoInteger(TERMINAL_MAXBARS),a);
   ArraySetAsSeries(a,true);
   CopyRates(Symbol(),PERIOD_M1,0,TerminalInfoInteger(TERMINAL_MAXBARS),b);
   Alert("после CopyRates Series == "+ArrayIsSeries(b));
   ArraySetAsSeries(b,true);
   Alert("после ArraySetAsSeries(b,true); Series == "+ArrayIsSeries(b));
}
2012.05.06 17:29:55 TEMP (EURUSD,H1) dopo ArraySetAsSeries(b,true); Series == false
2012.05.06 17:29:55 TEMP (EURUSD,H1) dopo CopyRates Series == false
2012.05.06 17:29:55 TEMP (EURUSD,H1) dopo MqlRates a[],b[] Series == false

Si vede e non si arrossisce. Forse sto bollendo?

 
 
sergeev:

ArrayGetAsSeries

Rimuovere il coperchio, spegnere il fuoco.

Grazie.

 
Il mercato non funziona, non si possono scaricare demo o prodotti gratuiti - "Error loading program *****. Si prega di riprovare più tardi".
 
papaklass:

1 stringa trapelata a sinistra

L'ho capito, è la modalità di inizializzazione della struttura di richiesta MQLTradeRequest.

Se lo inizializziamo in questo modo

allora"1 leaked strings left" non appare.

Se l'inizializzazione viene effettuata dalla funzione OpenPosition() al livello globale, appare il record di memoria:

Per quanto riguarda la seconda opzione. Cercando di capire, ho trovato il seguente codice:

//+------------------------------------------------------------------+
//|                                                   papaclass4.mq5 |
//+------------------------------------------------------------------+
MqlTradeRequest      mrequest={1};
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("Global: mrequest.price=",mrequest.price);
  }
//+------------------------------------------------------------------+

Ritorna:

2012.05.07 10:52:10 papaclass4 (USDCAD,M1) Globale: mrequest.price=0.0

Risulta che la variabile mrequest={1} è inizializzata a livello globale, ma il programma non vede i valori dei suoi campi inizializzati per qualche motivo. Anche il compilatore non si lamenta.

 
Avete inizializzato il primo membro della struttura con uno e il resto con zero per default.
 
Renat:
Avete inizializzato il primo membro della struttura con uno e il resto con zero per default.
Capito. Ho trovato la spiegazione nel manuale di riferimento: "Ci deve essere almeno un valore nella sequenza di inizializzazione: il primo elemento della struttura o dell'array corrispondente è inizializzato con questo valore, gli elementi mancanti sono considerati zero".
 
papaklass:

1 stringa trapelata a sinistra

L'ho capito, viene dal modo in cui la struttura MqlTradeRequest è inizializzata.

Se lo inizializziamo in questo modo

allora"1 leaked strings left" non appare.

Se spostiamo l'inizializzazione dalla funzione OpenPosition() al livello globale, appare il record di memoria:

Grazie per il messaggio, l'errore del compilatore è risolto.
Motivazione: