Erros, bugs, perguntas - página 727

 
Renat:

Foi levantadauma questão sobre o FileReadArray, e na explicação que dei, assinalei que tem uma característica que lê o tipo errado de dados.

daí a questão: como é que esta característica se enquadra na segurança linguística?

Se estiver tudo bem, porque não fazer uma função padrão para converter um campo de bits para o tipo certo?

Em geral, ou pôr as coisas em ordem e remover esta característica ou deixar que as pessoas implementem uma longa aritmética.

Aqui está um exemplo desta funcionalidade através de um ficheiro de limpeza:

double arr[]; ulong arr1[]; 
//+------------------------------------------------------------------+
void OnStart()
  {   
   ArrayResize(arr,1); arr[0]=123.2564;
   WriteArrayFile();
   ReadArrayFile();
   Print(arr1[0]);
  }
//+------------------------------------------------------------------+
void WriteArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_WRITE|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileWriteArray(han,arr);              
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
void ReadArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_READ|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileReadArray(han,arr1);             
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
 
Paranóia detectada.
 
TheXpert:
Paranóia detectada.

Deveria pensar bem.

Na verdade, sou a favor de a considerar segura e de fazer a sua contraparte sem utilizar um ficheiro, mas directamente.

Mas se a MQ a reconhece como insegura, então também deve ser removida da função.

ZZZY A propósito, talvez eu hoje tenha realmente carregado algo de errado, não respondi a duas perguntas, esclarecem-me, apontam o dedo para onde estúpido.

 
Urain:

Aqui está um exemplo desta correcção através de ficheiro com a limpeza do parafuso:


Porquê analisar um ficheiro? É mais fácil do que isso. Leia sobre Conversão de tipo de dados de estruturas simples
 
 
Renat:
Ao testar em cruzamentos há uma modelação precisa e outras taxas para uma correcta conversão dos lucros e requisitos de margem.
Tente executar a visualização e compreenderá imediatamente a quantidade de cálculos com base no número de caracteres de fundo no relógio de mercado.
Posso compreender tudo, mas uma diferença de 13,7x na velocidade... Bem, 2x está bem. E a alegria dos cachorros de abrir a velocidade de teste de preços nas majors foi substituída por uma desilusão lacrimogénea nas cruzes. E em vez de usar 30 agentes remotos nativos, teremos novamente de subornar os cludes. Abismo!
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Urain:

Desenvolver o pensamento.

Na verdade, sou a favor de a considerar segura e de fazer a sua contraparte sem utilizar um ficheiro, mas directamente.

Mas se a MQ a reconhece como insegura, também deve ser removida da função.

ZZZY A propósito, talvez eu hoje esteja realmente a balbuciar algo que não está bem, não respondi a duas perguntas, você realmente esclarece-me, aponte o dedo para onde está burro.

O ficheiro em si é impessoal. Não se sabe de antemão de que forma este ficheiro foi escrito. Por outras palavras, a funcionalidade descrita acima não pode ser banida. É claro que se pode detectar organolepticamente um ficheiro de texto puro, e há alguns problemas com Unicode e Ansi-encodings.

Assim, pode ler qualquer ficheiro à vontade. E não conduzirá a nenhuma situação perigosa, porque os tamanhos das leituras (e das escrituras também) são controlados. Não será capaz de quebrar a pilha. Não será possível obter um endereço na memória do processo de forma alguma.

 
muallch:
Posso compreender isso, mas uma diferença de velocidade 13,7 vezes. Bem, 2x está bem. E a alegria dos cachorros de testar a velocidade a preços de abertura nas majors foi substituída por um desânimo lacrimogéneo nas cruzes. E em vez de usar 30 agentes remotos nativos, teremos novamente de subornar os cludes. Abismo!
Estamos a analisar esta questão. Os testes de abertura de preços nas cruzes serão acelerados.
 
stringo:

O ficheiro em si é um ficheiro impessoal. Não se sabe de antemão como é que o ficheiro foi registado. Por outras palavras, a funcionalidade descrita acima não pode ser proibida. É claro que é possível detectar organolepticamente um ficheiro de texto puro, e há nuances com codificações Unicode e Ansi.

Assim, pode ler qualquer ficheiro à vontade. E não conduzirá a nenhuma situação perigosa, porque os tamanhos das leituras (e das escrituras também) são controlados. Não será capaz de quebrar a pilha. Não se pode obter um endereço na memória do processo de forma alguma.

Então não vejo razão para não introduzir uma função de leitura directa sem conversão de tipo, ala

double a=123.2564; ulong b;

b=Byte(a,TYPE_ULONG);
Print(b);
//--- результат 4638373815016729713

Coloque-o numa função e tudo estará seguro.

 
Urain:

Então não vejo razão para não introduzir uma função de leitura directa de dados sem conversão de tipo, ala

Coloque-o numa função e tudo estará seguro.

estrutura __duplo { duplo v; }

estrutura __long v; }

__duplo a; __longo b;

a.v=123.456;

b=a;

b.v=4638373815016729713;

não é difícil.

+ ler para além das ligações de topo https://www.mql5.com/ru/articles/364


E a conversão de um tipo para outro pode ser feita ou usando macros ou funções.

mas não há nada de realmente complicado nisso.

Избавляемся от балласта самодельных DLL
Избавляемся от балласта самодельных DLL
  • 2012.01.31
  • o_O
  • www.mql5.com
Если MQL5-программисту недостаточно функционала языка, он вынужден обращаться к дополнительным инструментам. Для этого приходится использовать другой язык программирования и создавать промежуточную DLL. В MQL5 имеется механизм представления разных типов данных с помощью структур и передачи их в API, но к сожалению, MQL5 не отвечает нам на вопрос о том, как вытянуть данные из принятого указателя. В данной статье мы поставим точку в этом вопросе и покажем простые механизмы обмена сложными типами данных и работе с ними.