Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Est-ce que quelqu'un a un code prêt à l'emploi pour calculer le nombre de chiffres significatifs pour un volume?
Quelque chose comme SymbolInfoInteger(_Symbol, SYMBOL_DIGITS), mais seulement pour le volume.
Par exemple, pour le cas SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP) = "1.0" - la réponse serait "0", pour "0.1" - "1", pour "0.01". - "2", etc.
Permettez-moi de clarifier une nuance. Pour une étape de volume comme "0.1", "0.01", "0.001" j'ai.
Le code devrait fonctionner pour les cas suivants comme "0.2", "0.11", 0.023" etc.
Il n'existe pas de code spécifiquepour le volume. Il y en a pour tout.
Le script est à vérifier dans la remorque.Un script à vérifier dans la remorque.
Vous voulez dire que..., et je pensais que je devais vérifier le lot autorisé avant de passer une commande.
;)
Je ne sais pas vraiment ce qu'il veut. On verra ce qu'il dira. J'exerce juste ma télépathie. ;)
Quelqu'un a-t-il un code prêt à l'emploi pour calculer le nombre de chiffres significatifs d'un volume ?
Quelque chose comme SymbolInfoInteger(_Symbol, SYMBOL_DIGITS), mais seulement pour le volume.
Par exemple, pour le cas SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP) = "1.0" - la réponse serait "0", pour "0.1" - "1", pour "0.01". - "2", etc.
Permettez-moi de clarifier une nuance. Pour une étape de volume comme "0.1", "0.01", "0.001" j'ai.
Le code devrait fonctionner pour les cas suivants comme "0.2", "0.11", 0.023" etc.
Spécifiquement pour les volumes, cela peut être simple :
sergeev
MetaDriver
Valmars
Une question bien formulée est la moitié de la réponse. :) Désolé, je suis déjà allé me coucher, je n'ai pas réussi à décrire la tâche avec précision. Je vais réessayer.
Je parle de transmettre un volume normalisé à un ordre de transaction.
C'est ce que nous faisons avec le prix :
La normalisation des prix - je pense que c'est clair pour tout le monde.
A mon époque (depuis MT4), j'ai lu quelque part dans des articles de MT qu'il serait souhaitable de normaliser également le volume.
Mise en œuvre №2.En fait, j'ai écrit la fonctionGetVolumeDigits(string Symbol) pour trouver la plus petite valeur possible du volume selon les conditions du courtier. Il existe au moins deux implémentations (le résultat est le même) :
Mise en œuvre n° 1.
Les deux fonctionnent parfaitement pour les variantes dont le pas minimum est de 1,0, 0,1, 0,01, 0,001, etc. C'est-à-dire que si le pas minimum est de 1,0, la fonction renverra 0 ; si le pas est de 0,1, la fonction renverra 1, etc.
Que se passe-t-il si le pas minimum est de 1,1, ou de 0,11, ou de 0,011, par exemple ? Cet algorithme affichera de manière incorrecte le chiffre le moins significatif.
Bien sûr, vous pouvez affirmer que de tels cas n'existent pas dans la pratique. Je veux juste envisager une telle possibilité hypothétique dans mon conseiller expert. J'ai pensé que peut-être quelqu'un pourrait partager son expérience en la matière...
Il s'agit d'envoyer le volume normalisé à l'ordre de transaction.
Je veux juste envisager cette possibilité hypothétique dans notre Expert Advisor.
de quel outil "hypothétique" parlons-nous ?
1. La variante de MetaDriver vous convient. CountSignedDigits indique le nombre de caractères dans un lot quelconque.
2. En connaissant le nombre de chiffres, vous pouvez effectuer la normalisation :
sergeev
Merci pour la fonction de validation du lot. J'utilise une construction/branchements de chèques similaire.
Ma question vise à trouver la place la plus jeune dans le lot, pour le normaliser.
En particulier, MetaDriver a donné sa construction pour "tout". :) Cependant, il n'est pas sans défaut (ou mon compilateur est défaillant). Voici le code et le résultat de l'exécution :
Résultat :
Option suivante (la fonction CountSignedDigits est la même) :
Résultat :
Modification de la ligne suivante dans OnStart :
Résultat :
Soit je fais quelque chose de mal (merci de corriger), soit MetaDriver a fait une erreur théorique (lors de la conception de l'algorithme).
Ma question vise à déterminer l'endroit le plus bas du lot pour le normaliser.
Même si, lors de l'envoi d'une demande de transaction, le lot variable est mal renseigné (à la deuxième décimale), il sera rejeté par le terminal lui-même.
En tout cas, je n'ai eu aucun problème pendant plusieurs années d'utilisation de ce modèle.
Et si vous voulez réassurer, vous pouvez le normaliser jusqu'à la huitième décimale (avec réserve) - si, après une normalisation "correcte", des déchets apparaissent, ils seront beaucoup plus loin.