[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 89

 
keep87:
non possibile

è possibile))

Per esempio, si potrebbe fare in modo che l'EA carichi l'array nelle variabili globali del terminale e poi lo legga da lì.

 
alsu:
Decidete cosa volete che sia l'output. Se il valore della macchina è di 5 barre indietro, allora

o identico

Se è così,

sarà sempre EMPTY_VALUE, poiché non c'è nessun polso spostato su queste barre

Capito, grazie!
 
alsu:
Meglio di tutto, non preoccupatevi degli spostamenti nell'EA, prendete solo lo spostamento 0 e il numero della barra che volete.
Ho controllato ora con il tester, risulta che il trade si apre 5 candele dopo aver attraversato le medie mobili, e non è questo il caso... Ho capito cosa si può fare, spostare l'altra MA 5 candele in avanti, allora il segnale è corretto...)
 
ierehon:
Ho controllato ora con il tester, risulta che il trade si apre 5 candele dopo che le medie mobili si sono incrociate, e questo non è lo stesso... Ho capito cosa fare, spostare un'altra MA 5 candele in avanti, poi il segnale è corretto...)

è la stessa cosa))

barra zero della MA spostata di 5 barre a destra = quinta barra della MA non spostata

 
keep87:
non può. È possibile segnare manualmente i dati da un array all'altro all'interno di EA se non cambiano da un'ottimizzazione all'altra, per il tempo dei test.
Ma in questo caso, MT dovrà leggere l'array dal file ogni volta(?), ma non da uno separato, ma dal codice.
- Ci sarà un guadagno in questo caso?
 
alsu:

è possibile))

Per esempio, si potrebbe fare in modo che l'Expert Advisor carichi l'array nelle variabili globali del terminale e poi legga da lì.

Gli elementi dell'array possono essere da diverse decine a diverse centinaia e per ogni variabile devono essere dichiarati in anticipo.
Sarà piuttosto difficile da implementare (certo, il compito non è neanche banale).
 
chief2000:
Gli elementi delle matrici possono essere da diverse decine a diverse centinaia, e per ognuno di essi deve essere dichiarata una variabile in anticipo.
È un po' complicato da implementare (certo, anche il compito non è banale).

e allora? Gestite le variabili nel ciclo nello stesso modo in cui gestireste gli elementi dell'array. Esempio di utilizzo:

double a[];
int n;

...
ArrayResize(a,n);
...

//запись массива в глобальные переменные

string name;
for(i=0;i<n;i++)
{
   name = StringConcatenate("__ARRAY_",i);
   GlobalVariableSet(name,a[i]);
}

//чтение в массив из глобальных

int gv = GlobalVariablesTotal();
int index;

for(i=0;i<gv;i++)
{
   name = GlobalVariableName(i);
   if(StringFind(name,"__ARRAY_")==0)
   {
      index = StrToInteger(StringSubstr(name,8));
      if(index>=0&&index<n) a[index]=GlobalVariableGet(name);
      
      //опционально - если хотим очистить список
      //GlobalVariableDel(name);
   }
}


non potrebbe essere più semplice))

 
alsu:

E allora? Gestite le variabili nel ciclo nello stesso modo in cui gestireste gli elementi dell'array. Esempio di utilizzo:

non potrebbe essere più semplice))

Nella mia memoria, ho gestito un paio di migliaia di variabili in questo modo, e non ho notato alcun rallentamento. Per quantità maggiori (centinaia di migliaia di articoli o più), di solito cerco di usare MySQL.
 
alsu:
Nella mia memoria ho lavorato in questo modo con un paio di migliaia di variabili, e non ho riscontrato alcun ritardo. Per quantità maggiori (centinaia di migliaia di articoli o più), di solito cerco di usare MySQL.
GRAZIE MILLE!
 

Potete consigliarmi, c'è un file csv con dati nel formato 1.33027; 1.33023 e così via.

Poi leggere questo file ma per qualche motivo i dati vengono letti con una precisione di 4 cifre e ho bisogno di con 5.

Leggere in modi diversi e

FileReadString и FileReadDouble и FileReadInteger

non aiuta