Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1663

 
artem artem #:

MakarFX, merci ! Maintenant, il n'y a pas de premier ordre non-signal supplémentaire, mais maintenant, pour une raison quelconque, le premier ordre signal (normal) entre 2 bougies plus tôt))). J'ai joint une capture d'écran du testeur à mon message, mais même en dépit de cette première commande - la chose la plus importante est faite, merci beaucoup encore) Avec les magiciens l'ont obtenu, alors je vais faire une variable externe et quand je vais attacher l'explorateur à un graphique spécifique d'une paire de devises, je vais changer le nombre pour chaque paire individuellement.

Je vais regarder l'ouverture.

Il n'est pas nécessaire de changer le magik, si le symbole est contrôlé.

 
Nerd Trader #:

J'ai déjà oublié... et au début je l'ai fait (c'est bien que je l'ai verrouillé), mais la méthode des conditions ne me semblait pas fiable, je voulais quelque chose de plus évident pour indiquer un changement d'ordre.

Eh bien, vous devez toujours vérifier les conditions à chaque nouveau tick, si cela n'a pas fonctionné au tick précédent - cela changera au nouveau tick.

Et le traitement des erreurs doit être fait.

 
Nerd Trader #:

J'avais déjà oublié... et je l'ai fait au début (c'est une bonne chose que je me sois engagé), mais la manière de la condition semblait peu fiable, je voulais quelque chose de plus évident pour indiquer un ordre modifié.

//+------------------------------------------------------------------+
if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0))
   ObjectCreate(0,OrderTicket(),OBJ_ARROW_UP,0,Time[0],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=-1;
   for(int i=0;i<ObjectsTotal();i++)
     {
      ticket=StringToInteger(ObjectName(0,i,0));
     }
   return(ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV monnaie de dépôt, toute la grille d'ordres est fermée

Veuillez m'aider à modifier le code pour qu'il y ait des points au lieu de Profit. Merci.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}
 
artem artem #:

MakarFX, merci ! Maintenant, il n'y a pas de premier ordre non-signal supplémentaire, mais maintenant, pour une raison quelconque, le premier ordre signal (normal) entre 2 bougies plus tôt))). J'ai joint une capture d'écran du testeur à mon message, mais même en dépit de cette première commande - la chose la plus importante est faite, merci beaucoup encore) Avec les magiciens l'ont obtenu, alors je vais faire une variable externe et quand j'attache l'espert à un graphique particulier de paire de devises, je vais changer le nombre pour chaque paire individuellement.

Quelle période a été testée et quel a été le nombre de confirmations ?
 
MakarFX #:

Makar, d'après ce que j'ai compris, il faut l'essayer à la place de la fonction CalculiteProfit().

 
EVGENII SHELIPOV #:

Makar, d'après ce que j'ai compris, il faut l'essayer à la place de la fonction CalculiteProfit().

oui

et changez ceci

int op = GetProfitOpenPosInPoint("", -1, Magic ); 
 
MakarFX #:
Quelle période avez-vous testée et quel a été le nombre de confirmations ?

MakarFX, sur cette capture d'écran, que j'ai jointe, testée sur EUR / USD - M 30 - tous les ticks - 01.08.21 à 03.09.21 - 26 ordres étaient (mais j'ai changé la constante de 4 à 8, j'ai décidé de regarder un plus grand nombre de bougies)

Si nous ramenons la constante à 4 chandeliers, alors pour la même période - alors 35 ordres, mais le premier ordre arrive aussi 2 ordres plus tôt

 
MakarFX #:

oui

et vous le changez.

Makar, pouvez-vous me dire s'il n'y a qu'un ordre min et max ?

 
EVGENII SHELIPOV #:

Makar, pouvez-vous me dire s'il n'y a qu'un ordre min et max ?

Voulez-vous dire "min et max" par billet ou par prix ?