Alexey Viktorov: D'accordo. Non è quello che è stato detto ed è stato frainteso.
Ciò che frena in questo codice non è la scrittura di un array ma un ciclo in un ciclo.
È necessario fare il porting a un altro ambiente di programmazione, o questo non è un problema comune a tutti i tipi di linguaggio? Quale può essere la soluzione per accelerare?
Se un ciclo e aumentare il valore della variabile dal ciclo cancellato
for(int q=0; q<ARRAY_SIZE_X*ARRAY_SIZE_Y; q++) // Перебор по периоду, колонка X { int arr++ if(arr=ARRAY_SIZE_X) {z++;arr=0;}
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA } //--- запишем данные массива в конец файла FileTell IsFileLineEnded FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arra);
Potrei averlo controllato, ma non voglio disturbare il computer - se non accelera, lo stress extra sarà messo di nuovo sul disco rigido)))
È necessario passare a un altro ambiente di programmazione, o questo non è un problema comune a tutti i tipi di linguaggio? Quale può essere la soluzione per accelerare?
Se si fa un ciclo e si aumenta il valore della variabile del ciclo cancellato in esso, si accelera?
Potrei controllarlo, ma non voglio torturare il computer, se non è accelerato, metterà di nuovo sotto stress il disco rigido)))
E non puoi scrivere l'array dopo il ciclo? Si può fare solo su ogni linea? Mi riferisco alla prima variante, dove il ciclo è nel ciclo.
Vitalie Postolache: Non puoi scrivere l'array dopo il ciclo? È possibile farlo solo su ogni linea? Mi riferisco alla prima variante in cui il ciclo è nel ciclo.
Un array di queste dimensioni non entrerebbe nella RAM allocata.
Naturalmente, si può anche inserire un contatore e scrivere su questo contatore, non su ogni linea separatamente, ma è improbabile che acceleri così tanto il processo da essere percepibile senza misurazioni.
Alexey Viktorov: Un array di queste dimensioni non entrerebbe nella RAM allocata.
Naturalmente, si può anche inserire un contatore e registrare in base a questo contatore, non ogni riga separatamente, ma è improbabile che acceleri così tanto il processo da essere percepibile senza misurazioni.
Per favore, ditemi che la documentazione dice (e anche il compilatore) che:"Il flagAS_SERIES non può essere impostato per gli array multidimensionali"
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
void BySort(double &mas[][3])// выделенное лишнее { // Сортируем по размеру от большего к меньшему ArraySort(mas, WHOLE_ARRAY, 0, MODE_DESCEND); // вот это не работает в mql5
ArraySort(mas); ArraySetAsSeries(mas,true); // а при такой записи ругается // это тоже лишнее }
AS_SERIES e l'ordinamento sono concetti completamente diversi.
1 - cambia la direzione dell'indicizzazione delle celle dell'array senza cambiare il loro contenuto e 2 - cambia il contenuto delle celle senza cambiare la loro indicizzazione in modo che siano ordinate in ordine crescente o decrescente.
Inoltre, la documentazione dice che l'array può essere ordinato solo per la prima dimensione.
Alexey Viktorov: AS_SERIES e l'ordinamento sono concetti completamente diversi.
1 - cambia la direzione dell'indicizzazione delle celle dell'array senza cambiare il loro contenuto, e 2 - senza cambiare l'indicizzazione cambia il contenuto delle celle in modo che siano ordinate in ordine crescente o decrescente.
Inoltre, la documentazione dice che l'array può essere ordinato solo per la prima dimensione.
Qui si ordina in ordine crescente
ArraySort(mas);
Come posso invertire la rotta ora? Deve essere in ordine decrescente, sta ordinando i lotti.
Come posso invertire la rotta ora? Ti serve in ordine decrescente, ordina i lotti.
Wow. È la prima volta che guardo l'ordinamento in mql5. Sto usando mql4 a memoria. Se questo è il caso, potete invertire il ciclo di lettura. Se avete bisogno di cercare un valore specifico, restituirà l'indice dell'array, non importa come lo ordinate.
E l'opzione più stupida è riscrivere l'intero array in ordine inverso. Ne vale la pena?
10.000 x 10.000 non è bidimensionale?
e tutto il resto...
Beh, sì, è bidimensionale, non è così che l'ho detto, apparentemente non è una matrice ma un array. Una matrice implica la multidimensionalità?
Ciò che frena in questo codice non è la scrittura di un array ma un ciclo in un ciclo.
D'accordo. Non è quello che è stato detto ed è stato frainteso.
Ciò che frena in questo codice non è la scrittura di un array ma un ciclo in un ciclo.
È necessario fare il porting a un altro ambiente di programmazione, o questo non è un problema comune a tutti i tipi di linguaggio? Quale può essere la soluzione per accelerare?
Se un ciclo e aumentare il valore della variabile dal ciclo cancellato
{
int arr++
if(arr=ARRAY_SIZE_X) {z++;arr=0;}
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
Potrei averlo controllato, ma non voglio disturbare il computer - se non accelera, lo stress extra sarà messo di nuovo sul disco rigido)))
È necessario passare a un altro ambiente di programmazione, o questo non è un problema comune a tutti i tipi di linguaggio? Quale può essere la soluzione per accelerare?
Se si fa un ciclo e si aumenta il valore della variabile del ciclo cancellato in esso, si accelera?
Potrei controllarlo, ma non voglio torturare il computer, se non è accelerato, metterà di nuovo sotto stress il disco rigido)))
Non puoi scrivere l'array dopo il ciclo? È possibile farlo solo su ogni linea? Mi riferisco alla prima variante in cui il ciclo è nel ciclo.
Naturalmente, si può anche inserire un contatore e scrivere su questo contatore, non su ogni linea separatamente, ma è improbabile che acceleri così tanto il processo da essere percepibile senza misurazioni.
Un array di queste dimensioni non entrerebbe nella RAM allocata.
Naturalmente, si può anche inserire un contatore e registrare in base a questo contatore, non ogni riga separatamente, ma è improbabile che acceleri così tanto il processo da essere percepibile senza misurazioni.
Per favore, ditemi che la documentazione dice (e anche il compilatore) che:"Il flagAS_SERIES non può essere impostato per gli array multidimensionali"
Domanda: Come posso ordinare un array in mql5?
void Func()
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с массивом и основной код
}Per favore avvisate, la documentazione dice (e anche il compilatore) che:"Il flagAS_SERIES non può essere impostato per gli array multidimensionali".
Domanda: come ordinare l'array:
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
void BySort(double &mas[][3])// выделенное лишнее
{
// Сортируем по размеру от большего к меньшему
ArraySort(mas, WHOLE_ARRAY, 0, MODE_DESCEND); // вот это не работает в mql5
ArraySort(mas);
ArraySetAsSeries(mas,true); // а при такой записи ругается // это тоже лишнее
}
1 - cambia la direzione dell'indicizzazione delle celle dell'array senza cambiare il loro contenuto e 2 - cambia il contenuto delle celle senza cambiare la loro indicizzazione in modo che siano ordinate in ordine crescente o decrescente.
Inoltre, la documentazione dice che l'array può essere ordinato solo per la prima dimensione.
AS_SERIES e l'ordinamento sono concetti completamente diversi.
1 - cambia la direzione dell'indicizzazione delle celle dell'array senza cambiare il loro contenuto, e 2 - senza cambiare l'indicizzazione cambia il contenuto delle celle in modo che siano ordinate in ordine crescente o decrescente.
Inoltre, la documentazione dice che l'array può essere ordinato solo per la prima dimensione.
Qui si ordina in ordine crescente
Come posso invertire la rotta ora? Deve essere in ordine decrescente, sta ordinando i lotti.
Qui si ordina in ordine crescente
Come posso invertire la rotta ora? Ti serve in ordine decrescente, ordina i lotti.
E l'opzione più stupida è riscrivere l'intero array in ordine inverso. Ne vale la pena?
Qui si ordina in ordine crescente
Come posso invertire la rotta ora? Ti serve in ordine decrescente, ordina i lotti.
Cosa succede se, dopo l'ordinamento, cambiate l'ordine di indicizzazione usando ArraySetAsSeries?
Allora va così: