Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 239

 
Antonius:


Quel est le problème, ça marche.

 
r772ra:


Quel est le problème, ça marche.


L'erreur n'était pas vraiment dans le code, j'aurais dû mettre "Tous les ticks" au lieu de "Par les prix d'ouverture" comme modèle de test. C'est un long moment pour tester comme ça, bien sûr.

Merci encore pour votre aide ! Désolé de prendre mon temps avec une telle stupidité)

 
Antonius:


L'erreur n'était vraiment pas dans le code, j'aurais dû mettre "Tous les ticks" au lieu de "Par les prix d'ouverture" comme modèle de test. C'est une longue période de test, bien sûr.

Merci encore pour votre aide ! Désolé de prendre mon temps avec une telle stupidité)

Pour tester sur les prix d'ouverture, remplacez 0 par 1 dans les lignes pour vérifier la direction de la bougie. Mais alors il regardera la première barre pour voir la direction. Avec 0, vous avez simplement des prix d'ouverture et de fermeture égaux.
 

Dites-moi comment apprendre à l'expert à extraire les données correctement :

Je lui demande de trouver la valeur du dernier prix. Il le trouve, mais il le sort avec quatre décimales et arrondit la cinquième. Le cinquième caractère doit être pris en compte pour le bon fonctionnement du robot.

Il arrondit également un peu le prix moyen à la hausse. Il arrondit également le prix moyen au quatrième caractère.

J'obtiens des chiffres différents avec la calculatrice.

NormalizeDouble() a essayé de s'appliquer mais je n'ai pas encore obtenu de résultats.

int Oldticketnumber;
double Unused = 0;
int Ticketnumber = 0;
RefreshRates();
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt --)               //Для всехоткрытых ордеров
 {
  if (OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))  // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   {
   if(OrderType()==OP_BUY)                                              
    {

     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
  
     Oldticketnumber = OrderTicket();                               // присваиваем тикеты
     if (Oldticketnumber > Ticketnumber)                         //  ищем последний тикет 
      {
      LastPrise = OrderOpenPrice();                         // присваиваем последнюю цену
      Unused = LastPrise;                                       // задаем цену переменной
      Ticketnumber = Oldticketnumber;                          // последный заданый тикет
      }
// далее по  тексту---------------------------------------------------------------------

if (BuyLots != 0)       // Если есть ордера BUY, то вычисляется их средняя цена открытия
    BuyAP /= BuyLots;      

 
Limita:

Dites-moi comment apprendre à l'expert à extraire les données correctement :

Je lui demande de trouver la valeur du dernier prix. Il le trouve, mais il le sort avec quatre décimales et arrondit la cinquième. Le cinquième caractère doit être pris en compte pour le bon fonctionnement du robot.

Il arrondit également un peu le prix moyen à la hausse. Il arrondit également leprix moyen au quatrième caractère.

J'obtiens des chiffres différents avec la calculatrice.

NormalizeDouble() a essayé de s'appliquer mais je n'ai pas encore obtenu de résultats.

Où voyez-vous tout cela ?
 
artmedia70:
Où voyez-vous tout cela ?


Il est impossible d'échapper aux arrondis. Mais la question de savoir quel arrondi à partir du 5ème ou du 4ème chiffre
dans le code ci-dessous :

Comment("Средняя цена Buy ",BuyAP, " Sell ",SellAP, " Последняя цена " ,LastPrise);
                                                                              // принтуем
 
Limita:


Il est impossible d'échapper aux arrondis. Mais la question est de savoir s'il faut arrondir à partir du 5ème ou du 4ème chiffre
dans le code ci-dessous :

J'ai essayé de cette façon

Comment("Средняя цена Buy ",DoubleToStr(BuyAP,5), " Sell ",DoubleToStr(SellAP,5), " Последняя цена " ,DoubleToStr(LastPrise,5));

string DoubleToStr( double valeur, int chiffres)
Convertit une valeur numérique en une chaîne de texte, contenant la représentation des caractères du nombre dans le format de précision spécifié.

 

Bonjour à tous, j'ai cette tâche à accomplir :

Déterminer l'apparition d'une nouvelle barre (synthétique), en utilisant un minimum de code et sans utiliser de variables liées à l'heure d'ouverture de la barre. La solution est la suivante :

if (Bid>Open[0] || Bid<Open[0]) return;
Quels sont les pièges possibles lors de l'utilisation dans le testeur et dans la démo ?
 
dmitriy086:

Bonjour à tous, j'ai cette tâche à accomplir :

Déterminer l'apparition d'une nouvelle barre (synthétique), en utilisant un minimum de code et sans utiliser de variables liées à l'heure d'ouverture de la barre. Je l'ai résolu de la manière suivante :

Quels sont les pièges possibles de son utilisation dans le testeur et dans la démo ?


Lorsque vous négociez des instruments synthétiques, vous n'avez pas une seule barre pour cet instrument, mais un ensemble d'instruments pour chacun desquels vous pouvez essayer d'identifier une nouvelle barre. Plus il y a d'instruments en cours de négociation, plus il est probable qu'il y ait des erreurs ou des dérapages dans le temps, car l'EA s'accroche à une paire et ne voit les autres ticks que lorsqu'un tick pour cet instrument arrive.
Vous pouvez utiliser des variables globales, mais cela ne sert pas à grand-chose car si vous suivez un nouveau tick sur une autre paire de devises sans le robot, vous ne pouvez toujours pas négocier car il n'y a pas de tick sur votre paire. Si vous ne disposez pas de beaucoup d'instruments, le plus simple est d'écrire un robot, en tenant compte du fait qu'il sera présent partout à la fois.

Quelqu'un sait-il s'il est possible de ne pas afficher toutes les valeurs des tampons dans une fenêtre d'indicateur séparée ? C'est cette ligne blanche dans le coin supérieur gauche de la fenêtre de l'indicateur, c'est agaçant de voir autant de chiffres inutiles dans les 8 tampons utilisés.

 
Desead:


Quelqu'un sait-il s'il est possible de ne pas afficher tous les tampons dans une fenêtre d'indicateur séparée ? C'est la ligne blanche qui est inscrite dans le coin supérieur gauche de la fenêtre de l'indicateur. Il est ennuyeux de voir autant de chiffres inutiles lorsque 8 tampons sont utilisés.


Inite SetIndexLabel(...,"), mais le tampon disparaîtra également de la fenêtre de données.
Raison: