Erreurs, bugs, questions - page 1361

 
Alexey Navoykov:

Comment pouvons-nous laisser l'opérateur= inchangé, s'il crée une confusion entre les pointeurs et les objets eux-mêmes ? Si nous utilisons * pour lui, nous devrions l'utiliser aussi pour tous les autres opérateurs. Il devrait y avoir une norme unique.

En fait, vous proposez une notation simple et claire

a = (b + c) - d*e + f;
Remplacer par
*a = (*b + *c) - *d**e + *f;
Et c'est pour quoi ? Pour que vous puissiez écrire
bool c = *a == *b;

alors qu'une fonction spéciale peut être utilisée pour comparer des pointeurs à l'égalité, et toutes les autres opérations arithmétiques (addition, soustraction, multiplication, etc.) avec des pointeurs n'ont aucun sens en soi, et ne sont intéressantes qu'en termes de capacité de surcharge.

Ce n'est qu'en créant une base mathématique et une classe dérivée, en redéfinissant plusieurs (plutôt qu'une ou deux) opérations arithmétiques, en les rendant virtuelles puis en testant des expressions complexes (pas seulement a = b + c) sur leur base - ce n'est qu'ainsi que vous vous rapprocherez de la compréhension que tout est maintenant fait de manière OPTIMALE. En attendant, vous raisonnez à un niveau d'entrée.

Si vous portez la comparaison des pointeurs à l'égalité dans une fonction séparée, il ne restera qu'un seul ( !) goulot d'étranglement

class A {};

A *a = b; //однозначно присвоение указателю значения
a = b;    //неоднозначно
qui doit cependant être traité comme une affectation et non comme un appel operator=(), car il n'existe actuellement aucune autre syntaxe pour affecter une valeur à un pointeur, tandis que a.operator=( b ) peut également être appelé explicitement
 
Alexey Navoykov:

Et ce que vous proposez, que le compilateur lui-même choisisse la bonne option - c'est faux. Il y aura beaucoup d'erreurs difficiles à détecter.

Vous ne comprenez pas l'objectif des suggestions. Le fait d'intégrer les opérations de comparaison de l'égalité des pointeurs dans une fonction distincte peut réduire la probabilité d'une erreur, mais pas du tout l'augmenter.

Règle n° 1 - utilisez une fonction spéciale pour comparer les pointeurs à l'égalité.

Règle n° 2 - n'utilisez pas la comparaison par pointeur d'égalité en dehors d'une fonction spéciale, bien que le langage fournisse cette syntaxe (pour les utilisateurs avancés).

Quelles erreurs difficiles à trouver ?

 

Veuillez reconsidérer la fonction de la

bool CTrade::FillingCheck(const string symbol)

de la bibliothèque standard

il y a des symboles avec le type d'exécution - stock mais qui ne supportent pas le type de remplissage

ORDER_FILLING_IOC, SYMBOL_FILLING_FOK

mais seulement

ORDER_FILLING_RETURN


utiliser automatiquement cette partie de la bibliothèque cTrade ne fonctionne pas avec de tels symboles

 
Gennadiy Stanilevych:

Sur les ordinateurs locaux, c'est le cas. Il se charge partout. Ce genre de problème n'existe que sur un serveur virtuel dédié sous le serveur vinds, je crois que c'est 2007.

J'en ai un local, sans proxy, avec une connexion Metaquotes-Demo et de multiples redémarrages toujours 1150.
 
Alexey Volchanskiy:
Ma connexion locale, sans proxy, avec Metaquotes-Demo et plusieurs redémarrages est toujours de 1150.
J'ai 1159 partout. J'ai compilé tous les logiciels sur 1159 et maintenant pas un seul indicateur .ex5 ne se charge sur la version 1150 installée sur le VPS. C'est un désordre.
 

Je ne suis peut-être pas dans le coup, mais... Lorsque je regarde les statistiques du signal sur MQL5.com, il y a une section appelée "Slippage". Il est indiqué qu'elle est mesurée en points. Qu'est-ce qui est considéré comme un pépin ? Est-ce l'avant-dernier chiffre de la paire de devises ? Ou est-ce la valeur extrême ? Par exemple, la paire USD/JPY est maintenant à 119,793. Ou la paire EUR/USD est à 1.13693. Où sont les points ?

Merci !

 

Quel genre de perversion de la part des modérateurs du Marché ?

Mon produit ne fonctionne que sur les devises 3 et 5 ( c'est indiqué dans la description ).

Et ils ne vont pas mettre en place une nouvelle version parce qu'il y a une erreur dans le produit.

2015.08.26 15:43:03.415    2015.03.03 04:02  Hedging_Recovery__1 XAUUSD,H1: OrderSend error 130

Je leur ai clairement dit que c'est seulement pour les devises et pas pour les métaux.

Qui a raison ou ce qu'ils veulent de moi ?

C'est plus facile pour moi d'interdire les métaux.

 
Torshkhoev:

Je suis peut-être hors sujet, mais... Lorsque je regarde les statistiques du signal sur MQL5.com, il y a une section appelée "Slippage". Il est indiqué qu'elle est mesurée en points. Qu'est-ce qui est considéré comme un pépin ? Est-ce l'avant-dernier chiffre de la paire de devises ? Ou est-ce la valeur extrême ? Par exemple, la paire USD/JPY est maintenant à 119,793. Ou la paire EUR/USD est à 1.13693. Où sont les points ?

Merci !

1 dernier chiffre derrière le point
 
Leanid Aladzyeu:
1 dernier chiffre derrière le point
Merci !
 
Leanid Aladzyeu:

Quel genre de perversion de la part des modérateurs du Marché ?

Mon produit ne fonctionne que sur les devises 3 et 5 ( c'est indiqué dans la description ).

Et ils ne vont pas mettre en place une nouvelle version parce qu'il y a une erreur dans le produit.

2015.08.26 15:43:03.415    2015.03.03 04:02  Hedging_Recovery__1 XAUUSD,H1: OrderSend error 130

Je leur ai clairement dit que c'est seulement pour les devises et pas pour les métaux.

Qui a raison ou ce qu'ils veulent de moi ?

C'est plus facile pour moi d'interdire les métaux.

Très bien, c'est de la prévention. Vous savez comment les utilisateurs peuvent se tordre et casser même une boule de fer...