Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 512

 
Come posso lavorare con questo? Sono seduto qui da due giorni per niente. Quale altra soluzione potrebbe esserci?
 
Nel gestore OnCalculate(...), le costanti del buffer open,high,low,close traboccano per tutta la storia un carattere alla volta, cosa devo fare? Per esempio, voglio calcolare il valore dell'array mas[i]= open[i] /close[i] per tutta la storia di una coppia e fare la media di questo valore con un altro carattere. Ho cercato in molti argomenti, non c'è molto di simile. Puoi dirmi dove guardare.
 
Juer:
Come posso lavorare con questo? Sono seduto qui da due giorni per niente. Quale altra soluzione potrebbe esserci?

E dove ha mostrato un esempio riproducibile? Ci stai dando solo frammenti di codice. Dobbiamo compilarli in codice funzionante a nostra discrezione? E se non indoviniamo e ti serve quello sbagliato?

 
Artyom Trishkin:

E dove ha mostrato un esempio riproducibile? Tu dai solo frammenti di codice. Dobbiamo collegarli in un codice funzionante a nostra discrezione? E se non indoviniamo e hai bisogno della cosa sbagliata?

OK, ma come farlo correttamente non attraverso un array di strutture, ma attraverso una classe CArrayObj, dove l'oggetto sarebbe un oggetto di tipo struttura? Non capisco bene come dichiarare e come aggiungere ed è possibile?

 
Juer:

OK, ma come farlo correttamente non attraverso un array di strutture, ma attraverso una classe CArrayObj, dove l'oggetto sarebbe un oggetto di tipo struttura? Non capisco bene come dichiarare e come aggiungere ed è possibile?

Cercate di descrivere il problema in generale, non nello specifico - cosa volete ottenere come risultato di avere questo o quel dato.

 
mwwm:
Nel gestore OnCalculate(...), le costanti del buffer open,high,low,close traboccano per tutta la storia un carattere alla volta, cosa devo fare? Per esempio, voglio calcolare il valore dell'array mas[i]= open[i] /close[i] per tutta la storia di una coppia e fare la media di questo valore con un altro carattere. Ho cercato in molti argomenti, non c'è molto di simile. Puoi dirmi dove guardare.
Cosa intendi per traboccare?
 
Дед пенсионер:
cosa significa overflow?

XAUUSD,Daily: matrice fuori dalla gamma in '!2019.mq4' (243,6) dà fuori durante i calcoli tramite costanti inOnCalculate, e CopyOpen' - nessuno degli overloads può essere applicato alla chiamata di funzione quando provo a fare come questo int prices1=CopyOpen(Symbol(),0,0,0,Bars(_Symbol,_Period),open); È molto confuso organizzare l'accesso ai dati tramite strutture, a che punto OHLC prende tutte le citazioni e poi solo quelle nuove, sono bloccato su iOpen(,,,))


 
Juer:

Quindi errore di accesso all'array non valido.

Non ci sono array o stringhe nella struttura. Solo bool, integer, double e enum.

Mi dispiace. Sono diventato un po' sciocco. Naturalmente, dovrà essere un po' più complicato:

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

Non è un vettore, come in C++. Ecco perché è necessario copiare elemento per elemento. Inoltre dobbiamo preoccuparci di far coincidere le dimensioni dell'array originale e dell'array di destinazione. Ecco perché la funzione non entra in una riga. E non sarà sempre eseguito con successo. Ecco perché abbiamo bisogno di restituire la conferma che è stato eseguito con successo.

 
mwwm:

XAUUSD,Daily: matrice fuori dalla gamma in '!2019.mq4' (243,6) dà fuori durante i calcoli tramite costanti inOnCalculate, e CopyOpen' - nessuno degli overloads può essere applicato alla chiamata di funzione quando provo a fare come questo int prices1=CopyOpen(Symbol(),0,0,0,Bars(_Symbol,_Period),open); È molto confuso organizzare l'accesso ai dati tramite strutture, a che punto OHLC prende tutte le citazioni e poi solo quelle nuove, bloccato su iOpen(,,,))


Non si sovrascrive e si accede a un indice inesistente.
 
Artyom Trishkin:
Non si sovrascrive, e ti stai rivolgendo a un indice inesistente.

e come farlo correttamente?

Motivazione: