Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 115

 
A100:

Non scriverò quello che posso, nel caso si rivelasse semplice e pavlick_ di nuovo

Non capisco il suo comportamento.

 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL5 MT5 MetaTrader 5".
 
Alexey Navoykov:
Il casting di un puntatore non fa nulla, non importa come lo lanci, l'oggetto è lo stesso.

Mi correggo.

 

Chi ha provato a testare su tick reali, è necessario creare uno storico a 1 minuto o si formerà sulla base dei tick scaricati(simbolo personalizzato)?

In qualche modo non ho un test, ho caricato sette giorni di tick, sto eseguendo il test e questo è quello che c'è nei log:

2018.12.24 22:04:16.925 Core 1  no data synchronized, 41 bytes read
2018.12.24 22:04:16.925 Core 1  symbol EURUSD_custom synchronization error
2018.12.24 22:04:16.925 Core 1  cannot get history EURUSD_custom,M1
 
forexman77:

Chi ha provato a testare su tick reali, è necessario creare una storia a 1 minuto o si formerà sulla base dei tick caricati (simbolo personalizzato)?

In qualche modo non ho intenzione di testare, ho caricato sette giorni di tick, eseguendo il test è quello che c'è nei registri:

Finora.

 

DoubleToString per i calcoli dello "stesso" prezzo può dare risultati diversi. In questo caso DoubleToString può essere diverso da NormalizeDouble.

#property strict

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  const double Koef =  0.25;
  const int iDelta = 32;
  const double point = 0.00001;
  
  const double high = 1.06736;
  const double low = 1.06676;
  
  const double Avg = (high + low) * 0.5;  
  const double Size = (high - low) * Koef * 0.5;
  
  // Вычисление одной и той же цены разной последовательностью сложения одного и того же количества пипсов
  const double Price1 = Avg - Size - point * iDelta;
  const double Price2 = Avg - (Size + point * iDelta);  
  
  PRINT(DoubleToString(Price1, 5));   // DoubleToString(Price1,5) = 1.06666
  PRINT(DoubleToString(Price2, 5));   // DoubleToString(Price2,5) = 1.06667

  PRINT(NormalizeDouble(Price1, 5)); // NormalizeDouble(Price1,5) = 1.06667
  PRINT(NormalizeDouble(Price2, 5)); // NormalizeDouble(Price1,5) = 1.06667
}
 
fxsaber:

DoubleToString per i calcoli dello "stesso" prezzo può dare risultati diversi. In questo caso DoubleToString può essere diverso da NormalizeDouble.

Il comportamento descritto non è una caratteristica esclusiva del linguaggio MQL5. "Ilmodo in cui i numeri reali sono rappresentati nella memoria della macchina è definito dallo standard IEEE 754 ed è indipendente dalle piattaforme, dai sistemi operativi e dai linguaggi di programmazione. "
 

Se qualcuno ha bisogno di una variabile statica non risolta basata su https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

Il problema si risolve implementando il metodo nel luogo della dichiarazione. Non è molto bello, ma funziona.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.12.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Ilya Malev:

Se qualcuno ha bisogno di una variabile statica non risolta basata su https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

Il problema si risolve implementando il metodo nel luogo della dichiarazione. Non è molto bello, ma funziona.

Hai una parola extra statica lì. Non si usa al di fuori di una classe

 
Alexey Navoykov:

Hai una parola extra statica elencata lì. Non si usa al di fuori della classe.

(stanco) se fosse il problema, l'errore "'k' - redefinition; different type modifiers" sarebbe apparso, ma non è nello screenshot. Quindi al compilatore non interessa e non è questo.


Motivazione: