[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 333
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
C'est exact, mais comme la pratique l'a montré - pas toujours.
Si la cinquième décimale = 5 (1,xxxx5), la valeur est encore déformée :
la question est toujours valable...
P.S. En général, j'ai besoin d'attribuer une valeur de prix à MagicNumber... Et tapez MagicNumber - int, ici et essayez de convertir par
Qui d'autre peut me donner des conseils ?
Merci.
Vous produisez des résultats avec des arrondis différents - vous ne voyez donc pas le nombre complet - et vous pensez que quelque chose est déformé. Par défaut, lors de la sortie de nombres réels, la sortie est arrondie au 4ème chiffre. Pour les nombres à 5 chiffres, vous devez arrondir la sortie de manière explicite :
Regardez votre propre image - l'offre de sortie sans DoubleToStr() et avec DoubleToStr().
Artyom et Boris, merci d'avoir "mâché" ma question. Il y a des périodes où je peux rester bloqué sur des choses assez simples, comme ce fut le cas cette fois-ci...
Maintenant, il y a une nouvelle question.
J'ai ajouté à la fonction qui calcule le montant des ordres ouverts t, recherche les ordres d'un type spécifié avec des profits spécifiés et compare leurs profits avec une certaine valeur spécifiée (actuellement 0). De plus, s'il n'y a pas d'ordres ouverts, 2 drapeaux avec la valeur True sont retournés avec les paramètres de la fonction FindOrders(), cela signifie que vous pouvez envoyer un ordre, mais s'il y a des ordres, le profit est vérifié pour s'assurer qu'il est supérieur à la valeur fixée, s'il est inférieur à la valeur fixée, 2 drapeaux avec la valeur False sont retournés avec les paramètres de la fonction FindOrders(), ainsi quand il y a des ordres perdants dans une certaine direction, il n'y aura pas d'investissements dans la direction perdante.
Après cela, j'appelle la fonction FindOrders() dans la fonction signal :
Les commandes n'ont pas été ouvertes du tout. La logique semble être correcte. Peut-être, pouvez-vous voir où j'ai fait une erreur ?
Je comprends que tout peut être fait plus facilement avec une fonction séparée et je peux le faire. Mais je veux comprendre pourquoi cela ne fonctionne pas dans cette version.
Victor, je ne peux pas comprendre entièrement votre algorithme, mais je peux vous donner quelques conseils ! Cela m'arrive aussi lorsqu'il y a une erreur de logique. Le programme s'arrête s'il s'avère être ambigu ou mutuellement exclusif dans vos conditions. Vous savez peut-être ce que vous voulez, mais vous n'arrivez pas à construire la logique du code correctement. Recherchez ces problèmes et écrivez tout l'ordre dans lequel vous voulez que les conditions soient exécutées, une par une sur une feuille de papier avec des flèches pour plus de clarté ! Bonne chance !
Il y a donc une logique simple. S'il n'y a pas d'ordres ouverts, les ordres seront ouverts par le signal.
Et s'il y a des ordres ouverts, alors les ordres doivent être ouverts par un signal spécifique, si le profit des ordres dans une direction donnée (achat ou vente) est supérieur à une certaine valeur, c'est-à-dire au moins pas en moins. (J'ai mis 0 pour le test).
J'ai trouvé une erreur logique. Voici ce qui en est ressorti :
Maintenant, les ordres de vente s'ouvrent correctement sur le site, mais les ordres longs ne s'ouvrent pas du tout. Bien que le drapeau ait la valeur des deux variables 1, c'est-à-dire vrai.
J'ai ce problème avec mt4.
Avec le lancement du logiciel de courtage mt4 (à savoir les 3 que j'utilise depuis une semaine) sur mon ordinateur, j'obtiens une fenêtre "Exécuter en tant qu'utilisateur" sur mon ordinateur (comme avec "exécuter en tant qu'utilisateur"). Avec toute sélection d'action, mt4 s'ouvre normalement.
Comment faire pour que mt4.eh fonctionne à nouveau sans cette fenêtre ? Peut-être qui sait ou comprend ce qui ne va pas...
Bonjour, j'ai rencontré le besoin d'annuler rapidement toutes les commandes en cours. OrderClose ignore les ordres en cours. Quel opérateur est le plus pratique à utiliser, et cette option est-elle disponible ?
Bonjour, j'ai rencontré le besoin d'annuler rapidement toutes les commandes en cours. OrderClose ignore les ordres en cours. Quel opérateur est le plus pratique à utiliser, et cette option est-elle disponible ?
Vous ne pouvez fermer que les ordres au marché et vous avez besoin de l'opérateur OrderDelete pour supprimer les ordres en attente.
hoz
Merci !
Ainsi, tout est simple dans sa logique. Nous avons besoin que s'il n'y a pas d'ordres ouverts, les ordres seront ouverts par le signal.
Et s'il y a des ordres ouverts, alors les ordres doivent être ouverts par un signal spécifique, si le profit des ordres dans une direction donnée (achat ou vente) est supérieur à une certaine valeur, c'est-à-dire au moins pas en moins. (J'ai mis 0 pour le test).
J'ai trouvé une erreur logique. Voici ce qui en est ressorti :
Maintenant, les ordres de vente s'ouvrent correctement sur le site, mais les ordres longs ne s'ouvrent pas du tout. Bien que le drapeau ait la valeur des deux variables 1, c'est-à-dire vrai.
Victor, vérifions-le ! En commentant le côté long, vérifiez comment le côté court fonctionne dans le journal ! Et vice versa, puis voyez quelle est la différence et trouvez pourquoi cela ne fonctionne pas !
Boris, si vous commentez l'une des conditions dans int GetGeneralSignal(), l'ouverture est claire.
Je l'ai suivi. Le drapeau ne change pas de valeur lorsque la rentabilité des ordres actuellement ouverts est en moins. Voici la fonction réécrite qui doit mettre les valeurs des drapeaux short et long à false, c'est-à-dire nous interdire d'ouvrir une position s'il y a des ordres négatifs :
Voici la fonction d'appel :
Boris, si vous commentez l'une des conditions dans int GetGeneralSignal(), l'ouverture est claire.
J'ai retrouvé sa trace. Le drapeau ne change pas de valeur lorsque la rentabilité des ordres actuellement ouverts est en moins. Voici la fonction réécrite qui doit mettre les drapeaux court et long à faux, c'est-à-dire interdire l'ouverture d'une position s'il y a des ordres négatifs :
La fonction d'appel est la suivante :