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

 
Les gens. Aidez-moi, s'il vous plaît. Ma question est la suivante. Je réalise un EA basé sur l'indicateur MACD. Il existe en fait deux conditions d'ouverture et deux conditions de fermeture. La première condition pour conclure un achat : le signal est supérieur à 0, le MACD est supérieur à 0, la première barre est inférieure à la deuxième et la deuxième est supérieure à la troisième. La deuxième condition : le signal est inférieur à 0, le MACD est inférieur à 0, la première barre est inférieure à la deuxième et la deuxième est inférieure à la première. Mais il y a une différence : .... Ces conditions reprennent intégralement les conditions de l'accord pour conclure la vente. Comment les séparer ? Veuillez me conseiller. J'ai une idée que le pic est répété sur l'histogramme, mais alors comment décrire que le pic a déjà été là ? Comment créer un tel souvenir dans l'EA ?
 

Bonjour à tous, je suis en train d'écrire un EA. L'essence est la suivante : deux ordres stop dirigés différemment, lorsque l'un d'eux se déclenche, le second est supprimé, mais dans le testeur, seul l'ordre d'achat est supprimé, lorsque l'on essaie de supprimer l'ordre de vente, on obtient l'erreur 4108, ticket incorrect. Aidez-moi à comprendre. Insertion d'une fonction qui supprime l'ordre.

Merci d'avance ! !!

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Salutations. Veuillez me conseiller sur la façon de prendre les données de l'indicateur.

Besoin de données à partir des icônes rouges et bleues. Il y a des valeurs astronomiques dans les tampons respectifs lorsqu'il n'y a pas de dessin. Je les ai limités à un nombre de 10000. Ça semble fonctionner, mais il y a des signaux parasites. Comment le réparer ? Voici comment je me suis trompé :

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0) ;
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0) ;
si (PriceHigh1<10000) PriceHigh=PriceHigh1 ; sinon PriceHigh=0 ;
si (PriceLow1<10000) PriceLow=PriceLow1 ; sinon PriceLow=0 ;
Dossiers :
 
Andrey Sokolov:

Salutations. Pouvez-vous me dire comment obtenir les données correctes de l'indicateur.

J'ai besoin des données des icônes rouges et bleues. Il y a des valeurs astronomiques dans les tampons respectifs lorsqu'il n'y a pas de dessin. Je les ai limités à un nombre de 10000. Cela semble fonctionner, mais il y a des signaux parasites. Comment le réparer ? Voici comment je me suis trompé :

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0) ;
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0) ;
si (PriceHigh1<10000) PriceHigh=PriceHigh1 ; sinon PriceHigh=0 ;
si (PriceLow1<10000) PriceLow=PriceLow1 ; sinon PriceLow=0 ;

Je n'ai pas examiné le code, mais je peux supposer que cela aidera. Je peux me tromper :

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

Je n'ai pas regardé dans le code, mais je peux supposer que ça va aider. Je peux me tromper :

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Merci de ne pas être passé par là, mais ça n'a pas aidé.
 
Andrey Sokolov:
Merci de ne pas être passé par là, mais ça n'a pas aidé.
Essayez également de comparer avec EMPTY_VALUE, car il existe des valeurs "astronomiques".
 
ArraySearchDouble() et EquationDirect()dans l'ancienne version de mql 4. La nouvelle version a-t-elle des analogues.
 
27311065:
ArraySearchDouble() et EquationDirect()dans l'ancienne version de mql 4. Et la nouvelle version n'a aucune analogie.
Où les avez-vous vus dans l'ancienne version ? Ce sont des fonctions auto-écrites. Non ?
 
Merci pour le conseil
 

Veuillez me conseiller sur la meilleure façon de travailler avec des données - étant donné une série de nombres, qui sera divisée en sous-groupes, selon les résultats du calcul, ces groupes devraient être stockés dans un tableau, en outre, chaque groupe aura deux indicateurs ou plus par groupe (un groupe de nombres séparément fera partie du chiffre calculé). Les données se présentent comme suit

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

et ainsi de suite

Raison: