Questions des débutants MQL5 MT5 MetaTrader 5 - page 383

 
Vitalie Postolache:

Si ce n'est pas externe - il y a PositionClose

Vous pouvez également ouvrir une position avec le même volume dans la direction opposée, ce qui entraînera une fermeture.

Cette fonction n'existe pas ?
 
Tapochun:

Nous définissons deux variables locales dans la fonction OnTick de type bool : buyExist = false et sellExist = false.

Quand un nouveau tick arrive, vous vérifiez s'il y a des ordres qui appartiennent à cet EA. S'il y a un ordre de vente, sellExist = true et la même chose avec l'ordre d'achat. Puis vous vérifiez si buyExist = true - n'ouvrez pas d'ordre d'achat. Il en va de même pour la vente. C'est tout.

Pourquoi avons-nous besoin de variables inutiles si nous allons vérifier de toute façon s'il y a des postes ouverts?

Nous avons vérifié s'il y avait des positions d'achat - aucun achat ouvert, nous en avons ouvert un. Pourquoi avons-nous besoin de variables ?

 
Artyom Trishkin:

Pourquoi avons-nous besoin de variables supplémentaires si nous vérifions de toute façon les postes ouverts?

Nous vérifions les achats - aucun achat ouvert - nous en ouvrons un, nous vérifions les ventes - aucune vente ouverte - nous en ouvrons une. Pourquoi avons-nous besoin de variables ?

Nous pouvons le faire de cette façon. Je l'ai simplement présenté dans mon esprit comme une fonction de contrôle distincte où les drapeaux sont transmis par référence. Dans ce cas, ma variante ne remplit qu'une seule fonction - vérifier les ordres et non pas vérifier+ouvrir. Il serait plus facile d'étendre le programme. En bref - une fonction - une action.
 
Artyom Trishkin:

Pourquoi avons-nous besoin de variables supplémentaires si nous vérifions de toute façon les postes ouverts?

Nous vérifions les achats - aucun achat ouvert - nous en ouvrons un, nous vérifions les ventes - aucune vente ouverte - nous en ouvrons une. Pourquoi avons-nous besoin de variables ?

Je pensais que ce serait similaire à OrderTotal.
 
le0nid2014:
Je pensais que ce serait quelque chose comme OrderTotal, mais ici vous devez faire le rebond et écrire la fonction pour reconnaître les commandes ?
Comment pouvez-vous le faire sans force brute ? Vous pouvez avoir beaucoup d'ordres provenant de nombreux conseillers experts pour un grand nombre de symboles à un moment donné. Vous voulez que votre conseiller expert ne traite que ses propres ordres, n'est-ce pas ?
 
Tapochun:
Tu pourrais le faire. Je l'ai juste imaginé dans ma tête comme une fonction de contrôle séparée, où les drapeaux sont passés par référence. Dans ce cas, ma variante ne remplit qu'une seule fonction - vérifier les ordres, et non pas vérifier + ouvrir. Il serait plus facile d'étendre le programme. En bref - une fonction - une action.

Eh bien, la vérification est un appel de fonction qui renvoie un drapeau :

if(!Function_check_open_position(symbol, OP_BUY,magic)) function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment) ;
if(!Function_check_open_position(symbol,OP_SELL,magic)) Fonction_open_position(symbol,OP_SELL,Lots,stop_loss,take_profit,magic,comment) ;

 
le0nid2014:
Je pensais que ce serait quelque chose comme OrderTotal.
Bien sûr, vous pouvez rechercher un ordre de marché par symbole, type et magicien, et renvoyer le résultat de la recherche : true - oui, false - non.
 
new-rena:
Cette fonction n'existe pas ?
Oui, je me suis trompé quand j'ai dit "pas d'inludes", cette fonction est juste dans l'inludeur Trade.mqh.
 
Tapochun:
Comment y arriver sans trop en faire ? Vous pouvez avoir un tas d'ordres provenant d'un tas d'Expert Advisors sur un tas de symboles en même temps. Et vous voulez que votre EA ne traite que vos commandes, n'est-ce pas ?

il s'agit d'un ajout initial au robot principal . le robot principal a toujours deux ordres ouverts dans les deux sens (le robot principal les prend, mais le robot principal lui-même ne peut pas démarrer . Lorsque le robot principal termine une des directions, il la ferme) et ensuite cet EA doit à nouveau ouvrir un ordre dans la direction du marché où il n'y a pas d'ordre.

nous devons juste y ajouter des conditions d'ouverture de commande


double externe Lots = 1.00 ;

extern int MagicNumb = 698541 ; //Magic


int start ()

{


si(OrdersTotal() == 0 && ********** )

OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0, "5891",MagicNumb,0,Red) ;


si (OrdersTotal() == 0 && ***********)

OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0, "58892",MagicNumb,0,Red) ;


}

 
le0nid2014:
il s'agit d'un ajout initial au robot principal . le robot principal a toujours deux ordres ouverts dans les deux sens (le robot principal les prend, mais le robot principal lui-même ne peut pas démarrer . Lorsque le robot principal termine l'une des directions, il la ferme) et ensuite cet EA doit à nouveau ouvrir un ordre dans la direction du marché dans laquelle il n'y a pas d'ordre.
Les deux EA doivent avoir les mêmes assistants. Ils doivent être lancés sur des graphiques différents pour un même symbole. En général, bien sûr, il est plus facile d'améliorer l'EE principale que d'en construire une autre.