Errori, bug, domande - pagina 727

 
Renat:

È stata sollevatauna domanda su FileReadArray, e nella spiegazione ho sottolineato che ha una funzione che legge il tipo sbagliato di dati.

Da qui la domanda: come si concilia questa caratteristica con la sicurezza della lingua?

Se va bene, perché non fare una funzione standard per convertire un campo bit nel tipo giusto?

In generale, o mettete ordine e rimuovete questa caratteristica o lasciate che le persone implementino l'aritmetica lunga.

Ecco un esempio di questa funzione attraverso un file di cancellazione:

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);
     }
  }
//+------------------------------------------------------------------+
 
Rilevata la paranoia.
 
TheXpert:
Rilevata la paranoia.

Dovresti pensarci bene.

In realtà sono favorevole a ritenerlo sicuro e a fare la sua controparte senza usare un file, ma direttamente.

Ma se MQ lo riconosce come non sicuro, allora dovrebbe essere rimosso anche dalla funzione.

ZZZY A proposito forse davvero lug qualcosa di sbagliato oggi, non ho risposto a due domande, mi illumini, puntare il dito dove stupido.

 
Urain:

Ecco un esempio di questa correzione tramite file con la pulizia della vite:


Perché passare attraverso un file? È più facile di così. Leggi la conversione del tipo di dati di strutture semplici
 
 
Renat:
Nei test sui cross c'è una modellazione accurata e altri tassi per una corretta conversione dei profitti e dei requisiti di margine.
Provate ad eseguire la visualizzazione e capirete immediatamente la quantità di calcoli basati sul numero di caratteri di sfondo nel marketwatch.
Posso capire tutto, ma una differenza di velocità di 13,7x... Beh, 2x va bene. E la gioia pucciosa del prezzo di apertura che testa la velocità sulle major è stata sostituita da uno sconforto lacrimevole sui cross. E invece di usare 30 agenti remoti nativi, dovremo corrompere di nuovo i cludes... Abisso!
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Urain:

Sviluppare il pensiero.

In realtà sono favorevole a ritenerlo sicuro e a fare la sua controparte senza usare un file, ma direttamente.

Ma se MQ lo riconosce come non sicuro, dovrebbe essere rimosso anche dalla funzione.

ZZZY A proposito forse sono davvero balbettando oggi qualcosa di non giusto, non ho risposto a due domande, è davvero illuminare me, puntare il dito dove muto.

Il file stesso è impersonale. Non si sa a priori in che modo è stato scritto questo file. In altre parole, la funzionalità descritta sopra non può essere vietata. Naturalmente, è possibile rilevare organoletticamente un file di testo puro, e ci sono alcuni problemi con Unicode e codifiche Ansi.

Così potete leggere qualsiasi file a volontà. E non porterà a nessuna situazione pericolosa, perché le dimensioni delle letture (e anche delle scritture) sono controllate. Non sarai in grado di rompere la pila. Non sarete in grado di ottenere un indirizzo nella memoria del processo in nessun modo.

 
muallch:
Posso capirlo, ma una differenza di velocità di 13,7 volte... Beh, 2x va bene. E la gioia pucciosa di testare la velocità a prezzi di apertura sulle major è stata sostituita da uno sconforto lacrimevole sui cross. E invece di usare 30 agenti remoti nativi, dovremo di nuovo corrompere i cludi... Abisso!
Stiamo esaminando questo problema. Il test dei prezzi di apertura sui cross sarà accelerato.
 
stringo:

Il file stesso è un file impersonale. Non si sa in anticipo come il file sia stato registrato. In altre parole, la funzionalità descritta sopra non può essere vietata. È ovviamente possibile rilevare organoletticamente un file di testo puro, e ci sono sfumature con le codifiche Unicode e Ansi.

Così potete leggere qualsiasi file a volontà. E non porterà a nessuna situazione pericolosa, perché le dimensioni delle letture (e anche delle scritture) sono controllate. Non sarai in grado di rompere la pila. Non si può ottenere un indirizzo nella memoria del processo in nessun modo.

Allora non vedo alcuna ragione per non introdurre una funzione di lettura diretta senza conversione di tipo, ala

double a=123.2564; ulong b;

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

Mettetelo in una funzione e tutto sarà al sicuro.

 
Urain:

Allora non vedo alcuna ragione per non introdurre una funzione di lettura diretta dei dati senza conversione di tipo, ala

Mettetelo in una funzione e tutto sarà al sicuro.

struct __double { double v; }

struct __long { long v; }

__double a; __long b;

a.v=123.456;

b=a;

b.v=4638373815016729713;

non difficile.

+ leggere oltre ai top link https://www.mql5.com/ru/articles/364


E la conversione da un tipo all'altro può essere fatta usando macro o funzioni.

ma non c'è niente di veramente complicato.

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