Obter o número de casas decimais de quaisquer números (não apenas citações) contornando Dígitos() em MQL4 e MQL5 - página 18

 
Dmitry Fedoseev:

Aparentemente, mas não desespere, nem tudo está perdido, acredito em você.

Bem, para que serve isto aqui? Continue, por favor.

 
fxsaber:

Sem ir além do MQL.

#import "msvcrt.dll"
  long memcpy(MqlTick &dst[], int &src[], uint cnt);
  long memcpy(int &dst[], MqlTick &src[], uint cnt);
#import

int TicksToIntArray_thexpert( MqlTick &Ticks[], int &Array[] )
{
  const int Size1 = ArraySize(Ticks);
  const int Size2 = ArrayResize(Array, Size1 * sizeof(MqlTick) / sizeof(int));

  memcpy(Array, Ticks, Size2 * sizeof(int));
  
  return Size2;
}

// Перевод массива int[] в массив тиков.
int IntArrayToTicks_thexpert( int &Array[], MqlTick &Ticks[] )
{
  const int Size1 = ArraySize(Array);
  const int Size2 = ArrayResize(Ticks, Size1 * sizeof(int) / sizeof(MqlTick));

  memcpy(Ticks, Array, Size2 * sizeof(MqlTick));
  
  return Size2;
}

Time[TicksToIntArray_fxsaber2(TicksIn,Array)] = 140528
Time[IntArrayToTicks_fxsaber2(Array,TicksOut)] = 159885
true
Time[TicksToIntArray_thexpert(TicksIn,Array2)] = 58099
Time[IntArrayToTicks_thexpert(Array2,TicksOut2)] = 65944
true
 
TheXpert:

Obrigado, até agora tudo bem.

https://www.mql5.com/ru/forum/287618/page18#comment_9813963
TicksToIntArray_thexpert
Time[TicksToIntArray(TicksIn,Array)] = 80994
IntArrayToTicks_thexpert
Time[IntArrayToTicks(Array,TicksOut)] = 80410
true

https://www.mql5.com/ru/forum/287618/page18#comment_9814108
TicksToIntArray_fxsaber4
Time[TicksToIntArray(TicksIn,Array)] = 102718
IntArrayToTicks_fxsaber4
Time[IntArrayToTicks(Array,TicksOut)] = 103835
true


A variante DLL é 20% mais rápida que a melhor variante MQL, que provavelmente não pode mais ser acelerada (não saiu uma simples).

Arquivos anexados:
 
Eu pessoalmente não utilizaria dlls, mesmo em nome de um ganho de 20%, pois reduz a segurança pelo menos, aumenta a complexidade de uso e parece ambíguo. Ao usar o software de outra pessoa, é melhor desativar as chamadas dll por completo.
 

fxsaber:

A variante DLL é 20% mais rápida do que a melhor variante MQL, que provavelmente não pode mais ser acelerada (não uma simples).

Seu código pode ser acelerado se você aumentar o tamanho da matriz de 128 para 10000.

Ilya Malev:
Eu pessoalmente não usaria nenhum dll, mesmo para acelerar 20%, porque reduz a segurança pelo menos, aumenta a complexidade do uso e parece ambíguo. Ao usar o software de outra pessoa é melhor desativar completamente as chamadas dll...

Eu coloquei um exemplo mais para ver o quanto mais eficiente é o trabalho sem memória em comparação com as implementações nativas. E para mim 20% de atraso do código nativo é um resultado muito, muito bom.

mas sim -- menos segurança e tudo mais. Mas se você quer velocidade e a quer para si mesmo, você pode)

 
TheXpert:

É essencialmente uma única chamada de função de baixo nível do sistema. Seu código pode ser acelerado ao aumentar o tamanho da matriz de 128 para 10000.

Tentei tamanhos diferentes, é claro. Por alguma razão, eles não afetam o resultado.

 
fxsaber:

Preciso dela para a biblioteca HistoryTicks. Obrigado por participar.

A propósito, você tem algo em suas bibliotecas para transferir corujas da MT4 para a MT5 sem mudar as funções de negociação para trabalho idêntico da MT4 com ordens e histórico de ordens? Por favor, envie-me o link se você o tiver.

 
Ilya Malev:

A propósito, você tem uma em suas bibliotecas para transferir corujas da MT4 para a MT5 sem mudar as funções de negociação para trabalho idêntico da MT4 com ordens e histórico de ordens? Se você tem tal biblioteca, por favor, envie-me o link.

Tenho todas as bibliotecas em meu perfil na seção de Publicações.

 
fxsaber:

No meu perfil, em Publicações, todas as bibliotecas estão espalhadas por aí.

Eu entendo. Eu esperava obter uma resposta de dentro, como ela é implementada e um link, para não ter que procurar lá pessoalmente. De qualquer forma, não importa, eu mesmo escreverei, porque gosto das idéias dos outros e não tanto do código dos outros :)

 
Ilya Malev:

Eu entendo. Eu esperava obter a resposta de um informante quanto à sua completa implementação e uma ligação, para não ter que procurar lá pessoalmente. De qualquer forma, não importa, eu mesmo escreverei, pois gosto das idéias dos outros e não tanto do código dos outros :)

https://www.mql5.com/ru/code/16006


Identidade total. Quando comecei a escrevê-lo, não tinha idéia do número de armadilhas que teria que evitar. Eu não teria tentado novamente.

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...