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

 
Taras Slobodyanik:

- Regardez l'heure de la dernière mesure
- additionner tout ce qui a été fermé sur ce bar
- soustraire du solde actuel

et ainsi de suite, un par un, tous les bars.

Ne pouvez-vous pas le faire sans arithmétique ? Peut-être pourriez-vous écrire une sorte de fonction définie par l'utilisateur ?

 
novichok2018:
Je n'ai probablement pas formulé ma question correctement, puisque les réponses sont hors sujet. Je ne me soucie pas de savoir si les positions ont été fermées ou non, et je ne m'intéresse pas à la valeur d'un tick. J'ai besoin de savoir quel était le solde du compte au moment de la fermeture de 1, 2, 3 barres d'un symbole particulier pour comparaison. Des positions sur ces barres ont été ouvertes et fermées, y compris des positions sur d'autres symboles : dans certains cas, les positions ont été fermées dans le positif, dans d'autres cas - dans le négatif, dans d'autres cas - pas encore fermées, cela signifie que l'équilibre a changé. J'ai besoin de connaître les valeurs spécifiques. Merci.

il n'y a pas de fonctions standard, ni de recherche dans le forum ou par d'autres moyens.

Dans le testeur, vous pouvez simuler la situation suivante : lorsque vous effectuez des transactions en utilisant plusieurs Expert Advisors, vous ne pouvez pas savoir quel était le solde à ce moment-là. Bien sûr, vous pouvez essayer de compter les ordres qui ont été ouverts, et ensuite chercher un moment où il n'y avait pas d'ordres ouverts dans l'historique du terminal ... Et le résultat final ne signifie pas que tout sera pris en compte

dans le testeur, vous pouvez facilement simuler cette situation - décrire dans la portée globale une variable et vérifier la condition dans OnTick if(OrderTotal()==0) StartBalance = AccountBalance() ;

et ensuite, lors de l'ouverture des ordres dans le testeur, vous avez la valeur initiale de balance.... Vous pouvez y ajouter à chaque barre la valeur des ordres de profit, vous pouvez ajouter ces valeurs à un tableau ou à une liste.


Mais si vous voulez utiliser ce code pour un compte avec plusieurs Expert Advisors, vous devez formuler votre tâche non pas comme une recherche du solde il y a n barres, mais comme un profit total des ordres ouverts ; vous n'écrivez pas d'ordres ouverts, vous ouvrez un ordre - commencez à ajouter un profit à chaque barre dans le tableau. Cela signifie que vous cherchez une opportunité de changer la logique de votre TS non pas en relation avec le solde, mais avec le profit des ordres ouverts et/ou le profit des ordres fermés dans l'historique du terminal pour une période (jour, heure ?).

 
Igor Makanu:

il n'y a pas de fonctions standard, ni de recherche dans le forum ou par d'autres moyens.

Dans le testeur, vous pouvez simuler la situation suivante : lorsque vous effectuez des transactions en utilisant plusieurs Expert Advisors, vous ne pouvez pas savoir quel était le solde à ce moment-là. Bien sûr, vous pouvez essayer de compter les ordres qui ont été ouverts, et ensuite chercher un moment où il n'y avait pas d'ordres ouverts dans l'historique du terminal ... Et le résultat final ne signifie pas que tout sera pris en compte

dans le testeur, vous pouvez facilement simuler cette situation - décrire dans la portée globale une variable et vérifier la condition dans OnTick if(OrderTotal()==0) StartBalance = AccountBalance() ;

et ensuite, lors de l'ouverture des ordres dans le testeur, vous avez la valeur initiale de balance.... Vous pouvez y ajouter à chaque barre la valeur des ordres de profit, vous pouvez ajouter ces valeurs à un tableau ou à une liste.


Mais pour travailler avec ce code sur un compte avec plusieurs EAs, la tâche ne devrait pas être de rechercher le solde il y a n barres, mais de faire la somme des profits des ordres ouverts, pas d'ordres ouverts, ordres ouverts - commencer à ajouter le profit à chaque barre dans le tableau. Cela signifie que vous cherchez une opportunité de changer la logique de votre TS non pas liée au solde, mais au profit des ordres ouverts et/ou au profit des ordres fermés dans l'historique du terminal pour une période (jour, heure ?).

Compris. Merci pour cette réponse détaillée.

 

Bonjour, Comment puis-je obtenir les paramètres d'entréeAPRES avoir créé une poignée d'indicateur technique qui a été créée en utilisant iCustom.

Par exemple

iCustom(NULL,0, "name_indicator",1,2,3) - comment obtenir les paramètres d'entrée 1,2 et 3 ?

 
Bonjour, pourriez-vous m'indiquer comment connaître le pourcentage de drawdown actuel ?
 
nalyk:
Bonjour, pourriez-vous m'indiquer comment connaître le pourcentage de drawdown actuel ?

Tenir un compte de l'équité

 
nalyk:
Bonjour, pourriez-vous m'indiquer comment connaître le pourcentage de drawdown actuel ?
double drawdown = AccountProfit()*100/AccountBalance();
 

Est-il possible d'appliquer un modèle à une structure et à une classe pour y déclarer des variables d'un type de modèle afin de travailler ultérieurement avec ces variables et de s'y référer ? J'ai essayé avec une structure.

templ(T)struct A
{
  T val;
  int ind;
};

Il compile, mais ne permet pas d'attribuer un nom à la structure.

 
Bonjour, aidez-moi à faire ce qui suit :
Il est nécessaire de faire un profit cible pour chaque position ouverte sur le marché, mais pas total, mais séparé !
Exemple : EURUSD a ouvert et a un objectif de profit de 1$ dans ses paramètres, et dès qu'il l'a atteint, la position s'est fermée d'elle-même, seulement elle !
Chaque paire de devises doit fonctionner par elle-même, et non par le bénéfice total !

J'ai trouvé le code pour le profit total pour toutes les paires :
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  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 (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
aide à refaire pour chaque paire de devises séparément......Merci beaucoup !
 
ponochka:
Bonjour, veuillez m'aider à faire ce qui suit :
Il est nécessaire d'établir un objectif de profit pour chaque position ouverte sur le marché, mais pas total, mais séparé !
Exemple : EURUSD a ouvert et a un objectif de profit de 1$ dans ses paramètres et dès qu'il l'a atteint, la position s'est fermée d'elle-même, juste celle-là !
Chaque paire de devises doit fonctionner par elle-même, et non par le bénéfice total !

J'ai trouvé le code pour le profit total pour toutes les paires :
aide à refaire pour chaque paire de devises séparément......Merci beaucoup !

Passez dans le premier paramètre de cette fonction la chaîne avec votre paire et elle ne comptera que les bénéfices sur cette paire.

Passez dans le second paramètre de cette fonction le type d'opération (achat ou vente) et elle comptera le profit uniquement sur cette opération.

Et il en sera de même pour le nombre magique. Il s'agit d'une fonction universelle.

Raison: