Top2n: Bem, sim, é bidimensional, não é assim que eu o digo, aparentemente não é uma matriz mas uma matriz. Será que uma matriz implica multidimensionalidade?
Concordo. Não foi isso que foi dito, além de ter sido mal compreendido.
O que está a travar neste código não é a escrita de uma matriz mas sim um loop in a loop.
Alexey Viktorov: Concordo. Não foi isso que foi dito e foi mal compreendido.
O que está a travar neste código não é a escrita de uma matriz mas sim um loop in a loop.
É necessário portar para outro ambiente de programação, ou este não é um problema comum a todos os tipos de linguagens? Qual pode ser a solução para acelerar?
Se um laço e aumentar o valor da variável a partir do laço eliminado
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);
Posso tê-lo verificado mas não quero incomodar o computador - se não acelerar, será colocado stress extra no disco rígido novamente))))
É necessário portar para outro ambiente de programação, ou este não é um problema comum a todos os tipos de linguagens? Qual pode ser a solução para acelerar?
Se um laço e aumentar o valor da variável de um laço apagado nele, irá acelerar?
Eu poderia verificá-lo, mas não quero torturar o computador, se não for acelerado, voltará a colocar tensão extra no disco rígido))))
E não se pode escrever a matriz depois do laço? Só o pode fazer em cada linha? Estou a referir-me à primeira variante, em que o laço está no laço.
Vitalie Postolache: Não se pode escrever a matriz depois do laço? É possível fazê-lo apenas em cada linha? Estou a referir-me à primeira variante em que o laço está no laço.
Um conjunto deste tamanho não caberia na RAM atribuída.
Claro que, além disso, é possível inserir um contador e escrever neste contador, não cada linha separadamente, mas é pouco provável que acelere tanto o processo, que seja perceptível sem medição.
Alexey Viktorov: Um conjunto deste tamanho não caberia na RAM atribuída.
Claro que, além disso, pode inserir um contador e gravar por este contador, não cada fila separadamente, mas é pouco provável que acelere tanto o processo que será perceptível sem medição.
Por favor, informe, a documentação diz (e o compilador também) que:"AbandeiraAS_SERIES não pode ser hasteada para arrays multidimensionais"
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 triagem são conceitos completamente diferentes.
1 - muda a direcção da indexação das células da matriz sem alterar o seu conteúdo e 2 - muda o conteúdo das células sem alterar a sua indexação para que sejam ordenadas em ordem ascendente ou descendente.
Além disso, a documentação diz que a matriz só pode ser ordenada pela primeira dimensão.
Alexey Viktorov: AS_SERIES e triagem são conceitos completamente diferentes.
1 - muda a direcção da indexação das células da matriz sem alterar o seu conteúdo, e 2 - sem alterar a indexação muda o conteúdo das células para que sejam ordenadas em ordem ascendente ou descendente.
Além disso, a documentação diz que a matriz só pode ser ordenada pela primeira dimensão.
Aqui, ordena-se por ordem ascendente
ArraySort(mas);
Como é que o inverto agora? Tem de estar em ordem decrescente, está a ordenar lotes.
Como é que o inverto agora? Precisa dele por ordem decrescente, ele classifica os lotes.
Uau. Esta é a minha primeira vez que olho para a ordenação em mql5. Estou a usar mql4 de memória. Se for este o caso, pode inverter o ciclo de leitura. Se precisar de procurar um valor específico, devolverá o índice da matriz, independentemente da forma como o classifica.
E a opção mais idiota é reescrever todo o conjunto na ordem inversa. Vale a pena?
Não são 10.000 x 10.000 bidimensionais?
e tudo isso...
Bem, sim, é bidimensional, não é assim que eu o digo, aparentemente não é uma matriz mas uma matriz. Será que uma matriz implica multidimensionalidade?
O que está a travar neste código não é a escrita de uma matriz mas sim um loop in a loop.
Concordo. Não foi isso que foi dito e foi mal compreendido.
O que está a travar neste código não é a escrita de uma matriz mas sim um loop in a loop.
É necessário portar para outro ambiente de programação, ou este não é um problema comum a todos os tipos de linguagens? Qual pode ser a solução para acelerar?
Se um laço e aumentar o valor da variável a partir do laço eliminado
{
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);
Posso tê-lo verificado mas não quero incomodar o computador - se não acelerar, será colocado stress extra no disco rígido novamente))))
É necessário portar para outro ambiente de programação, ou este não é um problema comum a todos os tipos de linguagens? Qual pode ser a solução para acelerar?
Se um laço e aumentar o valor da variável de um laço apagado nele, irá acelerar?
Eu poderia verificá-lo, mas não quero torturar o computador, se não for acelerado, voltará a colocar tensão extra no disco rígido))))
Não se pode escrever a matriz depois do laço? É possível fazê-lo apenas em cada linha? Estou a referir-me à primeira variante em que o laço está no laço.
Claro que, além disso, é possível inserir um contador e escrever neste contador, não cada linha separadamente, mas é pouco provável que acelere tanto o processo, que seja perceptível sem medição.
Um conjunto deste tamanho não caberia na RAM atribuída.
Claro que, além disso, pode inserir um contador e gravar por este contador, não cada fila separadamente, mas é pouco provável que acelere tanto o processo que será perceptível sem medição.
Por favor, informe, a documentação diz (e o compilador também) que:"AbandeiraAS_SERIES não pode ser hasteada para arrays multidimensionais"
Pergunta: Como posso ordenar uma matriz em 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 работает
... здесь работа с массивом и основной код
}Por favor, informe, a documentação diz (e o compilador também) que:"A bandeiraAS_SERIES não pode ser hasteada para arrays multidimensionais".
Pergunta: como ordenar a matriz:
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 - muda a direcção da indexação das células da matriz sem alterar o seu conteúdo e 2 - muda o conteúdo das células sem alterar a sua indexação para que sejam ordenadas em ordem ascendente ou descendente.
Além disso, a documentação diz que a matriz só pode ser ordenada pela primeira dimensão.
AS_SERIES e triagem são conceitos completamente diferentes.
1 - muda a direcção da indexação das células da matriz sem alterar o seu conteúdo, e 2 - sem alterar a indexação muda o conteúdo das células para que sejam ordenadas em ordem ascendente ou descendente.
Além disso, a documentação diz que a matriz só pode ser ordenada pela primeira dimensão.
Aqui, ordena-se por ordem ascendente
Como é que o inverto agora? Tem de estar em ordem decrescente, está a ordenar lotes.
Aqui, ordena-se por ordem ascendente
Como é que o inverto agora? Precisa dele por ordem decrescente, ele classifica os lotes.
E a opção mais idiota é reescrever todo o conjunto na ordem inversa. Vale a pena?
Aqui, ordena-se por ordem ascendente
Como é que o inverto agora? Precisa dele por ordem decrescente, ele classifica os lotes.
E se, após a classificação, alterar a ordem de indexação usando o ArraySetAsSeries?
Depois é assim: