Caractéristiques du langage mql5, subtilités et techniques - page 115

 
A100:

Je n'écrirai pas ce que je peux, au cas où cela s'avérerait simple et pavlovien à nouveau.

Je ne comprends pas votre comportement.

 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL5 MT5 MetaTrader 5".
 
Alexey Navoykov:
Le cast d'un pointeur ne sert à rien. Peu importe comment vous le cast, l'objet est le même.

Je me suis trompé.

 

Qui a essayé de tester sur des ticks réels, est-il nécessaire de créer un historique 1 minute ou celui-ci sera formé sur la base des ticks téléchargés(symbole personnalisé) ?

Je n'ai pas de test, j'ai téléchargé sept jours de ticks, j'exécute le test et voici ce qui apparaît dans les journaux :

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:

Qui a essayé de tester sur des ticks réels, est-il nécessaire de créer un historique 1 minute ou celui-ci sera formé sur la base des ticks téléchargés (symbole personnalisé) ?

Je ne vais pas tester, télécharger sept jours de tics, faire le test, c'est ce qu'il y a dans les logs :

Jusqu'à présent.

 

DoubleToString pour le calcul du "même" prix peut donner des résultats différents. Dans ce cas, DoubleToString peut être différent de 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 pour le calcul du "même" prix peut donner des résultats différents. Dans ce cas, DoubleToString peut être différent de NormalizeDouble.

Le comportement décrit n'est pas une caractéristique exclusive du langage MQL5."La manière dont les nombres réels sont représentés dans la mémoire de la machine est définie par la norme IEEE 754 et est indépendante des plateformes, des systèmes d'exploitation et des langages de programmation. "
 

Si quelqu'un a besoin d'un modèle de variable statique non résolue basé sur https://www.mql5.com/ru/forum/1111/page2364#comment_10048274.

Le problème est résolu en implémentant la méthode à l'endroit de la déclaration. Ce n'est pas très joli, mais ça marche.

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

Si quelqu'un a besoin d'un modèle de variable statique non résolue basé sur https://www.mql5.com/ru/forum/1111/page2364#comment_10048274.

Le problème est résolu en implémentant la méthode à l'endroit de la déclaration. Ce n'est pas très joli, mais ça marche.

Vous avez un mot supplémentaire statique là. Il n'est pas utilisé en dehors d'une classe

 
Alexey Navoykov:

Vous avez un mot supplémentaire statique listé là. Il n'est pas utilisé en dehors de la classe.

(fatigué) si c'était le problème, l'erreur "'k' - redéfinition ; différents modificateurs de type" serait apparue, mais elle n'est pas sur la capture d'écran. Donc le compilateur s'en fiche et ce n'est pas ça.