Funzione - Metodo per ordinare un array di strutture. Premio 10$ - pagina 4

 
Sergey Dzyublik:

Qual è il problema?

Oltre alla funzione stessa, dovete fare un typedef su di essa e creare una variabile, solo per passare la funzione come parametro, che è quello che si fa sotto la macro lambda.

 
fxsaber:

L'ho controllato e funziona.

Purtroppo no ((((.


 
Vladimir Pastushak:

Purtroppo no ((((.

Non hai l'ordinamento in MT4.
Quindi, inserite la chiamata per l'ordinamento suggerito per MT4 nella compilazione condizionale, e lasciate il codice per MT5 intatto.

 
Vladimir Pastushak:

Purtroppo no ((((.


Aggiorna il tuo MT4.

 

Controllato il codice in MT4, tutto funziona

2020.04.21 23:27:35.728 Script t EURUSD,H1: rimosso

2020.04.21 23:27:35.726 t EURUSD,H1: uninit reason 0

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Ordinamento per tempo.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Ordinamento per alto valore.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Ordinamento per prezzo aperto.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1:

Barre senza smistamento - come ricevute.

2020.04.21 23:27:35.726 t EURUSD,H1: inizializzato

2020.04.21 23:27:34.279 Script t EURUSD,H1: caricato con successo

MT4 build 1262

decomprimere in questo modo:

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

Nel codice fornito ho dimenticato di avvolgere la funzione principale ArraySortStruct di nuovo nella macro, che sarebbe possibile specificare il campo di ordinamento.
Ma l'autore del topic è ostinatamente silenzioso, apparentemente sono l'unico che ne ha bisogno...

 

Algoritmo:

1. Struttura = Stringa. Primo ciclo.

2. Ordina array di stringhe. Secondo ciclo (complesso, bolla).

3. Stringa = Struttura. Il terzo ciclo.

Difficile che sia più veloce.

Motivo:

1. Le strutture sono rappresentate nel sistema come stringhe, solo l'allineamento deve essere preso in considerazione (byte per byte).

2. La velocità di elaborazione delle stringhe è molto più alta di quella di altri tipi di dati.

3. Una sola operazione di confronto tra due righe viene effettuata in un ciclo. I valori dei campi non devono essere confrontati.

Lo facevo su Clarion nei primi anni '90. Ha funzionato.

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

Nel codice fornito ho dimenticato di avvolgere la funzione principale ArraySortStruct di nuovo nella macro, che sarebbe possibile specificare il campo di ordinamento.
Ma l'autore del topic è ostinatamente silenzioso, apparentemente sono l'unico che ne ha bisogno...

Non l'ho ancora guardato. Non capisco le macro. Sarei grato per il codice completo.
 
Алексей Тарабанов:

L'ho fatto nei primi anni '90 su una Clarion. Ha volato.

fino alle lacrime! )))

Mi ricordo il primo semestre del 1° corso e le prime lezioni pratiche di algoritmi e programmazione.... Non ricordo nemmeno cosa abbiamo imparato, penso che abbiamo imparato pascal all'inizio, ma le lezioni erano sul terminale IBM classi, ho compilato il programma a 15-20 linee... bene, prima 2-3 minuti, poi fino a 20 minuti quando la gente ha fatto un sacco di errori di digitazione e sintassi

dal secondo semestre, stavamo lavorando sui 486


ha volato! ))))


SZS: se non mi sbaglio era EC-1035 .... che volava!

 
Igor Makanu:

fino alle lacrime! )))

Ho ricordato il primo semestre del 1° anno e le prime sessioni di pratica sugli algoritmi e la programmazione.... Non riesco nemmeno a ricordare cosa stavamo studiando, penso che fosse Pascal all'inizio, ma le lezioni erano su computer IBM nelle classi terminali, compilando il programma di 15-20 linee... beh, all'inizio studiavamo per 2-3 minuti, poi fino a 20 minuti quando la gente faceva un sacco di errori di digitazione e sintassi

dal secondo semestre, stavamo lavorando sui 486


stava volando! ))))


SZY: Se non mi sbaglio, era l'EC-1035 .... che volava!

Ho iniziato sul primo computer digitale elettronico personale del mondo nel 1976. È stato progettato dall'Istituto di Cibernetica di Kyiv dell'Accademia delle Scienze della Repubblica Sociale Sovietica Ucraina. Poi venne il Minsk-32, e poi la CE.