Caratteristiche del linguaggio mql4, sottigliezze e tecniche - pagina 17

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Caratteristiche del linguaggio mql5, consigli e trucchi

fxsaber, 2019.02.20 07:26

I prezzi non sono normalizzati in tutte le modalità Tester!

Per dirla tutta, questo è un bug del Tester.


Se questo vale anche per la modalità Birt, non lo so.

 

Scusami se questo è off-topic (non posso dire di seguire lo sviluppo del linguaggio), potresti spiegare esattamente cosa fa questa linea?

#property strict

Lasciatemi spiegare.

C'è uno script che confronta due prezzi (identici in MT).

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

In MT i prezzi sono uguali, ma la differenza non è uguale a zero (come scritto sopra).

Se questa linea(#property strict) viene rimossa, la differenza è zero.

Perché?

 
Dmitry Rannev :

Scusami se questo è off-topic (non posso dire di seguire lo sviluppo del linguaggio), potresti spiegare cosa fa esattamente questa linea?

Lasciatemi spiegare.

C'è uno script che confronta due prezzi (identici in MT).

In MT i prezzi sono uguali, ma la differenza non è uguale a zero (come scritto sopra).

Se questa linea ( #property strict) viene rimossa, la differenza è zero.

Perché?

"#property strict" è utile solo con mql4. Con mql5 è inutile, poiché la modalità "strict" è sempre vera.
 
Alain Verleyen:
"#property strict" è utile solo con mql4. Con mql5 è inutile perché "strict" è sempre vero.

Stiamo parlando dell'MT4. C'è stata una discussione sopra sul problema della normalizzazione. Stiamo cercando di capire perché alcuni prezzi in MT4 sono uguali e quando vengono confrontati non lo sono. Questa è una continuazione di.

 
Dmitry Rannev:

Stiamo parlando dell'MT4. C'è stata una discussione sopra sul problema della normalizzazione. Stiamo cercando di capire perché alcuni prezzi in MT4 sono uguali e quando vengono confrontati non lo sono. Questa è una continuazione.

Dimitri, questo argomento è consumato fino al midollo. Perdonatemi se rivelo un segreto, ma avete persone come Kirill aka Programmatore, Sergei ... Non dirò il cognome, "è troppo famoso per darlo via" © Sanno tutto...

 
Dmitry Rannev:

Scusami se questo è off-topic (non posso dire di seguire lo sviluppo del linguaggio), potresti spiegare esattamente cosa fa questa linea?

Lasciatemi spiegare.

C'è uno script che confronta due prezzi (identici in MT).

In MT i prezzi sono uguali, ma la differenza non è uguale a zero (come scritto sopra).

Se questa linea(#property strict) viene rimossa, la differenza è zero.

Perché?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


Il rigoroso non ha alcun effetto sull'uguaglianza. Solo su Print - o approssimativamente o più accuratamente mostra il numero.

 
Dmitry Rannev:

In MT i prezzi sono uguali, ma la differenza non è zero (come scritto sopra).

Se questa linea(#property strict) viene rimossa, allora la differenza è zero.

I numeri di tipo doppio non possono essere controllati per l'uguaglianza (incluso lo zero), dobbiamo confrontare la loro differenza con il valore minimo(DBL_EPSILON, FLT_EPSILON, Point)

 
Ilya Malev:

I numeri di tipo doppio non possono essere controllati per l'uguaglianza (incluso lo zero), dovete confrontare la loro differenza con il valore minimo(DBL_EPSILON, FLT_EPSILON, Point)

Non è di questo che stiamo parlando.

 
fxsaber:

Si tratta di qualcos'altro.

Ho cercato di immaginare cosa ha causato la domanda e sono arrivato alla conclusione che potrebbero esserci stati degli errori nell'algoritmo, non solo una domanda su Print.

 
Ilya Malev:

Ho cercato di immaginare cosa ha causato il problema e sono arrivato alla conclusione che ci potrebbe essere stato qualche errore nell'algoritmo e non solo una questione di Print.

Il problema è stato descritto da fxsaber sopra. Stiamo cercando di trovare la causa.