Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 400

 
khorosh:


Merci Yuri.
Je vais essayer d'utiliser votre code, mais plus tard, car il faut le désassembler et comprendre le principe de fonctionnement.
L'étape décrite ci-dessus n'est pas difficile, alors je vais devoir démonter chaque fonction personnalisée de M. "N", et cela a le plus haut degré de complexité, respectivement, prendra beaucoup de temps, de 3 à 10 heures (comme ils disent : - Un jour. -).

Je vais finaliser mon code, c'est "mon habitat" et il n'y a rien à y étudier.

Merci encore, Yuri.




borilunad:
1 - Il ne peut rien faire ! 2 - Il veut seulement qu'on lui écrive ! 3 - Il est inutile d'expliquer ! 4 - Aucune logique du tout ! 5 - Un incorrigible perdant !

1 - Relativement, oui.
2 - M'a aidé à comprendre la situation.
3 - Pas du tout inutile.
4 - En raison du fait que vous répondez - oui.
5 - A terminé le semestre avec cinq B, toutes les autres notes - A.

Vous avez enfreint les règles du forum, tout comme moi.
Maintenant, votre compte est digne d'un avertissement, mon compte est digne d'une interdiction.

Veuillez excuser les actions irrationnelles (répondre aux critiques).
 
Link_x:

Merci, Yuri.
Je vais essayer d'utiliser votre code, mais plus tard, car je dois le démonter et comprendre le principe de fonctionnement.
L'étape décrite ci-dessus n'est pas difficile, alors je vais devoir démonter chaque fonction personnalisée de M. "N", et cela a le plus haut degré de complexité, respectivement, prendra beaucoup de temps, de 3 à 10 heures (comme ils disent : - Un jour. -).

Je vais finaliser mon code, c'est "mon habitat" et il n'y a rien à y étudier.

Merci encore, Yuri.






Vous n'avez pas besoin d'entrer dans le code de chaque fonction pour commencer. Il suffit de comprendre les paramètres utilisés dans la fonction, son but et son utilisation. Je ne suis pas allé moi-même dans les entrailles de chaque fonction. Je ne m'y suis plongé que lorsque j'ai dû le modifier d'une manière ou d'une autre. Je veux dire que vous utilisez avec succès les téléphones portables, les ordinateurs et les téléviseurs, sans connaître leurs schémas exacts et leur fonctionnement, mais cela ne vous empêche pas de les utiliser à vos propres fins. Dans ce cas, l'essentiel est de savoir comment utiliser ces fonctions. Toutes les fonctions et leur fonctionnement sont décrits ici . Vous apprendrez à les utiliser grâce aux tests, qui sont donnés pour chaque fonction. Vous deviendrez plus rapidement un programmeur si vous suivez cette voie. Mais réinventer son propre vélo est un chemin long et improductif. Construire un expert - selon votre version - c'est comme construire une maison sans matériaux de construction. Vous devez tout inventer vous-même. Il est beaucoup plus rapide de construire une maison lorsqu'il existe des blocs de construction (fonctions).
 

Bonjour !

Pouvez-vous me dire si la fonction AccountEquity() fait une demande au terminal ou au courtier ?

La question est motivée par l'hypothèse que l'appel de cette fonction à chaque tick peut irriter le courtier (surtout lorsqu'il exécute l'EA sur plusieurs graphiques en même temps) et par conséquent bloquer le compte ?

 
yan720:

Bonjour !

Pouvez-vous me dire si la fonction AccountEquity() fait une demande au terminal ou au courtier ?

La question est causée par l'hypothèse que l'appel de cette fonction à chaque tick peut irriter le courtier (surtout lorsqu'on exécute l'EA sur plusieurs graphiques simultanément) et par conséquent bloquer le compte ?


Oui au courtier bien sûr)))

Le terminal s'en moque.... Je vous donnerai les dernières données connues...

 
vadynik:
La question est de savoir si nous devons passer Magic dans la fonctionou non.

Cela peut être compris si vous savez à quoi sert l'assistant. Elle est nécessaire pour que l'EA puisse distinguer ses propres ordres des ordres d'un autre EA ou des ordres ouverts manuellement. Si vous avez plusieurs ordres d'achat stop et qu'il y a parmi eux plusieurs magiciens ou ordres manuels (sans magicien), le magicien est nécessaire pour la fonction. En général, il serait préférable de définir un magik comme paramètre pour une fonction afin d'universaliser ses fonctions. Par exemple, il devrait être fixé à -1 par défaut.

double BuystopPrice(int Magic = -1)
{
double Price=0;
  for (int i=OrdersTotal()-1; i>=0; i--) 
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
          if(OrderMagicNumber()==Magic && OrderType()==OP_BUYSTOP)
          {
           Price = OrderOpenPrice();
          break;
          }
        }
     }
    return(Price);
}

En fait, puisque le code de votre fonction détermine le prix de fixation du premier ordre d'achat-stop dans la boucle uniquement, la boucle elle-même n'est pas nécessaire en principe.

 
khorosh:
Il n'est pas nécessaire d'entrer dans le code de chaque fonction pour commencer. Il suffit de comprendre les paramètres qui sont utilisés dans la fonction, son but et son utilisation. Je ne suis pas allé moi-même dans les entrailles de chaque fonction. Je ne m'y suis plongé que lorsque j'ai dû le modifier d'une manière ou d'une autre. Je crois que vous utilisez avec succès les téléphones portables, les ordinateurs et les téléviseurs, sans connaître leurs schémas exacts et leur fonctionnement, mais cela ne vous empêche pas de les utiliser à vos propres fins. Dans ce cas, l'essentiel est de savoir comment utiliser ces fonctions. Toutes les fonctions et leur fonctionnement sont décrits ici . Vous apprendrez à les utiliser grâce aux tests, qui sont donnés pour chaque fonction. Vous deviendrez plus rapidement un programmeur si vous suivez cette voie. Mais réinventer son propre vélo est un chemin long et improductif. Construire un expert - selon votre version - c'est comme construire une maison sans matériaux de construction. Vous devez tout inventer vous-même. Il est beaucoup plus rapide de construire une maison lorsqu'il existe des blocs de construction (fonctions).


Vous êtes un homme sage, capable d'expliquer et de changer d'avis si nécessaire. :)
Cela dit, je vous remercie encore.

Dans ce cas, je laisse la construction d'une maison à partir d'organoïdes de cellules eucaryotes et j'utilise des matériaux de construction ordinaires pour sa construction.
 

Veuillez vérifier que deux fonctions ne contiennent pas d'erreurs.

L'essence de la première : il faut calculer un lot nécessaire pour sortir du drawdown après avoir fermé une grille d'ordres (ouverts sur marge), si le prix passe un certain nombre de points (TP-points) dans la bonne direction.

L'essence de la seconde : elle doit clôturer la moitié des ordres de la grille, en commençant par le plus ancien.

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= NormalizeDouble (TotalLot+Lot,2);
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= NormalizeDouble (TotalLot+Lot,2);
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
//+------------------------------------------------------------------+

void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
  int count = 0;
  for (int i = 0; i<= OrdersTotal(); i++)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         { 
           if (count<CountTrades(OP_BUY)/2 && CountTrades(OP_BUY)>3 )
           
             OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
             count++;
           
         }
       
       
         else if (otype == OP_SELL)
         {
           if (count<CountTrades(OP_SELL)/2 && CountTrades(OP_SELL)>3)
           
           OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
           count++;
           
         }
       }
     }
   }
   
 }
 
Les gars, vous ne pouvez pas faire ça... Vous pouvez aller directement à MQL5, mais la POSITION entière est ouverte là.....
 
yan720:


Pouvez-vous me dire si AccountEquity() interroge le terminal ou le courtier ?

au terminal
 
vadynik:


Je ne demande peut-être pas exactement, je veux dire que la fonction verra une magie qui est définie dans une variable globale.

ou doit-il être passé dans une fonction, bien que je soupçonne qu'il ne devrait pas l'être puisqu'il est global

Si elle est dans une variable globale, oui, elle le fera. Mais la fonction doit être universelle et fonctionner avec plus d'un assistant, et pour cela il est préférable de la passer comme paramètre de la fonction.
Raison: