[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 898

 
Dimka-novitsek:
Même situation.
Afficher le code
 
arvis:
Comment puis-je configurer l'indicateur pour compter les bénéfices en pips à partir d'un certain moment dans MT4 ?

Si vous voulez qu'il soit basé sur le temps, c'est ainsi qu'il sera à la fermeture du prix, et si vous voulez qu'il compte les points à partir de 21:00, alors vous devez jouer avec le temps et il n'y a rien de compliqué.

 double Profit; // или double Profit = 0;

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2);
CurrCl = iClose(Symbol(), 0, 1);

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}
 

Veuillez me conseiller sur la manière de rendre le code suivant correct :

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

Pour que je puisse faire comme ça :

if (LastOpenOrder - Bid >= 25 * Point) CloseOrder;

Il s'agit de fermer uniquement ce dernier ordre ouvert, sans toucher aux autres !

Merci d'avance.

 

Comment écrire correctement dans mon EA et obtenir le résultat de l'indicateur dans celui-ci ?

double ROC = iCustom(NULL,0, "ROC",12,0,0) ; - aucune sortie de données.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0) ; - les données ne sont pas imprimées.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0) ; - les données ne sont pas imprimées.

Indicateur : https://www.mql5.com/ru/code/9340

 
DhP:

Comment écrire correctement dans mon EA et obtenir le résultat de l'indicateur dans celui-ci ?

double ROC = iCustom(NULL,0, "ROC",12,0,0) ; - aucune sortie de données.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0) ; - les données ne sont pas imprimées.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0) ; - les données ne sont pas imprimées.

Indicateur : https://www.mql5.com/ru/code/9340

La méthode correcte serait la suivante :

double ROC = iCustom(NULL,0,"ROC",0,0);

mais je n'arrive pas à comprendre ce que vous allez en faire. eh bien, peut-être que je n'ai pas besoin de le comprendre ;)

 
belck:

Si vous voulez utiliser l'heure, c'est ainsi qu'elle sera à la fermeture du prix, et si vous voulez utiliser 21:00, alors vous devez jouer avec le temps et il n'y a rien de compliqué à cela.


Merci pour l'aide, Belck.

Dites-moi, comment pouvez-vous calculer le même montant de profit en pips, si vous tradez sur plusieurs paires ? En outre, vous devez tenir compte des affaires conclues.

 
arvis:


Merci pour votre aide, Belck.

Comment calculer le même bénéfice en pips si je trade sur plusieurs paires ? En outre, je dois également tenir compte des transactions fermées.

Il m'est difficile de répondre à cette question.

Mais je peux dire une chose que tout cela devrait être appelé.

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2); // то тут указываете какая валютная пара и по желанию период : PrevCl = iClose("EURUSD", PERIOD_H1, 2);
CurrCl = iClose(Symbol(), 0, 1); // тут так же

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}

le prix du dernier ordre ouvert est appelé comme ceci :

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 
Tout est plus ou moins clair. Merci beaucoup pour votre temps, Belck.
 
arvis:


Merci pour l'aide, Belck.

Comment calculer le même bénéfice en pips si je trade sur plusieurs paires ? J'ai déjà commencé à le faire de cette façon, mais je ne sais pas trop comment m'y prendre.

J'ai commencé à le faire de cette façon, mais je comprends maintenant que je me suis embrouillé :

double LastOpenPriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

и

double LastClosePriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderClosePrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 

C'est sur ce critère que j'achoppe :

- S'il y a eu plus d'un ordre fermé, il faut compter leur nombre total de pips rentables, mais ce sont les pips qui doivent être comptés.

Veuillez me conseiller sur la manière de procéder correctement dans ce code :

LastBuyPrice = FindLastBuyPrice();     

if (Ask - LastBuyPrice >= 25 * Point) {
      for (int l_pos_16 = OrdersTotal()  - 1; l_pos_16 >= 0; l_pos_16--) {
 OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         }
       }
     }


double FindLastBuyPrice() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
Raison: