Questions des débutants MQL5 MT5 MetaTrader 5 - page 799
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
Merci ! J'ai cherché et je ne l'ai pas trouvé...
Ensuite, la question suivante, disons que l'étape est 25, alors comment organiser l'arrondi à un nombre divisible par 25, peut-être y a-t-il une fonction ?
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
Merci, mais je n'utilise pas la bibliothèque commerciale standard.
Pas de code, pas de commentaires.
Oui, c'est bizarre. J'ai joint le fichier, mais je ne l'ai pas vérifié. C'est ma faute. Maintenant, je joins le code et l'extrait de code où le testeur donne une ligne avec [Invalid stops]. Je veux comprendre comment la structure de MqlTradeRequest fonctionne lors de la modification de la position. Dans mon cas, c'est lorsque le changement d'arrêt sur le SAR. Je n'arrive pas à me débarrasser du message [Arrêts non valides] du testeur. Outil d'épissure RTS.
Oui, c'est bizarre. J'ai joint le fichier, mais je ne l'ai pas vérifié. C'est ma faute. Je joins à présent le code et l'extrait de code où le testeur affiche une ligne avec [Invalid stops]. Je veux comprendre comment la structure de MqlTradeRequest fonctionne lors de la modification de la position. Dans mon cas, c'est lorsque le changement d'arrêt sur le SAR. Je n'arrive pas à me débarrasser du message [Arrêts non valides] du testeur. Outil d'épissure RTS.
Ce n'est pas ce fragment de code où il faut chercher une erreur, à première vue. Ce n'est que la triple sélection d'une seule et même position qui me dérange. C'est redondant.
Vous avez une erreur dans les arrêts incorrects, vous devriez probablement commencer votre recherche à partir de l'endroit où ces arrêts sont calculés.
Oui, c'est bizarre. J'ai joint le fichier, mais je ne l'ai pas vérifié. C'est ma faute. Je joins maintenant le code et l'extrait de code où le testeur donne une ligne avec [Invalid stops]. Je veux comprendre comment la structure de MqlTradeRequest fonctionne lors de la modification de la position. Dans mon cas, c'est lorsque le changement d'arrêt sur le SAR. Je n'arrive pas à me débarrasser du message [Arrêts non valides] du testeur. RTS Splice.
Pour une bonne compréhension, il est nécessaire de préciser quel type de compte hadge ou netting.
Si le type de compte est un compte
Vous avez choisi une position pour le symbole, mais ce n'est peut-être pas exactement ce que vous vouliez voir...
Mais maintenant nous choisissons la position exacte que nous voulions.
Ensuite, essayez à nouveau de choisir la bonne position
Encore une fois, la probabilité que vous ayez choisi la mauvaise position est très élevée.
Pour vérifier comment la fonction OrderSend() se comporte dans ce cas, il faut le faire, mais il est préférable de le faire comme il se doit et si l'erreur ne disparaît pas, d'imprimer non seulement le code d'erreur, mais aussi le ticket de position, le prix de la position, le prix du nouveau stop et du take. C'est le minimum.
Pour une compréhension complète, vous devez préciser quel type de compte hadge ou netting.
Merci pour vos commentaires. Le type de compte est le netting. RTS Splice. C'est la partie délicate ? Une position sur un symbole. Vous pouvez choisir la voie que vous voulez, vous arriverez quand même à cette position. Ce ne sont pas des commandes en cours, n'est-ce pas ? C'est pourquoi je ne comprends pas encore plus - qu'est-ce qui ne va pas ? J'ai essayé toutes les variantes.
Merci pour les commentaires. Compensation par type de compte. RTS Instrument d'épissure. C'est la partie délicate ? Une position sur un symbole. Vous pouvez choisir la voie que vous voulez, vous arriverez quand même à cette position. Ce ne sont pas des commandes en cours, n'est-ce pas ? C'est pourquoi je ne comprends pas encore plus - qu'est-ce qui ne va pas ? J'ai essayé toutes les variantes.
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie
Questions des débutants MQL5 MT5 MetaTrader 5
Alexey Viktorov, 2017.11.22 09:29
Pour vérifier comment la fonction OrderSend() se comporte dans ce cas, il faut le faire et vérifier, mais il vaut mieux faire comme il faut et si l'erreur n'est pas levée imprimer non seulement le code d'erreur mais aussi le ticket de position, le prix de la position, le prix du nouveau stop et la prise. C'est le minimum.
C'est pourquoi je ne comprends pas encore plus - QU'EST-CE QUI NE VA PAS ? ?? J'ai essayé toutes les options.
Insérez cette ligne à l'endroit où l'erreur se produit
Print(ToString(request) + ToString(result));
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Particularités du langage mql5, subtilités et astuces
fxsaber, 2017.02.25 16:27
Traduire les structures MqlTrade en une chaîne de caractères#define TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n"
string ToString( const MqlTradeTransaction &Trans )
{
return(TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) +
TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) +
TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) +
TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) +
TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) +
TOSTRING(Trans.position) + TOSTRING(Trans.position_by));
}
string ToString( const MqlTradeRequest &Request )
{
return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) +
TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) +
TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
TOSTRING(Request.position) + TOSTRING(Request.position_by));
}
string ToString( const MqlTradeResult &Result )
{
return(TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +
TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +
TOSTRING(Result.retcode_external));
}
#undef TOSTRING
#undef TOSTRING2
Insérez cette ligne à l'endroit où l'erreur se produit
Collé. Voici le résultat du testeur :
2017.11.22 18:22:51.127 2016.11.09 12:00:00 exchange buy 1.00 RTS Splice at 98080 sl : 94130 (98070 / 98080 / 98070)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 deal #4 buy 1.00 RTS Splice at 98080 done (based on order #4)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 transaction effectuée [#4 acheter 1.00 RTS Splice à 98080]
2017.11.22 18:22:51.127 2016.11.09 12:00:00 ordre exécuté acheter 1.00 à 98080 [#4 acheter 1.00 RTS Splice à 98080]
2017.11.22 18:22:53.561 2016.11.09 14:05:00:00 failed modify #4 buy 1.00 RTS Splice sl : 94130, tp : 0 -> sl : 94316, tp : 0 [Arrêts invalides]
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.action = TRADE_ACTION_SLTP (6)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.magic = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.symbol = RTS Splice
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.volume = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Demande.prix = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.stoplimit = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Demande.sl = 94316.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Demande.tp = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Demande.écart = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type = ORDER_TYPE_BUY (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_filling = ORDER_FILLING_FOK (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_time = ORDER_TIME_GTC (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Demande.expiration = 1970.01.01 00:00:00
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.comment =
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position = 4
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position_by = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode = 10016
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.deal = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Volume.résultat = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Résultat.prix = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.bid = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.ask = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.comment = Arrêts non valides
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.request_id = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode_external = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Alerte : Erreur de modification de position par TP et SL code d'erreur : 4756
Mettez-le dedans. Voici le résultat du testeur :
Mode serveur et mode testeur ?