Questions des débutants MQL4 MT4 MetaTrader 4 - page 88

 
Gregory Kovalenko:

Bonjour. Comment puis-je obtenir le profit/la perte actuel(le) de l'ordre ouvert en cours ?

Essayer

- Les retours sont uniquement positifs, les bénéfices, si la position est déficitaire à ce moment-là, la perte n'est pas indiquée.

P.S. Dans l'historique des commandes,OrderProfit() affiche également les moins.

Comment essayez-vous d'obtenir un profit, montrez tout le code
 

concernant le profit actuel sur l'ordre (n'a pas trouvé l'initiateur du post)

double profit=OrderProfit()+OrderSwap()+OrderCommission();
 
Renat Akhtyamov:

concernant le profit actuel sur l'ordre (n'a pas trouvé l'initiateur du post)


Merci, il y avait effectivement une erreur dans la logique du code, c'est pourquoi
double profit=OrderProfit()+OrderSwap()+OrderCommission();

n'a pas fonctionné.

Une question intéressante s'est posée.

Je regarde la dernière commande dans l'historique, je vois une perte. Je voudrais diminuer le tp et augmenter le lot. tp

MarketInfo(Symbol(),MODE_STOPLEVEL)

Comment puis-je calculer le lot nécessaire, en connaissant le prix actuel pour ouvrir et le nouveau tp - pour fermer la perte ?

 
Gregory Kovalenko:

Merci, il y avait effectivement une erreur dans la logique du code.

n'a pas fonctionné.

C'est une question intéressante.

Je regarde la dernière commande dans l'historique et je vois une perte. Je voudrais diminuer le tp et augmenter le lot. tp - comment calculer quel lot est nécessaire.

Comment puis-je calculer le lot nécessaire, en connaissant le prix actuel pour ouvrir et le nouveau tp - pour fermer la perte ?

Cette question est intéressante, mais elle est liée au développement de la stratégie. Personnellement, je vais passer mon tour.
 
Gregory Kovalenko: Comment calculez-vous le lot nécessaire, en connaissant le prix actuel pour ouvrir et le nouveau tp - pour fermer la perte ?

Calcule la part de la perte qui sera couverte par un ordre dont le lot est égal à OrderLots(). Ouvre un ordre avec un lot égal à OrderLots(), divisé par la valeur obtenue.

En d'autres termes, si l'ordre OrderLots() ferme 0,5 pertes, vous ouvrez un ordre avec le lot OrderLots()/0,5 = OrderLots()*2.

Si OrderLots() ferme la perte deux fois, utilisez OrderLots() / 2

 
LRA:

Calcule la part de la perte qui sera couverte par un ordre dont le lot est égal à OrderLots(). Ouvre un ordre avec un lot égal à OrderLots(), divisé par la valeur obtenue.

Il est plus facile de calculer la part de la perte qui sera couverte par l'ordre avec le lot = 1. Ouvre un ordre avec le lot = 1, divisé par la valeur résultante.
 

J'ai une quadruple question.

tout le monde a une limite de 3000 pips dans les paramètres du graphique, ou quelqu'un a-t-il un scaling vertical qui fonctionne du tout ?

Voici une capture d'écransjfhakslljas


 

Application des "programmes en boucle".

Veuillez expliquer les avantages et les inconvénients. Est-ce mieux que d'attendre un nouveau tick à partir de start() ? Augmente-t-il la vitesse de réponse à un nouveau tic ?

start()
   {
   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }
   return;
   }

 
smart_man:

Application des "programmes en boucle".

Veuillez expliquer les avantages et les inconvénients. Est-ce mieux que d'attendre un nouveau tick à partir de start() ? Augmente-t-il la vitesse de réponse à un nouveau tic ?

start()
   {
   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }
   return;
   }

Tu ne devrais pas le faire. Il consommera beaucoup de ressources. Et quel est le problème avec la vitesse de réponse sans boucle ?
 
smart_man Expliquez les avantages et les inconvénients. Est-ce mieux que d'attendre un nouveau tick à partir de start() ? Augmente-t-il la vitesse de réaction à un nouveau tic ?

   while(!IsStopped())
      {
      RefreshRates();
      //...
      Sleep(5);
      }

Un tick est l'arrivée de nouvelles données en provenance du serveur. Et il doit être traité immédiatement après son arrivée. Si vous le faites en boucle avec un délai de 5 ms, alors la plupart des ticks arriveront notamment pendant ce délai. Ainsi, le traitement sera retardé de 0 ... 5 ms.
Raison: