Questions des débutants MQL5 MT5 MetaTrader 5 - page 833

 
Vladimir Karputov:

Tout d'abord, formulez clairement :

  • la condition pour ouvrir une position
  • condition de fermeture de la position

Les principales conditions d'ouverture de position sur l'exemple de l'ouverture à l'achat (pour les ventes - miroir) :

  1. la ligne stochastique rapide croise la ligne stochastique lente vers le haut.
  2. nous devons ajouter une condition - s'il existe une position ouverte à l'achat, lors d'un nouveau signal (voir le point ci-dessus), une transaction est ouverte uniquement lorsque le prix d'ouverture de la nouvelle transaction est supérieur au prix d'ouverture de la dernière position ouverte d'un nombre donné de points, par exemple 30.

Les conditions pour fermer une position (pour acheter), les deux conditions doivent être remplies

  1. la ligne stochastique lente traverse le niveau 80 stochastique de haut en bas
  2. une condition doit être ajoutée - il s'agit du deuxième croisement (voir point ci-dessus) pour chaque position précédemment ouverte.
Désolé si je n'ai pas expliqué la clôture, sur le graphique la clôture ressemble à ceci : deux signaux pour fermer le trade sont marqués avec des croix rouges, parce que la ligne stochastique lente (rouge) traverse le niveau 80 vers le bas. Mais la transaction n'est fermée qu'au deuxième signal/croisement.


 
gastinets:

les conditions de base pour ouvrir une position en utilisant l'exemple d'une ouverture d'achat (pour la vente en miroir) :

  1. la ligne stochastique rapide croise la ligne stochastique lente de bas en haut
  2. Nous devons ajouter une condition - s'il existe une position ouverte à acheter, lors d'un nouveau signal (voir ci-dessus), une position est ouverte uniquement lorsque le prix d'ouverture d'une nouvelle position est supérieur au prix de la dernière position ouverte d'un nombre donné de points, par exemple 30.

***


Il semble que nous ayons manqué une condition pour ouvrir une position: dans quelle fourchette doit se trouver l'indicateur (ou un niveau au-dessus ou au-dessous duquel l'indicateur doit se trouver) ...

 
Vladimir Karputov:

Il semble que nous ayons manqué la condition pour ouvrir une position: dans quelle fourchette l'indicateur doit se trouver (ou le niveau au-dessus ou au-dessous duquel l'indicateur doit se trouver) ...

Si nous pouvons abaisser le niveau pour des raisons de simplicité), c'est-à-dire que le niveau stochastique n'est pas important pour l'ouverture de
.

 
gastinets:

Si nous pouvons abaisser le niveau pour des raisons de simplicité) , c'est-à-dire que le niveau stochastique n'est pas important pour l'ouverture.

Pouvons-nous le déplacer vers un sujet distinct, quelque chose comme" Conseiller expertstochastique, positions en retrait" ?

 

Remettons ça à plus tard.

Dois-je créer un nouveau sujet ou le ferez-vous ?

 
gastinets:

Allons-y.

Je dois créer un nouveau sujet ou vous le faites ?

Veuillez créer un fil de discussion dans la section :Systèmes de trading automatisés

 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL4 MT4 MetaTrader 4".
 
Vladimir Karputov:

Je pense que vous pouvez faire beaucoup plus simple - dans le Conseiller Expert, le seuil pour CLOSE fixé à 100, et donner au signal un poids de 0.5 - ainsi le signal avec un poids de 0.5 ne dépassera JAMAIS le seuil de 100


Merci ! Il semble que cela fonctionne !

 
Veuillez expliquer quel est le problème. La fonction est censée examiner toutes les positions ouvertes et compter le nombre de positions ouvertes avec un nombre magique donné. Mais en fait, il n'en choisit qu'un seul parmi toute la liste ouverte par un autre EA avec le même ticket et le même numéro magique, donc le compte est toujours =0.
int OpenPositions()//проверка открытых позиций
  {
   int count=0;
   for(int z=PositionsTotal()-1; z>=0; z --)
     {
      if(!PositionSelect(_Symbol))
        {
         Print(__FUNCSIG__" позиция не выбрана ",GetLastError()); continue;
        }
      long  ticket = PositionGetInteger(POSITION_TICKET);
            Print(__FUNCSIG__" ТИКЕТ ", IntegerToString(ticket));
      ulong myMN=PositionGetInteger(POSITION_MAGIC);
            Print(__FUNCSIG__" МАГИК ", IntegerToString(myMN));
      if(myMN==Magic)
            count++;
     }
   return(count);
  }
Raison: