Errori, bug, domande - pagina 730

 

Potete consigliarmi come risolvere il problema?
Dopo la prima esecuzione dell'Expert Advisor nel tester (Read=false), viene creato un file csv con le statistiche.
In int OnInit() il seguente codice:

  ResetLastError();
  if(Read)
  {
    filehandle=FileOpen(FileName,FILE_READ|FILE_CSV);
  }
  else
  {
    filehandle=FileOpen("razdvigka.csv",FILE_WRITE|FILE_CSV);
  }
Il file creato è memorizzato nella directory: tester\Agent\MQL5\Files

Tuttavia, alla seconda esecuzione (Read=true). Abbiamo bisogno di leggere i dati da questo file, ma il file è stato cancellato.

 
Vitya:

Potete consigliarmi come risolvere il problema?
Dopo la prima esecuzione dell'Expert Advisor nel tester (Read=false), viene creato un file csv con le statistiche.
In int OnInit() il seguente codice:

Il file creato è memorizzato nella directory: tester\Agent\MQL5\Files

Tuttavia, alla seconda esecuzione (Read=true). Abbiamo bisogno di leggere i dati da questo file, ma il file è stato cancellato.

In questo caso è necessario creare un file con il flag FILE_COMMON. Il file sarà creato nella cartella condivisa del terminale.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5
 
tol64:
In questo caso è necessario creare un file con il flag FILE_COMMON. Il file verrà creato nella cartella condivisa del terminale.
filehandle=FileOpen(FileName,FILE_READ|FILE_CSV|FILE_COMMON);
Grazie.
L'ho capito.
 
Rosh:
Guarda ChartIndicatorAdd
Grazie!
 
Servicedesk, l'applicazione #359447 sta brancolando o hai provato invano?
 
x100intraday:
Servicedesk, l'applicazione #359447 viene palpata o avete provato per niente?
Ci sono molte discussioni in corso. Ma nessuna risposta è ancora pronta.
 

Se assumiamo che questo sia l'indicatore), la prima volta la data sarà visualizzata, ma le prossime impostazioni sul grafico (seconda, terza copia) non visualizzeranno la data.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
    Print(TimeCurrent());
   
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
{
  
  
  
  return(rates_total);
  
}
 
Karlson:

Se assumiamo che questo sia l'indicatore), visualizzerà la data per la prima volta, ma le impostazioni successive nel grafico (seconda, terza copia) non visualizzeranno la data.

Ora la parte di calcolo dell'indicatore viene cancellata dallo spazio mql con un ritardo.

se applichi lo stesso indicatore (con gli stessi parametri) a grafici diversi (ma con lo stesso simbolo/tempo) - non ci sarà una reinizializzazione.

Se dopo aver cancellato l'ultima copia vai a fumare - allora ci sarà la reinizializzazione all'avvio.

Tale effetto collaterale dell'ottimizzazione. :)

Nota: il fumo fa male alla TUA SALUTE!

;)

 

Cari programmatori,

Dimmi, cosa nel codice del programma mql5 influisce maggiormente sulla velocità? La questione è che creando il mio programma e aumentando il volume del codice, ho affrontato il fatto che la sua velocità è diminuita significativamente. Anche se gli Expert Advisors standard, che richiedono più codice, dalla cartella Advisors and Examples sono molto più veloci.

In generale, c'è un articolo o una spiegazione su come formattare meglio la struttura del codice sul forum? Dai un consiglio a un programmatore principiante. Grazie!

 
Alex5757000:

Cari programmatori,

Dimmi, cosa nel codice del programma mql5 influisce maggiormente sulla velocità? La questione è che creando il mio programma e aumentando il volume del codice, ho affrontato il fatto che la sua velocità è diminuita significativamente. Anche se gli Expert Advisors standard, che richiedono più codice, dalla cartella Advisors and Examples sono molto più veloci.

In generale, c'è un articolo o una spiegazione su come formattare meglio la struttura del codice sul forum? Dai un consiglio a un programmatore principiante. Grazie!

IMHO, i loop annidati influiscono maggiormente sulla velocità. I loop annidati fino alla terza profondità sono praticamente un limite, oltre il quale bisogna stare molto attenti alle dimensioni dei loop. Prendo il mio P4 per esempio: funziona a 3Hz, sto ottenendo ~10k operazioni al secondo.

Questo numero significa che i cicli tripli annidati 1000x1000x10 saranno eseguiti in 1 sec, se capite, se il 3° ciclo è aumentato a 100 si ottiene 10 sec.