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
laissez les développeurs s'en occuper. voici une capture d'écran de 3 exécutions de ce script.
Ça ne marche pas pour moi.
Bug - ça marchait avant, mais maintenant ça ne marche plus.
Merci pour votre message.
Nous allons continuer à chercher.
Trouvé un petit bug dans la méthode PrintCheckResult (fichier Trade.mqh, classes Trade, classe CTrade).
void CTrade::PrintCheckResult(void) const
{
printf("CheckResult") ;
// printf("%d,%f,%f,%f,%f,%f,%f, '%s'", - l'avant-dernier paramètre est inutile
printf("%d,%f,%f,%f,%f,%f,%f, '%s'",
m_check_result.retcode,m_check_result.balance,m_check_result.equity,
m_check_result.margin,m_check_result.margin_free,m_check_result.margin_level,
m_check_result.comment) ;
}
Au lieu de la chaîne de caractères : printf("%d,%f,%f,%f,%f,%f,%f, '%s'", - commenté par moi
il devrait y avoir une ligne : printf("%d,%f,%f,%f,%f,%f,%f,%f, '%s'",
J'ai vérifié, la fonction corrigée fonctionne correctement.
Bug - ça marchait avant, mais maintenant ça ne marche plus.
Merci pour le message. Sera disponible dans la prochaine mise à jour. Pour que cela fonctionne dans la version actuelle, utilisez un casting explicite pour les constantes ou les multiplications en général.
{
// вот так работает
Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
// а вот так нет (а раньше работало)
datetime time_end=0;
time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
Print(time_end);
}
Trouvé un petit bug dans la méthode PrintCheckResult (fichier Trade.mqh, classes Trade, classe CTrade).
Merci pour le message.
Il sera bientôt réparé.
Merci pour votre message. Sera disponible dans la prochaine mise à jour. Pour le faire fonctionner dans la version actuelle, il faut utiliser un casting explicite pour les constantes ou les multiplications en général.
Merci. Si j'ai bien compris, c'était dû à la conversion de type. C'est dommage qu'il n'y ait pas de message de ce type au moment de la compilation, ce serait plus facile à trouver.
Les erreurs ENUM_TRADE_RETURN_CODES doivent être interprétées correctement afin de pouvoir les traiter correctement. Existe-t-il des documents permettant de les décrire en détail ?
En particulier, les erreurs suivantes ne sont pas complètement comprises :
10008
COMMERCE_RETCODE_PLACÉ
Commande passée
10021
RABAIS SUR LE PRIX DU CODE DU COMMERCE
Aucun devis disponible pour traiter la demande
10028
TRADE_RETCODE_LOCKED
Requête bloquée pour traitement
10029
TRADE_RETCODE_FROZEN
Ordre ou position gelée
Quelqu'un peut-il m'aider à résoudre ce problème ?
Les erreurs ENUM_TRADE_RETURN_CODES doivent être interprétées correctement afin de pouvoir les traiter correctement. Existe-t-il des documents permettant de les décrire en détail ?
En particulier, les erreurs suivantes ne sont pas complètement comprises :
10008
COMMERCE_RETCODE_PLACÉ
Commande passée
10021
RABAIS SUR LE PRIX DU CODE DU COMMERCE
Aucun devis disponible pour traiter la demande
10028
TRADE_RETCODE_LOCKED
Requête bloquée pour traitement
10029
TRADE_RETCODE_FROZEN
Ordre ou position gelée
Quelqu'un peut-il m'aider à résoudre ce problème ?
Tout ce qui précède fait référence aux codes qui sont renvoyés par le serveur en réponse à la demande du terminal. C'est pourquoi tout est indiqué dans la section "Codes de retour du serveur commercial".
Il serait logique de supposer que la liste ne contient pas que des erreurs.
Maintenant dans l'ordre.
Quant à
10008
COMMERCE_RETCODE_PLACÉ
Commande passée
Il serait logique de supposer que cette réponse n'est pas une erreur mais informe simplement le client (le terminal de négociation) que l'ordre a été passé avec succès.
Dans ce cas, il y a trois solutions possibles :
1. Pas du tout pour traiter la réponse ;
2. traiter le placement de l'ordre dans le bloc OnTrade() - tout à fait acceptable, mais pas très correct à mon avis ;
À mon avis, c'est la meilleure façon de traiter un échange mécanique.
PS
Je préfère traiter les réponses du serveur à la place de l'ordre et attraper le résultat des actions d'un trader, du serveur ou d'autres Expert Advisors dans OnTrade().
Par exemple, dans OnTrade, vous pouvez saisir les opérations commerciales du trader (création ou suppression d'un ordre ainsi que les opérations sur les positions).
En ce qui concerne
10029
TRADE_RETCODE_FROZEN
La commande ou la position est gelée
Il existe un certain niveau à partir duquel une position ou un ordre sont "gelés" (toute opération avec eux est interdite).
Ce niveau est une distance par rapport au prix actuel à laquelle le serveur interdit toute action avec l'ordre ou la position. Cette distance est mesurée en pips et est définie pour chaque symbole.
Il peut être obtenu en utilisant SymbolInfoInteger() avec leparamètre SYMBOL_TRADE_FREEZE_LEVEL.
Si vous obtenez une telle réponse du serveur, vous devez attendre que l'une des deux choses suivantes se produise :
1. Le prix n'a pas bougé de la distance requise (plus grande que celle spécifiée dans les propriétés du symbole);
2. l'ordre ou le poste ne fonctionne pas dans les conditions qu'ils prévoient.
En ce qui concerne
10021
RABAIS SUR LE PRIX DU CODE DU COMMERCE
Aucun devis pour traiter la demande
Si vous obtenez cette réponse, vous devriez probablement vérifier le nom du symbole (juste au cas où), vous assurer que le symbole est sélectionné (important pour le testeur et les multidiffusions), vérifier la disponibilité de l'historique, y compris sur le serveur (s'il doit être téléchargé), et probablement vous assurer que le marché est ouvert et que la négociation sur le symbole est possible.
PS
Bien qu'ici il sera nécessaire de spécifier aux développeurs
Qu'en est-il
10028
TRADE_RETCODE_LOCKED
Demande bloquée pour traitement
C'est probablement la plus spécifique des réponses du serveur listées ci-dessus... elle est plus susceptible de nécessiter une clarification de la part des développeurs (je vais juste supposer que vous devriez probablement juste attendre un certain temps)...
Concernant
10029
TRADE_RETCODE_FROZEN
Ordre ou position gelée
Il existe un certain niveau en dessous duquel une position ou un ordre sont "gelés" (toute action avec eux est interdite).
Ce niveau est une distance par rapport au prix actuel à laquelle le serveur interdit toute action avec l'ordre ou la position. Cette distance est mesurée en pips et est définie pour chaque symbole.
Il peut être obtenu en utilisant SymbolInfoInteger() avec le paramètreSYMBOL_TRADE_FREEZE_LEVEL.
Si vous obtenez une telle réponse du serveur, vous devez attendre que l'une des deux choses suivantes se produise :
1. Le prix n'a pas bougé de la distance requise (plus grande que celle spécifiée dans les propriétés du symbole);
2. l'ordre ou la position n'a pas rempli les conditions qui y sont fixées.
Merci pour la réponse détaillée. Je comprends le code "10029 : TRADE_RETCODE_FROZEN : L 'ordre ou la position est gelé".
Mais nous avons encore des questions concernant les autres (je veux connaître la réponse exacte et non des suppositions) :
10008
COMMERCE_RETCODE_PLACÉ
Commande passée
10021
RABAIS SUR LE PRIX DU CODE DU COMMERCE
Aucun devis disponible pour traiter la demande
10028
TRADE_RETCODE_LOCKED
La demande est bloquée pour traitement
En particulier, la signification de "10008 : L'ordre a été passé" n'est pas très claire, car lorsque l'ordre est mis en file d'attente sur le serveur, un ticket lui est attribué et le code "10009 : TRADE_RETCODE_DONE : Demande exécutée" est renvoyé.