Função - Método para ordenar uma série de estruturas. Prêmio 10$ - página 4

 
Sergey Dzyublik:

Qual é o problema?

Além da função em si, você tem que fazer um typedef sobre ela e criar uma variável, apenas para passar a função como parâmetro, que é o que você faz sob a macro lambda.

 
fxsaber:

Verifiquei, está funcionando.

Infelizmente não (((.


 
Vladimir Pastushak:

Infelizmente não (((.

Você não tem classificação trabalhando no MT4.
Portanto, insira a chamada de classificação sugerida para MT4 na compilação condicional e deixe o código MT5 intocado.

 
Vladimir Pastushak:

Infelizmente não (((.


Atualize seu MT4.

 

Verifiquei o código no MT4, todos os trabalhos

2020.04.21 23:27:35.728 Roteiro t EURUSD,H1: removido

2020.04.21 23:27:35.726 t EURUSD,H1: razão uninit 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: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:

Ordenação por tempo.

2020.04.21 23:27:35.726 t EURUSD,H1: 1.08503 1.085061.08411.084292020.04.21 21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00: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:

Classificação por alto valor.

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.0850220.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:

Classificação por preço aberto.

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: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:

Barras sem triagem - como recebidas.

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

2020.04.21 23:27:34.279 Roteiro t EURUSD,H1: carregado com sucesso

MT4 construir 1262

descompacte-o assim:

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:

No código fornecido esqueci de embrulhar a função principal ArraySortStruct de volta em macro, que seria possível especificar o campo de ordenação.
Mas o autor do tema é teimosamente silencioso, aparentemente sou o único que precisa...

 

Algoritmo:

1. Estrutura = Cordão. Primeira etapa.

2. Classificar os cordões. Segundo laço (complexo, bolha).

3. String = Estrutura. A terceira etapa.

Quase não é mais rápido.

Motivo:

1. As estruturas são representadas no sistema como cordas, somente o alinhamento deve ser levado em conta (byte por byte).

2. A velocidade de processamento de cordas é muito maior do que a velocidade de processamento de outros tipos de dados.

3. Apenas uma operação de comparação de duas filas é realizada em loop. Os valores de campo não precisam ser comparados.

Eu costumava fazer isso no Clarion no início dos anos 90. Funcionou.

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

No código fornecido esqueci de embrulhar a função principal ArraySortStruct de volta em macro, que seria possível especificar o campo de ordenação.
Mas o autor do tema é teimosamente silencioso, aparentemente sou o único que precisa...

Eu ainda não olhei para ele. Eu não entendo macros. Eu ficaria grato pelo código completo.
 
Алексей Тарабанов:

Eu fiz isso no início dos anos 90 em um Clarion. Ele voou.

para as lágrimas! )))

lembro-me do primeiro semestre do 1º curso e das primeiras aulas práticas em algoritmos e programação.... eu nem me lembro do que aprendemos, acho que aprendemos pascal no início, mas as lições estavam nas aulas de terminal IBM, eu compilei o programa em 15-20 linhas... bem, primeiro 2-3 minutos, depois até 20 minutos quando as pessoas faziam muita digitação e erros de sintaxe

a partir do segundo semestre, estávamos trabalhando em 486s


estava voando! ))))


SZS: se não me engano, foi o EC-1035 .... voou!

 
Igor Makanu:

para as lágrimas! )))

Lembro-me do primeiro semestre do 1º ano e das primeiras sessões práticas sobre algoritmos e programação.... não consigo nem me lembrar o que estávamos estudando, acho que era Pascal no início, mas as aulas eram em computadores IBM nas aulas de terminal, compilando o programa de 15-20 linhas... bem, no início estudamos por 2-3 minutos, depois até 20 minutos quando as pessoas faziam muitos erros de digitação e sintaxe

a partir do segundo semestre, estávamos trabalhando em 486s


voou! ))))


SZY: Se não estou enganado, foi o EC-1035 .... que voou!

Comecei no primeiro computador digital eletrônico pessoal do mundo em 1976. Foi projetado pelo Instituto Kyiv de Cibernética da Academia de Ciências da República Social Soviética Ucraniana. Depois veio o Minsk-32, e depois o CE.

Razão: