Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 731
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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ì: