FAQ: Si votre ordre s'ouvre, vérifiez l'ouverture, et si c'est le cas, vous pouvez ouvrir le deuxième ordre en vérifiant...
J'ai écrit deux fonctions qui s'ouvrent différemment selon la situation et je vérifierai à la fin de chacune d'elles (je pense qu'elles seront une fonction séparée) quels et combien d'ordres sont ouverts et quels ordres seront manqués et seront réouverts.
Si vous êtes un expert dans le domaine du positionnement de l'EA en termes de forex, vous pouvez être intéressé à en savoir plus et à l'utiliser dans votre robot de trading. Je tiens à réitérer mes remerciements (désolé pour le manque de détails).
Un problème s'est posé. Je ne trouve pas la fonction qui renvoie la taille de la position "agrégée" d'un instrument donné ! J'ai cherché sur tout le forum, y compris dans la branche de I.KIM,https://www.mql5.com/ru/forum/131859 - il y a - différentes fonctions pour des lots, sauf pour celle dont j'ai besoin !
Par exemple, s'il y a plusieurs opérations d'"achat" ouvertes sur EUR, pouvez-vous indiquer comment déterminer leur montant total ?
GetLot(EURUSD, OP_BUY, magic)
double GetLot(string sy="", int op=-1, int mn=-1) {// возвращает сувокупный размер поз.
double l=-1;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
I = ------ ???????????
------ ????????????
}
}
}
}
}
}
return(l);
}
Question résolue ! Une fonction a été découverte :
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает сумму лотов открытых позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
double l=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
l+=OrderLots();
}
}
}
}
}
}
return(l);
}
Je n'ai pas besoin de prendre en compte les locs. Ou plutôt, voici comment :
Ce dont j'ai besoin est ceci. S'il y a plusieurs positions ouvertes de vente et d'achat, je dois supprimer les contre-positions (de compensation), afin de ne rester que dans une seule direction.
Je voulais d'abord calculer la somme de toutes les "baies", puis la somme de toutes les "ventes". Ensuite, trouvez la différence (c'est-à-dire la taille totale la plus grande). Et cette "différence" devrait être laissée sur le marché, - et toutes celles qui lui sont opposées supprimées !
Donc, cette fonction GetAmountLotFromOpenPos ne fonctionnera pas ici ? Par exemple, si je mets
Je n'ai pas besoin de prendre en compte les locs. Ou plutôt, voici comment :
Ce dont j'ai besoin est ceci. S'il y a plusieurs positions ouvertes de vente et d'achat, je dois supprimer les contre-positions (de compensation), afin de ne rester que dans une seule direction.
Je voulais d'abord calculer la somme de toutes les "baies", puis la somme de toutes les "ventes". Ensuite, trouvez la différence (c'est-à-dire la taille totale la plus grande). Et cette "différence" devrait être laissée sur le marché, - et toutes celles qui lui sont opposées supprimées !
Donc, cette fonction GetAmountLotFromOpenPos ne fonctionnera pas ici ? Par exemple, si je mets
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
Ne retourne-t-il pas le nombre total de lots de toutes les positions de vente ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Si votre ordre s'ouvre, vérifiez l'ouverture, et si c'est le cas, vous pouvez ouvrir le deuxième ordre en vérifiant...
J'ai écrit deux fonctions qui s'ouvrent différemment selon la situation et je vérifierai à la fin de chacune d'elles (je pense qu'elles seront une fonction séparée) quels et combien d'ordres sont ouverts et quels ordres seront manqués et seront réouverts.
Si vous êtes un expert dans le domaine du positionnement de l'EA en termes de forex, vous pouvez être intéressé à en savoir plus et à l'utiliser dans votre robot de trading. Je tiens à réitérer mes remerciements (désolé pour le manque de détails).
Bonjour.
Un problème s'est posé. Je ne trouve pas la fonction qui renvoie la taille de la position "agrégée" d'un instrument donné ! J'ai cherché sur tout le forum, y compris dans la branche de I.KIM,https://www.mql5.com/ru/forum/131859 - il y a - différentes fonctions pour des lots, sauf pour celle dont j'ai besoin !
Par exemple, s'il y a plusieurs opérations d'"achat" ouvertes sur EUR, pouvez-vous indiquer comment déterminer leur montant total ?
GetLot(EURUSD, OP_BUY, magic)
Question résolue ! Une fonction a été découverte :
En quoi est-ce mal ? Alors, que retourne cette fonction ?
"Retourne la somme de beaucoup de postes ouverts " - n'est-ce pas ce qui est écrit ?
https://www.mql5.com/ru/code/9394
"Retourne la somme de beaucoup de postes ouverts" - n'est-ce pas ce qui est écrit ?
Je n'ai pas besoin de prendre en compte les locs. Ou plutôt, voici comment :
Ce dont j'ai besoin est ceci. S'il y a plusieurs positions ouvertes de vente et d'achat, je dois supprimer les contre-positions (de compensation), afin de ne rester que dans une seule direction.
Je voulais d'abord calculer la somme de toutes les "baies", puis la somme de toutes les "ventes". Ensuite, trouvez la différence (c'est-à-dire la taille totale la plus grande). Et cette "différence" devrait être laissée sur le marché, - et toutes celles qui lui sont opposées supprimées !
Donc, cette fonction GetAmountLotFromOpenPos ne fonctionnera pas ici ? Par exemple, si je mets
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
Ne retourne-t-il pas le nombre total de lots de toutes les positions de vente ?
ne me rendra-t-elle pas la somme des lots de toutes les positions de vente ?
Je n'ai pas besoin de prendre en compte les locs. Ou plutôt, voici comment :
Ce dont j'ai besoin est ceci. S'il y a plusieurs positions ouvertes de vente et d'achat, je dois supprimer les contre-positions (de compensation), afin de ne rester que dans une seule direction.
Je voulais d'abord calculer la somme de toutes les "baies", puis la somme de toutes les "ventes". Ensuite, trouvez la différence (c'est-à-dire la taille totale la plus grande). Et cette "différence" devrait être laissée sur le marché, - et toutes celles qui lui sont opposées supprimées !
Donc, cette fonction GetAmountLotFromOpenPos ne fonctionnera pas ici ? Par exemple, si je mets
GetAmountLotFromOpenPos(EURUSD,OP_SELL, -1)
Ne retourne-t-il pas le nombre total de lots de toutes les positions de vente ?
Dans le cas général :
SummLot = GetAmountLotFromOpenPos("0", OP_BUY, MagicNumber)- GetAmountLotFromOpenPos("0", OP_SELL, MagicNumber) ;