Errori, bug, domande - pagina 419

 
Im_hungry:

Buona notte, mi chiedevo se in questo codice

dopo aver controllato B>spred, che è "FALSE", il resto dei valori viene controllato

Aumenta il tempo di esecuzione del test, quindi devo modificare il codice nel modo seguente

E il più dispendioso in termini di calcolo (proverka() - copia dei valori del buffer di un indicatore)

L'ho messo per ultimo ma non controlla l'ultimo. Mi chiedo.

Perché?

Oppure non controlla l'ultimo:

Prova in questo modo

if((B >= spred) && (IND && proverka()))
{
//Processing...
}
 
Interesting:

Prova questo

Sory - l'ho sottovalutato, funziona in tutti i modi,
 

Ora mi sto chiedendo perché nell'EA, l'indicatore sta mangiando tutta la RAM e anche di più,

e lavorando separatamente dall'Expert Advisor, non lo fa.

può essere che l'indicatore non venga cancellato o qualcos'altro ma venga chiamato su ogni nuova barra,

e si ottiene sempre meno RAM con ogni barra (

 bytes not available

). Perché? Sì, buona notte!

 
Renat:
Per favore, datemi il codice.
Renat se la domanda è per me, ho appena creato un EA vuoto e l'ho eseguito. deve essere legato a UAC poiché ho tutti i file memorizzati qui C:UUsers\user\AppData\Roaming\MetaQuotes\Terminal\88B20A762CA848D878978288235C7B072A6 e il visualizzatore cerca di ottenere dati dalla directory diretta.
 
Im_hungry:

Ora mi sto chiedendo perché nell'EA, l'indicatore sta mangiando tutta la RAM e anche di più,

e lavorando separatamente dall'Expert Advisor, non lo fa.

può essere che l'indicatore non venga cancellato o qualcos'altro ma venga chiamato su ogni nuova barra,

e sempre meno RAM con ogni barra (

). Perché? Sì, buonanotte!


L'esempio in studio per favore (almeno come uno schizzo di un'idea), o agli sviluppatori ma tutto in un pezzo. A proposito, e cosa significa "viene chiamato ad ogni tick"?

L'idea è che deve essere chiamato una volta sola, nel blocco di inizializzazione. Nel caso di un tentativo di aggirare un errore di inizializzazione, è ancora possibile chiamarlo in un timer o in un nuovo tick(ma solo se l'handle è disabilitato).

In tutti gli altri posti è ragionevole ottenere solo una certa porzione di dati (controllando l' handicap, ovviamente).

 
sergey1294:
Renat se la domanda è per me, ho appena creato un EA vuoto e l'ho eseguito. probabilmente questo è legato a UAC come ho tutti i file memorizzati qui C:UUsers\user\AppData\Roaming\MetaQuotes\Terminal\88B20A762CA848D878978288235C7B072A6 e il renderer cerca di tirare i dati dalla directory diretta.
Quindi escludiamo l'UAC dai vazoom con portabilità... :)
 
Interesting:
Quindi escludiamo UAC dai vazoom con portabilità... :)
Se ora avvio il terminale con questo interruttore, partirà sempre con questo o devo avviare il terminale dalla linea di comando ogni volta?
 
Interesting:

Esempio di studio per favore (almeno come idea di massima), o agli sviluppatori, ma il tutto. A proposito, cosa significa "chiamato ad ogni spunta"?

L'idea è che deve essere chiamato una volta sola, nel blocco di inizializzazione. In caso di un tentativo di bypassare un errore di inizializzazione, può ancora essere in un timer o in un nuovo tick(ma solo se l'handle è disabilitato).

In tutti gli altri posti è ragionevole ottenere solo una certa porzione di dati (con controllo dell'handicap, ovviamente).

Questo è usato per controllare se i buffer sono stati copiati (con successo o no)

bool proverka()
{
  ArraySetAsSeries(Buf,true);
  handle=iCustom(NULL,0,"V",Symbol_1,Symbol_2,Depth,ExpKoef,DateStart);
  ResetLastError();
  int copied=CopyBuffer(handle,0,1,1,Buf);
  if(copied<=0)
   {
    Sleep(50);
................

con questo chiamiamo l'indicatore su una nuova barra

handle=iCustom(NULL,0,"V",Symbol_1,Symbol_2,Depth,ExpKoef,DateStart);
E senza di esso, otteniamo solo valori zero!!!

E la memoria diventa sempre più piccola ad ogni barra...

Perché?

 
sergey1294:
Se ora avvio il terminale con questa chiave, funzionerà sempre con questa, o devo avviare il terminale dalla linea di comando ogni volta?

Se si crea un file batch e o si corregge il collegamento corrispondente, allora tutto il tempo. Se lo eseguo dalla linea di comando, è una cosa da fare una sola volta.

Secondo me, è più facile creare una copia del collegamento con il nome e la linea di comando appropriati.

 
Interesting:

Se si crea un file batch e o si corregge la scorciatoia corrispondente, è tutto il tempo. Se anche solo eseguito dalla linea di comando, allora una sola volta.

A mio parere, è più facile creare una copia del collegamento con il nome e la linea di comando appropriati.

come farlo correttamente