Errori, bug, domande - pagina 1845

 
Nikolai Semko:
Una richiesta agli sviluppatori.
Manca molto la possibilità di salvare alcune variabili o array quando si passa da un timeframe all'altro, in modo che la loro reinizializzazione non avvenga. O può essere fatto in qualche modo attraversoOnDeinit definendo un codice motivo REASON_CHARTCHANGE?
Ho solo dei calcoli abbastanza ingombranti indipendenti dal tempo nel corpo del mio programma e non voglio ricalcolarli ogni volta. Sento che ci manca qualche tipo speciale di variabili globali, che non vengono reinizializzate quando cambia il timeframe. Ho imparato a farlo con variabili semplici senza variabili globali nel terminale, ma con strutture o array non ho idea di come farlo, e sembra che tale possibilità semplicemente non esista. È possibile, naturalmente, usare le risorse, ma è molto confuso.
Cercate di usare un indicatore. Le variabili globali non vengono reinizializzate lì quando si cambia TF (per quanto mi ricordi). O attraverso un file.
 
Konstantin:

Come?

Come questo:

struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
      ArrayResize( buff, n );
   }
   MyArray( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   ~MyArray()
   {
      ArrayFree( buff );
   }
   
   void operator=( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
      ArrayResize( buff, n );
      ArrayInitialize( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy:

Per esempio, così:

Non è quello che è stato chiesto, ma forse questo farebbe comodo all'autore della domanda, a cui c'è una risposta inequivocabile: NESSUNO.

Non c'è nessun rifiuto in Service Desk

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.04.02 10:34

È possibile compensare la mancanza di puntatori a un array introducendo la possibilità di restituire un array con una funzione?
int[] Func()
{
  int a[] = {1, 2, 3};

  return(a);
}

Print(Func()[1]); // 2

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.04.01 10:20

Una volta, l'operatore [] è stato aggiunto al tipo stringa
string Str = "AB C";
Print(CharToString(Str[1])); // B


È possibile per gli sviluppatori aggiungere un operatore = per gli array?

int a[], b[];
a = b; // ArrayCopy(a, b);


Poiché non ci sono puntatori, un tale operatore renderebbe il linguaggio più flessibile - ha trovato situazioni in cui sarebbe MOLTO utile.

 
Alexey Kozitsyn:
Prova a usare un indicatore. Le variabili globali non vengono reinizializzate quando cambia il TF (per quanto mi ricordi). O attraverso un file.

È il contrario:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Inizializzazione delle variabili globali del programma e altre conoscenze utili.

Artyom Trishkin, 2016.12.05 20:27

Risposta ricevuta da SD:


Penso che si possa tranquillamente usare una tale caratteristica degli EA a variabile globale.


 
Alexey Kozitsyn:
Prova a usare un indicatore. Le variabili globali non vengono reinizializzate quando si cambia il TF (per quanto mi ricordi). O attraverso un file.

Questo è ciò per cui uso l'indicatore. Sono reinizializzati. Il file non è affatto un'opzione, è lento ed è difficile fornire una buona sincronizzazione. Meglio usareResourceCreate in questo caso.Ma tutto questo non è molto conveniente. Se ho decine di array, alcuni dei quali con diversi Mb, devo scrivere almeno due funzioni di lettura e scrittura, creare un gestore aOnDeinit. Ho già sperimentato tutto questo, ho affrontato il problema della sincronizzazione, perché le risorse e i file hanno le loro vite separate nel multithreading. Perché fare una gobba quando non c'è abbastanza possibilità di non reinizializzare a certi eventi, nel mio caso il cambio di orario.
 
Nikolai Semko:

Indicatore e lo uso. Reinizializzato. Il file non è affatto un'opzione, è lento ed è difficile fornire una sincronizzazione di qualità. Meglio usareResourceCreate in questo caso.Ma tutto questo non è molto conveniente. Se ho decine di array, alcuni dei quali con diversi Mb, devo scrivere almeno due funzioni di lettura e scrittura, creare un gestore aOnDeinit. Ho già sperimentato tutto questo, ho affrontato il problema della sincronizzazione, perché le risorse e i file hanno le loro vite separate nel multithreading. Non so perché mi sono preoccupato quando voglio semplicemente evitare la reinizializzazione di qualche evento particolare, nel mio caso era un cambio di orario.
Larisposta è qui.
 
Artyom Trishkin:

È esattamente il contrario:



Grazie, non sapevo dell'EA!
Ma cavolo, se ho bisogno di quel chip nell'indicatore!

 
Koldun Zloy:

Per esempio, così:


grazie per l'esempio, ma creare un oggetto di tipo complesso a causa di un singolo array è esattamente ciò che non voglio, sembra tutto codice inutile ))
 
fxsaber:

Non è quello che è stato chiesto, ma forse questo farebbe comodo all'autore della domanda, a cui c'è una risposta inequivocabile: NESSUNO.

Non c'è nessun rifiuto di farlo in Service Desk



speriamo che introducano questa caratteristica, anche se sarebbe più usuale introdurre un puntatore per gli array
 
Artyom Trishkin:

È esattamente il contrario:

Oh, cavolo... Sì, sono stato guidato esattamente dal tuo post, ho solo fatto confusione:)