[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 311

 

Je pense que je dois utiliser un fichier externe pour afficher l'indicateur afin de pouvoir l'utiliser comme un conseiller expert, je n'arrive pas à comprendre ce qui se passe.Je pense que je suis un peu fatigué lorsque j'essaie d'utiliser un fichier externe mais je ne sais pas ce qui ne va pas.

1) avec le rapport

Qui aidera à terminer ce qu'il a commencé avec ceux qui partageront la stratégie (Indicator crunch seulement une partie de la stratégie, mais pas moins important). Real grad (ne peut pas pour si longtemps chanceux, fauché seulement notre énergétique et que pas mettre une boucle d'arrêt, jusqu'à ce moment-là, tout va sur la hausse et vous voyez avec quel progrès).

Dossiers :
 
mais voici les morceaux de code
Dossiers :
 

Pouvez-vous me dire ce qui ne va pas ? Quatre ordres consécutifs se modifient normalement, mais au quatrième tic-tac, le système commence à écrire OrderModify error 1.

Après un renversement de tendance, le premier ordre va bien, le deuxième ordre se modifie normalement, mais on écrit à nouveau les mêmes bêtises...

La normalisation ne joue pas de rôle.

Je me suis battu pendant plusieurs jours !

   for (x=0;x<OrT;x++)
   {
   if (OrderSelect(x,SELECT_BY_POS)==true)
    {
     if (OrderMagicNumber() == magic)
      {
       if (OrderType = OP_BUY)
       {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (High[m]-OrderOpenPrice() >= TS*Point)
        {
         if (OrderOpenPrice()+spread*Point != OrderStopLoss())
         {
          OrderModify(OrderTicket(),OrderOpenPrice(),                           //переводит SL в безубыток
          OrderOpenPrice()+spread*Point,OrderTakeProfit(),0,CLR_NONE);
          return;
         }
        }
       }
      }
     if (OrderMagicNumber() == magic)
     {
      if (OrderType = OP_SELL)
      {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (OrderOpenPrice()-Low[m] >= TS*Point)
        {
         if (OrderOpenPrice()-spread*Point != OrderStopLoss())
         {
           OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),dig),     //переводит SL в безубыток
           NormalizeDouble(OrderOpenPrice()-spread*Point,dig),
           NormalizeDouble(OrderTakeProfit(),dig),0,CLR_NONE);
           return;
         }
        }
       } 
      }
    }
   }

Merci d'avance.

 
CYBOPOB:

Pouvez-vous me dire ce qui ne va pas ? Quatre ordres consécutifs se modifient normalement, mais au quatrième tic, le message OrderModify error 1 s'affiche.

Après un retournement de tendance, le premier ordre est OK, le second le modifie, mais il affiche à nouveau la même erreur...

La normalisation ne joue pas de rôle.

Je me débats avec cela depuis plusieurs jours !

Merci d'avance.

Soit vous tenez compte de ces règles vous-même (lors de l'écriture du code), soit vous utilisez des solutions toutes faites où ces règles sont déjà prises en compte.
 
CYBOPOB:

Pouvez-vous me dire ce qui ne va pas ? Quatre ordres consécutifs se modifient normalement, mais au quatrième tic, le message OrderModify error 1 s'affiche.

Après un renversement de tendance, le premier ordre va bien, le deuxième ordre se modifie normalement, mais une fois de plus on écrit les mêmes bêtises...

La normalisation ne joue pas de rôle.

Je me suis battu pendant plusieurs jours !

Merci d'avance.

Avant la modification, vous devez vérifier que le paramètre de l'ordre stop n'est pas égal au nouveau stop. S'ils sont égaux, il n'y a rien à modifier. D'où l'erreur 1.
 

À propos des tableaux de tri.
J'essaie de trier deux tableaux : le premier dans l'ordre croissant(fonction ArraySort(num_array) ;), et le second en fonction du premier, de sorte que si le cinquième élément du premier tableau passe en première position, alors le second tableau fera de même (cinquième élément en première position).
S'il existe une fonction MQL permettant de trier des tableaux ensemble, veuillez me donner le lien.
Regards. Shurkin.

 
artmedia70:
Avant de modifier, vous devez vérifier que le paramètre de l'ordre stop n'est pas égal au nouvel ordre stop. S'ils sont égaux, il n'y a rien à modifier. D'où l'erreur 1.


N'est-ce pas ?

if (OrderStopLoss() != OrderOpenPrice()-spread*Point)

Artem, ne considère pas cela comme un problème, écris le code, hein ? Ou donnez-moi cette chose que vous avez dans votre main, je finirai ce tourment...

 
CYBOPOB:

N'est-ce pas ?

Artem, ne considère pas cela comme un problème, écris le code, hein ? Ou donnez-moi cette chose que vous avez dans votre main, je finirai ce tourment...


Pas ça. Je vous l'ai dit :

Avant de modifier, vous devez vérifier que le paramètre de l'ordre stop n'est pas égal au nouvel ordre stop. S'ils sont égaux, il n'y a rien à modifier. D'où l'erreur 1.

 

J'ai une question pour les professionnels. Je veux rendre la fonction universelle. La fonction compte combien de barres d'une même caractéristique (haussière ou baissière, correspondant à la taille, peut-être autre chose que j'ajoute) se suivent et s'il y a une barre qui ne correspond pas à cette caractéristique, c'est-à-dire pointant dans une autre direction, le compteur est remis à zéro.

Voici un code, où je calcule dans l'une des variantes. C'est à dire si les barres d'une caractéristique vont vers le haut, c'est à dire haussier.

int LastCandlesType(int trend)
{
   int cnt,                            // Счётчик идущих друг за другом свечей с требуемыми признаками

   for (int i=i_AnyBarsToHistory; i>=1; i--)
   {
      if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)     // Если бар соответствует требуемым признакам..
          cnt++;                                                                     // .. прибавим 1 к счётчику

      if (Close[i] < Open[i])                                                        // Если бар, не соответствует основному признаку..
          cnt = 0;                                                                   // .. счётчик обнуляем
      
/*      if (i == 1)
      Print("i = ", i,"; cnt = ", cnt);*/
   }

   if (cnt == 3)                                                                     // Если 5 баров вподряд бычьи..
    return (REQUIRED_SEQUENTIAL_CANDLE_GOT);                                         //..Выходим из функции
}

Comment faire en sorte qu'en passant le paramètre tendance à cette fonction, qui sera chargée de passer la supposée tendance principale du moment, le calcul soit basé sur ce paramètre.

C'est-à-dire que si la tendance == baisse, la fonction dans la boucle était comme maintenant, et sila tendance == hausse, l' Open[i ] et le Close[i] étaient échangés dans la boucle, de sorte que les conditions étaient respectées. Car dans ce cas, le prix de clôture de la barre sera inférieur au prix d'ouverture et la différence sera négative.

 

Bonjour gourou de la programmation

Pouvez-vous me dire comment dessiner un rectangle rempli de la couleur de fond dans le coin supérieur gauche avec un petit retrait (pour l'esthétique) au-dessus du graphique et sous le texte affiché par l'expert ?

Merci d'avance

Raison: