Questions des débutants MQL4 MT4 MetaTrader 4 - page 122

 
Mickey Moose: J'ai fini ce que je voulais, je peux vous l'envoyer pour examen. C'est génial. Mais il est interdit de l'afficher ici.

en personne... J'aime les fuites... Je l'ai fait exprès. Quand la démo augmentera le dépôt 15 fois en un jour, alors je le drainerai à nouveau. Je veux avoir des résultats comparables demain.

 
STARIJ:
Des requêtes dans le testeur ? C'est la première fois que j'en entends parler...

En voici la preuve. Début :


et la fin :

et la fin :




"Mettez donc dans l'EA que si c'est le cas, sortez et au prochain tick continuez."C'est dans le code.

 
novichok2018:

En voici la preuve. Le début :


et la fin :

et la fin :




"Mettez donc dans l'EA que si c'est le cas, sortez et au prochain tick continuez." - C'est dans le code.

Bien et écrire If(tester) if(January 25 or 26) return

 
STARIJ:

Bien et écrire If(tester) if(January 25 or 26) return

Je ne comprends pas pourquoi. Quoi, cela permettra-t-il d'éviter la répétition de l'échec ? L'essentiel est que les positions se ferment, et si la raison de l'exécution de la commande floue est une défaillance du testeur, alors tout va bien. Pour être sûr que la cause de l'autre, probablement doivent attendre la répétition de la situation, quand avec une vente ouverte (BAY) sera ouvert BAY (SEL), et voir comment ils vont fermer.

 
novichok2018:

C'est exactement ce dont j'ai besoin, ou plutôt seulement pour lesachats et les ventes. Pour ma stratégie simple, le plus important est que les positions ouvertes n'interfèrent pas avec les conditions de clôture des autres. On peut peut-être se passer des tableaux ? Je ne les comprends pas : comment les créer, comment les aborder - je suis dans le noir. Peut-être que ma situation sera plus claire pour vous sur la capture d'écran :

Tout semble être simple et clair dans le code, mais c'est le seul cas de confusion.

Si nous devons diviser la comptabilité pour les ordres de vente et d'achat, nous déclarerons deux tableaux et deux compteurs pour chacun d'eux :

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

Au final, le cycle de collecte des données sera le suivant :

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

Il suffit ensuite d'effectuer les opérations suivantes dans le conseiller expert pour déterminer s'il existe un ordre d'achat ou de vente :

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

Peut-on se passer des tableaux après tout ?

On ne peut se passer des tableaux que si l'on ne prévoit pas plus d'une commande de chaque type à un moment donné. Ensuite, le tableau dégénère en une variable de type structure OrderInfo (ou un tableau de taille 1).

Mais comme je le vois dans la figure ci-dessus, ce n'est pas le cas. Vous pouvez avoir plus d'une commande de chaque type à la fois.
 
novichok2018:

En voici la preuve. Commencez :

Cela montre que lorsqu'un ordre est fermé, ce n'est pas le prix du marché. Par exemple, l'achat est clôturé à l'Ask, tandis que la vente est clôturée à l'Bid. Si vous regardez votre code, cela pourrait bien être le cas, car il n'y a pas de vérification du type d'ordre avant l'opération de fermeture.

 

Encore une fois, bonsoir. L'essentiel de la question.

Je suis en train de mettre une EA (qui fonctionne) dans le marché. plateforme MT4. Je peux afficher un seul fichier. Un fichier de l'Expert Advisor. Il devrait passer la validité, mais il ne le peut pas car c'est un EA sans indicateurs. Ils sont dans des fichiers séparés. Le conseiller expert travaille avec quatre indicateurs. Ils doivent être liés d'une manière ou d'une autre au conseiller expert. Vous devez spécifier le chemin, c'est-à-dire les écrire dans l'Expert Advisor. Veuillez indiquer quel formulaire et comment procéder.

D'après ce que je comprends, nous devons utiliser les "Ressources" . Je ne sais pas comment l'enregistrer correctement dans le conseiller expert. Peut-être connaissez-vous d'autres solutions.

Merci.

Voici ce qu'il dit quand il ne passe pas la validité

 2016.04.01 00:00:00 Impossible d'ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00 Impossible d'ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:00 ne peut pas ouvrir le fichier 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.0101 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 Impossible d'ouvrir le fichier 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.0101 00:00:05 ne peut pas ouvrir le fichier 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:10 ne peut pas ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 ne peut pas ouvrir le fichier 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 Impossible d'ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 Impossible d'ouvrir le fichier 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]

 
Ihor Herasko:


Merci beaucoup pour vos réponses complètes et très claires.

 
Ihor Herasko:

Si nous devons diviser la comptabilisation des ordres en Achat et Vente, nous déclarons deux tableaux et deux compteurs pour chacun d'eux :

Par conséquent, le cycle de collecte des données sera le suivant :

Il suffit ensuite d'effectuer les opérations suivantes dans le conseiller expert pour déterminer s'il existe un ordre d'achat ou de vente :

Pourriez-vous expliquer cette ligne de votre code :OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT] ; PourquoiOrderInfo n'a pas de crochets et aucun type spécifié ? et tout ceci est déclaré au niveau global ?

Et la détermination de la disponibilité de l'ordre est insérée dans la fonction de fermeture de la position? Où ? Et peut-être que la fonction de fermeture des positions avec des tableaux devrait être différente ? C'est un peu compliqué pour moi. Merci.


J'ai essayé d'utiliser votre exemple, mais le compilateur me jure...

Et il jure aussi sur les exemples du tutoriel.