Erreurs, bugs, questions - page 553

 
Urain:

Ensuite, faites une suggestion dans le fil de discussion du profil (il n'y a pas d'erreur, cependant).

Eh bien... Je pense que c'est une erreur. D'après ce que j'ai compris, si dans le calendrier, je peux sélectionner la fin de la période comme étant la date d'aujourd'hui,
alors le testeur et l'optimiseur sont censés travailler jusqu'à l'heure actuelle, mais cela ne se produit pas ((
les développeurs en sont conscients et il est en leur pouvoir de faire une bonne plateforme. si ce n'est pas le cas, alors non. nous allons réfléchir plus avant...

 

J'ai lu cet article "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 et j'y ai trouvé les lignes suivantes :


Pour les cotations à 3 et 5 chiffres, nous multiplions les valeurs de Stop Loss et Take Profit par 10.

L'échantillon MACD inclus dans le terminal contient les mêmes informations :

//--- réglage pour 3 ou 5 chiffres
int digits_adjust=1 ;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10 ;

m_adjusted_point=m_symbol.Point()*digits_adjust ;

Quelle est cette action ? Pourquoi multiplier des variables par 10 avec 3 et 5 décimales ?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon:

J'ai lu cet article "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 et j'y ai trouvé les lignes suivantes :

Pour les cotations à 3 et 5 chiffres, nous multiplions les valeurs de Stop Loss et Take Profit par 10.

L'échantillon MACD inclus dans le terminal contient les mêmes informations :

//--- réglage pour 3 ou 5 chiffres
int digits_adjust=1 ;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10 ;

m_adjusted_point=m_symbol.Point()*digits_adjust ;

Quelle est cette action ? Pourquoi multiplier des variables par 10 avec 3 et 5 décimales ?

Il est destiné aux amis qui ont l'habitude de tout compter en quatre chiffres et qui ne veulent pas changer d'avis.

Ainsi, si nous fixons 100 points de Stop Loss dans les paramètres, nous obtenons 1000 points dans les calculs à cinq chiffres, et 100 points dans les calculs à quatre chiffres, ce qui est identique.

Le nombre à quatre chiffres a des avantages, il est facile de recalculer le bénéfice, 1 pip 1% des fonds investis.

 
progeon:

J'ai lu cet article "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 et j'y ai trouvé les lignes suivantes :

Pour les cotations à 3 et 5 chiffres, nous multiplions les valeurs de Stop Loss et Take Profit par 10.

L'échantillon MACD inclus dans le terminal contient les mêmes informations :

//--- réglage pour 3 ou 5 chiffres
int digits_adjust=1 ;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10 ;

m_adjusted_point=m_symbol.Point()*digits_adjust ;

Quel genre d'action est-ce là ? Pourquoi multiplier une variable par 10 avec 3 et 5 décimales ?


Pour une meilleure compatibilité avec différents courtiers (fournissant des cotations à 4 ou 5 chiffres), c'est-à-dire sans avoir à modifier les paramètres de l'Expert Advisor.

Cet algorithme est basé sur le fait que chez les courtiers offrant des cotations à 4 chiffres, les chiffrespeuvent être 4 ou 2 (généralement pour les paires avec JPY),

et en 5 chiffres 5 et 3 en conséquence.

Bien que je sois moi-même intéressé par la sécurité de cette méthode, car il existe des outils avec différentesvaleurs de _Digits.

Personnellement, je vérifie avec "EURUSD". Mais au moins il y a des courtiers dans MT4 où l'eurodollar a un nom légèrement différent, par exempleEURUSD_fx .

ou quelque chose comme ça.

 
crOss:
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Urain:

Vous devrez alors saisir non seulement l'année, le mois et la date, mais aussi l'heure et les minutes de la fin.

Pas nécessairement, le temps peut être fixé de manière purement programmatique lors de l'exécution du test/optimisation.

Honnêtement, je trouve cette suggestion tout à fait raisonnable. Je suis tout à fait d'accord.

Ce n'est pas pertinent pour moi pour le moment, mais cela pourrait être très souhaitable bientôt.

 
Urain:

C'est pour les personnes qui ont l'habitude de tout compter en points à quatre chiffres, et qui ne veulent pas reconstruire.

Ainsi, en fixant un stoploss de 100 points dans les paramètres, on obtient un recalcul de 1000 points en cinq chiffres, et de 100 points en quatre chiffres, ce qui revient au même.

Le nombre à quatre chiffres présente des avantages, la facilité de recalculer le bénéfice, 1 pip 1% des fonds investis.

Je vois, continuons) Une autre question - le même article utilise la fonction NormalizeDouble lors de la formation de Stop Loss et Take Profit pour quelle raison ? Cela semble insensé.

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon:

Je vois, continuons) Une question - dans le même article la fonction NormalizeDouble est utilisée lors de la formation de Stop Loss et Take Profit pour quelle raison ? Cela ne semble pas avoir de sens.

Il n'y a pas d'inutilité du tout. Pendant le calcul du niveau, des opérations avec des doublons sont effectuées et le résultat ne sera pas normalisé et vous obtiendrez des requotes s'il est transmis au serveur tel quel. C'est pourquoi le résultat du calcul est normalisé.
 
Urain:
Il n'y a pas d'inutilité, lors du calcul du niveau, des opérations avec des doubles sont effectuées et le résultat ne sera pas normalisé, si vous le transmettez tel quel au serveur, vous obtiendrez une requote. C'est pourquoi le résultat du calcul est normalisé.
Supposons que le stoploss est de 100, le point est de 0,00001. Que peut-il se passer en les multipliant ? Les 9 vont-ils apparaître quelque part ? Par exemple 0.0009999 ?
 
progeon:
Stoploss, disons 100, point 0.00001. Que se passe-t-il si on les multiplie ? Les 9 vont-ils apparaître quelque part ? Par exemple 0.0009999 ?
   double a=1.45861+32*_Point;
   Print(DoubleToString(a,16));

Il semble qu'un nombre normal devrait être 1,45893, mais nous obtenons 1,4589300000000002.

 
Renat:

Nous avons prévu de faire un onglet "Sécurité" dans les informations de l'EA, qui montre le niveau de sécurité et une liste des fonctions DLL appelées.

Juste à temps pour le lancement de la boutique, nous allons travailler sur les dossiers EX5.

Renat, il y a deux autres questions concernant les appels DLL dans le nouveau format EX5.

1. Comment le code se comportera-t-il lorsque les appels seront désactivés ? Comme maintenant - ça ne va même pas fonctionner ?

2. S'il ne démarre pas, à quoi sert MQL5_DLLS_ALLOWED /TERMINAL_DLLS_ALLOWED?

Raison: