[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 302

 
Aidez-moi conseil, il y a un signal pour ouvrir une position d'achat, après un certain temps il y a un autre signal ou plusieurs positions d'achat, dont chacune dure pendant 1 bougie comment faire au moment de chaque signal pour ouvrir un nouvel ordre et seulement un, et non pas des paquets sans fermer les ordres précédents ?
 
tommy27:
Veuillez me conseiller, il y a un signal pour ouvrir une position d'achat, quelque temps après il y a un autre signal ou plusieurs signaux d'achat, chacun d'entre eux dure 1 bougie comment faire pour qu'un nouvel ordre soit ouvert pendant chacun de ces signaux et seulement un, et non pas des paquets sans fermer les ordres précédents ?
Vérifiez le nombre de barres depuis lequel la dernière position a été ouverte. Si elle est supérieure à la valeur spécifiée, une nouvelle position peut être ouverte.
 
artmedia70:
Vérifiez le nombre de barres depuis lequel la dernière position a été ouverte. S'il est supérieur, un nouveau poste peut être ouvert.


Merci.
 

J'apprends à travailler avec les bibliothèques. J'écris un conseiller expert, il y a une fonction comme celle-ci :

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}

Je l'ai mis dans l'inclusion, tout fonctionne comme il se doit. Mais si vous le connectez à la bibliothèque, il y a une erreur lors de la compilation de l'Expert Advisor :

'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 19)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 19)
4 ошибок, 0 предупреждений.

Pourquoi cette fonction n'est-elle pas visible dans la bibliothèque ?

La bibliothèque a ce contenu et compile parfaitement :

//+-------------------------------------------------------------------------------------+
//|                                                                  Scalper_M1_lbr.mq4 |
//|                                                                                 hoz |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""
#property library

int i_fastMATF,
    i_fastMAPeriod,
    i_fastMAShift,
    i_fastMAMethod,
    i_fastMAApplied,
    i_fastMAIndex,
    i_slowMATF,
    i_slowMAPeriod,
    i_slowMAShift,
    i_slowMAMethod,
    i_slowMAApplied,
    i_slowMAIndex,
    i_filtrMATF,
    i_filtrMAPeriod,
    i_filtrMAShift,
    i_filtrMAMethod,
    i_filtrMAApplied,
    i_filtrMAIndex;
//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
 
Bonjour à tous. J'ai vraiment besoin de cours sur la programmation. Pouvez-vous me dire où je peux les télécharger sans problème supplémentaire ? Je n'ai trouvé que celles-ci : http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Mais elles ne me conviennent pas, car elles sont trop compliquées.
 
popovagalina:
Bonjour à tous. J'ai vraiment besoin de cours sur la programmation. Pouvez-vous me dire où je peux les télécharger sans problème supplémentaire ? Je n'ai trouvé que celles-ci : http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Mais elles ne me conviennent pas, car elles sont trop compliquées.
Pourquoi le manuel de S. Kovalyov n'est-il pas bon pour vous ? Voir ci-dessus et Documentation et TA pour aider ! Bonne chance !
 

Bonjour.

Pourriez-vous me dire si l'opérateur OrdersTotal() compte réellement tous les ordres ouverts ou ceux qui appartiennent au symbole assigné au Conseiller Expert ?

Si c'est général, comment pouvons-nous calculer uniquement l'EURUSD s'il y a des ordres ouverts pour l'USDCHF, etc.

Merci.

 
ed3sss:

Bonjour.

Pourriez-vous me dire si l'opérateur OrdersTotal() compte réellement tous les ordres ouverts ou ceux appartenant au symbole assigné au Conseiller Expert ?

Si c'est général, comment pouvons-nous calculer uniquement l'EURUSD s'il y a des ordres ouverts pour l'USDCHF, etc.

Merci.


Il les calculera tous. Si vous voulez être spécifique à un symbole ou à autre chose, vous pouvez utiliser cette fonction :

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

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);
}
 
J'ai maintenant une question : les signaux à la chouette proviennent de 2 indicateurs, le premier signal dure 1 barre puis disparaît, et le second apparaît soit sur la même barre soit après quelques barres. Comment faire en sorte que le hibou se souvienne du premier signal et attende le deuxième, quel que soit le nombre de barres plus tard.
 
Une autre question. l'indicateur xrust (https://www.mql5.com/ru/code/8318) maintenant j'ai besoin d'envoyer le prix du maximum et du minimum à l'Expert Advisor (avec sortie sur le graphique). j'ai fait quelques dépannages, mais je ne peux pas obtenir les valeurs dont j'ai besoin(( : un est envoyé, un autre est égal à 0. comment afficher les vraies valeurs ?