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

 
Yevhenii Levchenko:

Cosa ho da dire: succede ed è anche dovuto a qualche tipo di crepa nelle citazioni o sto scrivendo qualcosa di sbagliato?

Vuoi che ti dica che il tester MT4 non funziona correttamente? - Non sentirete il vostro screenshot con errori nei tick o nelle barre - il tester genererà tutto da ogni possibile basso TF

gli sviluppatori hanno sempre risposto a domande come la tua: scrivi i codici correttamente!

Ti ho mostrato un esempio di come scrivere il tuo codice.... Non posso vederlo, e non è interessante :))) - occupato a leggere articoli, mi metterò al lavoro sui miei codici

 
Igor Makanu:

Vuoi che ti dica che il tester MT4 non funziona correttamente? - Non sentirete il vostro screenshot con errori in tick o barre - il tester genererà tutto da ogni possibile basso TF

gli sviluppatori hanno sempre risposto a domande come la tua: scrivi i codici correttamente!

Ti ho mostrato un esempio di come scrivere il tuo codice.... Non posso vederlo, e non è interessante :))) - occupato a leggere articoli, mi metterò al lavoro sui miei codici

Ok! Grazie

 
Yevhenii Levchenko:

Ok! Grazie

Potrebbe essere utile: https://www.mql5.com/ru/forum/165405#comment_5602248

Архивные котировки от Metaquotes
Архивные котировки от Metaquotes
  • 2017.01.02
  • www.mql5.com
Ситуация: В терминале MT4 по клавише F2 можно закачать архивные котировки. Они нужны всем, кто разрабатывает свою торговую систему...
 

Buon pomeriggio, compagni. Sto imparando a scrivere cose semplici in mql4, ora sto cercando di lavorare con gli array. Non riesco a capire l'errore in questo pezzo di codice:

   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a+=1;
               CrossBarsNum[(d-d1)/0.0001,0] = d;
               CrossBarsNum[(d-d1)/0.0001,1] = a;

Va in crash sulle ultime due righe con l'espressione intera prevista. Per quanto ho capito, un indice in un array può essere impostato usando una formula. È necessario cercare attraverso le stringhe dell'array e registrare sequenzialmente le virgolette e il numero di barre che contengono una tale virgoletta. La formula dà un valore intero (da 0 in su con incrementi di uno), quindi qual è l'errore?

 
Azat0t:

Buon pomeriggio, compagni. Sto imparando a scrivere cose semplici in mql4, ora sto cercando di lavorare con gli array. Non riesco a capire l'errore in questo pezzo di codice:

Va in crash sulle ultime due righe con l'espressione intera prevista. Per quanto ho capito, un indice in un array può essere impostato usando una formula. È necessario cercare attraverso le stringhe dell'array e registrare sequenzialmente le virgolette e il numero di barre che contengono una tale virgoletta. La formula restituisce un valore intero (da 0 in su a passi di uno), quindi qual è l'errore?

Rendere l'indice dell'array un tipo int, non doppio. L'indice dell'array dovrebbe essere un intero.

 
Sergey Basov:

Potrebbe essere utile: https://www.mql5.com/ru/forum/165405#comment_5602248

Grazie! L'ho fatto praticamente sempre. Dopo il caricamento, ho premuto "Refresh" - le citazioni erano diverse. Ho dimenticato di aver fissato un limite di tempo per il lavoro del robot. :)
 
Azat0t:

Buon pomeriggio, compagni. Sto imparando a scrivere cose semplici in mql4, ora sto cercando di lavorare con gli array. Non riesco a capire l'errore in questo pezzo di codice:

Va in crash sulle ultime due righe con l'espressione intera prevista. Per quanto ho capito, un indice in un array può essere impostato usando una formula. È necessario cercare attraverso le stringhe dell'array e registrare sequenzialmente le virgolette e il numero di barre che contengono una tale virgoletta. La formula restituisce un valore intero (da 0 in su a passi di uno), quindi dov'è l'errore?

Usare una conversione esplicita del tipo

               CrossBarsNum[int((d-d1)/0.0001),0] = d;
               CrossBarsNum[int((d-d1)/0.0001),1] = a;
 
Grazie, ho corretto l'errore, ma ancora nessun risultato: l'array non si riempie. A cosa può essere collegato?
   int handle;
   handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t');
   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a++;
               CrossBarsNum[int((d-d1)/0.0001),0] = a;
               CrossBarsNum[int((d-d1)/0.0001),1] = d;
     } 
   FileWrite(handle, CrossBarsNum[11,1], d, d1, d2, a, ArraySize(CrossBarsNum));
   //FileWriteArray(handle, CrossBarsNum, 0, WHOLE_ARRAY);
   FileClose(handle);
   return(0);
Le variabili d, d1, d2 funzionano esattamente
 
Azat0t:
Grazie, ho corretto l'errore, ma ancora nessun risultato: l'array non è riempito. A cosa può essere collegato? Le variabili d, d1, d2 funzionano esattamente
La dimensione dell'array è sempre zero nella prima dimensione. Non ho visto ArrayResize() da nessuna parte
 
Azat0t:
Grazie, ho corretto l'errore, ma ancora nessun risultato: l'array non è riempito. Le variabili d, d1, d2 funzionano esattamente

Non dimenticare di mettere

#property strict
Correggete tutti gli errori e forse tutto si risolverà. Imparate ad usare il debugger. Con l'esecuzione passo dopo passo tutti i problemi sono rivelati.