conseiller expert - questions diverses - page 16

 

Marché fermé !

#1 - Je n'appelle jamais le Button Object par OnTick(), Start(), est-ce normal ?
#2
- Puis-je appliquer au Button Object 'ANCHOR_RIGHT_UPPER' ?
#3 - Donc, j'ai toujours besoin d'aide pour mon problème #145, s'il vous plaît.

Merci !

 

#1 - I never call Button Object by OnTick(), Start(), so is it normal?

Oui

#2- Puis-je appliquer à l'objet bouton 'ANCHOR_RIGHT_UPPER' ?

Non, le point d'ancrage est fixé à ANCHOR_LEFT_UPPER

#3 - Donc, j'ai encore besoin d'aide pour mon problème #145, s'il vous plaît.

Oui, vous avez raison - EventSetMillisecondTimer(250)

 
honest_knave:

Oui
Non, le point d'ancrage est fixé à ANCHOR_LEFT_UPPER
Oui, vous avez raison - EventSetMillisecondTimer(250)

J'apprécie beaucoup. Merci beaucoup.
 

#Profit Orders Counting - Open

J'essaie juste d'obtenir toutes les positions rentables pour calculer une seule valeur.
Cela me donne des valeurs séparées.

J'ai vraiment perdu la tête. J'ai essayé plusieurs méthodes, et j'ai fait beaucoup de recherches à ce sujet, mais je n'ai pas obtenu de bons résultats.
S'il vous plaît, aidez-moi, s'il est possible d'expliquer un peu plus sur le calcul des bénéfices, j'apprécie beaucoup.

J'espère que je recevrai bientôt une réponse satisfaisante.

void profitcalcfnc()
{
    double trueprofit = 0;
    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers == false && OrderSymbol() != Symbol() ) continue;
        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            Print( "Profit: ", trueprofit );
            ObjectSetString  ( 0, "all profit counting object", OBJPROP_TEXT, DoubleToString( trueprofit, 2 ) );
        }
    }
    //---
    return;
}

Merci d'avance.

 
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();

Vous écrasez la valeur de trueprofit à chaque itération de la boucle, au lieu de l'augmenter.

Rappelez-vous ceci :

profit = OrderProfit();

a été changé en ceci :

profit_buy += OrderProfit();
Vous devez être clair entre ce que vous voulez qu'il se passe à chaque itération de la boucle (chaque commande) et ce que vous voulez qu'il se passe après la boucle (après avoir vérifié toutes les commandes).
 
honest_knave:
Vous devez être clair entre ce que vous voulez qu'il se passe à chaque itération de la boucle (chaque ordre) et ce que vous voulez qu'il se passe après la boucle (après avoir vérifié tous les ordres).

Merci pour votre réponse rapide.
Je suis peut-être trop fatigué, je suis désolé. ( Je n'arrive pas à comprendre ce que jepourrais faire. )

J'ai besoin de décrire un peu plus mon problème (dans quelle mesure je peux le faire).
J'ai donc 2 fonctions :

  1. J'utilise le premier d'entre eux pour la fonction de bouton - qui, lorsque je clique dessus, ferme toutes les positions rentables. Cela fonctionne bien jusqu'à présent. (Je ne peux pas le tester suffisamment - mon courtier a désactivé les transactions).
  2. J'utilise le deuxième pour la fonction Label - qui pourrait me montrer toutes les valeurs rentables dans un seul objet Label. ( Mais je ne peux pas le faire )

Enfin, je voudrais que cette fonction de calcul de profit ( mon dernier code de commentaire) puisse calculer les deux types d'ordres " OP_SELL et OP_BUY " juste rentables.

Merci d'avance.

 

Comment essayez-vous d'afficher toutes les valeurs rentables dans une étiquette ?

Voulez-vous dire toutes les valeurs additionnées de AcountProfit() ou pour chaque OrderProfit() séparé.

Si vous avez besoin de quelque chose comme ceci :


Veuillez consulter cet article :

https://www.mql5.com/en/articles/2723

Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
  • 2016.10.17
  • Anatoli Kazharski
  • www.mql5.com
The next version of the Easy And Fast library (version 3) is presented in this article. Fixed certain flaws and added new features. More details further in the article.
 

Merci pour votre commentaire.
Désolé pour la confusion.

Non, je pense que j'ai besoin de quelque chose de différent.
Je vais essayer de clarifier mon problème.

J'ai 3 positions pour EURUSD. Deux d'entre elles sont rentables, l'une d'entre elles est une position de perte. J'ai donc juste besoin de calculer pour deux d'entre elles si elles sont rentables.
Par exemple, si chacune d'entre elles est à +1,00 (2 positions rentables = +2,00), je dois simplement obtenir la valeur de toutes les positions rentables.

Print( "Profit: ", 2.00 ); // absolutely no separately - I just need - could adds profitable values 1.00 + 1.00 = 2.00

Je viens de créer rapidement l'onglet ci-dessous pour m'aider à comprendre ce que j'essaie de dire. ( en bas de ce commentaire fichier image )
( L'anglais n'est pas ma langue maternelle - j'ai parfois du mal avec elle )

Tous les meilleurs.

Fichier image de l'onglet du panneau commercial

 
double totalprofit=0;

// in your orderselect loop put
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}
 

#Comptage des ordres à profit - Fermé

Marco vd Heijden:
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}

J'ai résolu mon problème après votre excellent exemple de code.
C'est génial, merci beaucoup !



honest_knave:

Vous écrasez la valeur de trueprofit à chaque itération de la boucle, au lieu de l'ajouter à la valeur.
Rappelez-vous ceci :
Vous devez être clair entre ce que vous voulez qu'il se passe à chaque itération de la boucle (chaque commande) et ce que vous voulez qu'il se passe après la boucle (après avoir vérifié toutes les commandes).

Juste après avoir terminé le script de code ci-dessous.
Une fois de plus je vérifie votre commentaire, alors je sais que vous l'avez expliqué à moi. Mais mon anglais empêcher de le comprendre.

Bonne chance à chacun d'entre vous.

void calc()
{
    double trueprofit  = 0;
    double totalprofit = 0;

    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers != true && OrderSymbol() != Symbol() ) continue;

        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            totalprofit += OrderProfit() + OrderSwap() + OrderCommission();
            Print( "Profit: ", DoubleToString( totalprofit, 2 ) );
            ObjectSetString  ( 0, _Checkthisout_name_Label, OBJPROP_TEXT, "Total Profit: " + DoubleToString( totalprofit, 2 ) );
        }
    }
    //---
    return;
}

J'espère que ce script de code fonctionnera bien. Si quelque chose de mal dans le code ci-dessus, s'il vous plaît laissez-moi savoir.
Merci pour tout.

Raison: