[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 339

 
silhouette:

Quelle devrait être la taille des tableaux - je ne sais pas. Son indice doit se cumuler sur tout l'intervalle des barres calculées, c'est-à-dire à partir de la limite de la barre.

Je vais essayer de décrire la logique du problème avec des mots.

  • Nous avons trois tampons indicateurs qui dessinent un LSMA coloré. Si sa valeur sur la barre actuelle est supérieure à la précédente, nous laissons la valeur dans les tampons jaune et vert et effaçons la valeur dans le rouge. Si la valeur actuelle est inférieure à la précédente - au contraire. Dans tous les autres cas, nous effaçons la valeur dans les tampons rouge et vert, ne laissant que le tampon jaune.
  • La valeur du tampon de la série verte est 1, la valeur de l'index est 0. Si le tampon vert sur la barre actuelle =EMPTY_VALUE et sur la précédente également =EMPTY_VALUE, alors la valeur du tampon vert augmente de un (accumulation de valeur). Si la valeur du tampon vert == EMPTY_VALUE, alors que la valeur du tampon rouge == EMPTY_VALUE aussi (seulement la couleur jaune sur le graphique), cela signifie que la série est terminée - nous assignons la longueur de la série au tableau de série vert avec l'index 0 (nous le sauvegardons dans le tampon). Nous augmentons l'indice du tableau de un (les prochains seront maintenant 1, 2, 3 etc.), remettons la valeur de la série à un, attendons le début de la prochaine série verte.
  • Des manipulations similaires sont effectuées avec le tableau de la série rouge.

Tant que l'objectif de remplir ces tableaux n'est pas clair, aucun algorithme ne voit le jour. Il n'est pas évident de savoir à quelles autres fins ces tableaux seront utilisés. Il n'y a donc pas d'algorithme qui permette de les sauver. Après tout, ils seront constamment écrasés par de nouvelles données. Vous parlez de la durée de la série. La série verte se termine dès que la série jaune ou rouge commence. De même, la série rouge se terminera dès que la série jaune ou verte commencera. En d'autres termes, seule la série actuellement en vigueur et la série qui la précède seront mises à jour. Ou bien il devrait y avoir plusieurs séries de ce type, en alternance.

En bref - en termes paysans-travailleurs : pourquoi avons-nous besoin de ces séries ? Comment sera-t-il représenté graphiquement dans la dinde, ou pour quoi faire ?

 

HELLO ! !!

Qui pourrait m'aider à écrire un EA avec des fonctions

1 temps ouvert H et M

2 multiplicateur de volume de pertes (lot)

Volume de 3 lots

4 stop loss

5 take profit

uniquement pour la position d'achat

Cela semble simple, mais cela ne fonctionne pas.

 
artmedia70:

Tant que l'objectif de remplir ces tableaux n'est pas clair, aucun algorithme ne peut être créé. Il n'est pas évident de savoir à quelles autres fins ces tableaux seront utilisés. Il n'existe donc pas d'algorithme pour les sauvegarder. Après tout, ils seront constamment écrasés par de nouvelles données. Vous parlez de la durée de la série. La série verte se termine dès que la série jaune ou rouge commence. De même, la série rouge se terminera dès que la série jaune ou verte commencera. En d'autres termes, seule la série actuellement en vigueur et la série qui la précède seront mises à jour. Ou bien il devrait y avoir plusieurs séries de ce type, en alternance.

En bref - en termes paysans-travailleurs : pourquoi avons-nous besoin de ces séries ? Comment sera-t-il représenté graphiquement dans la dinde, ou pour quoi faire ?

Le code montre qu'il existe un tableau différent pour chaque type de série (verte ou rouge).

Objectif : collecter des informations statistiques en vue d'une analyse ultérieure, à l'aide des outils MQL et d'Excel.

En résumé, le tableau doit ressembler à quelque chose comme ceci

RedSeries[0]=10 ; RedSeries[1]=11 ; RedSeries[2]=4 ...

GreenSeries[0]=6 ; GreenSeries[1]=8 ; GreenSeries[2]=10 ...

Si cela a de l'importance, la dynamique du changement de couleur est la suivante : le vert ne peut pas se transformer en rouge, et le rouge ne peut pas se transformer en vert. C'est-à-dire qu'il y a toujours du jaune entre les deux.

 

Veuillez expliquer, si un ordre est trouvé à fermer et doit être fermé, y a-t-il un besoin de lister les paramètres après le ticket ?

Exemple : OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue) ;

remplacer par OrderClose(OrderTicket(),NULL,NULL,NULL) ;

ou à OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY) ;

Est-il possible de l'écrire encore plus court pour le fermer, en ne considérant que le billet ?

 
rosomah:

Veuillez expliquer, si un ordre est trouvé à fermer et doit être fermé, y a-t-il un besoin de lister les paramètres après le ticket ?

Exemple : OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue) ;

remplacer par OrderClose(OrderTicket(),NULL,NULL,NULL) ;

ou à OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY) ;

Est-il possible de l'écrire encore plus court pour le fermer, en ne considérant que le billet ?


Non. Il existe un concept de clôture partielle d'une commande. Les paramètres doivent donc être spécifiés explicitement. Essayez d'ouvrir un ordre avec le lot=1.5 sur la démo, puis de fermer cet ordre avec le lot=1. Vous verrez que si l'ordre a réalisé des bénéfices, vous pouvez fermer non pas l'ensemble de l'ordre, mais seulement une partie des lots, permettant aux lots restants de continuer à réaliser des bénéfices.
 
silhouette:

Le code montre qu'il existe un tableau différent pour chaque type de série (verte ou rouge).

Objectif : collecter des informations statistiques en vue d'une analyse ultérieure, à l'aide des outils MQL et d'Excel.

En résumé, le tableau doit ressembler à quelque chose comme ceci

RedSeries[0]=10 ; RedSeries[1]=11 ; RedSeries[2]=4 ...

GreenSeries[0]=6 ; GreenSeries[1]=8 ; GreenSeries[2]=10 ...

Si cela a de l'importance, la dynamique du changement de couleur est la suivante : le vert ne peut pas se transformer en rouge, et le rouge ne peut pas se transformer en vert. C'est-à-dire qu'il y a toujours du jaune entre les deux.

Il faut donc mettre en place deux tableaux à deux dimensions. Un pour les données vertes et un pour les données rouges. Dans une dimension, écrivez le temps, dans l'autre la valeur numérique. Dès que les données vertes apparaissent, augmentez le tableau vert de 1 et inscrivez l'heure et la valeur de la barre de zéro. Faites de même pour le tableau rouge. Ensuite, une fois les données accumulées dans les tableaux, vous pouvez les traiter selon vos besoins. Ou écrire toutes les données dans le fichier à partir du conseiller expert en une seule fois.
 

Bonjour à tous.

Comment reconnaître les ordres ouverts par un EA des mêmes ordres avec un magik vide ouverts manuellement ?

 
swird:

Bonjour à tous.

Comment reconnaître un ordre ouvert par un EA d'un ordre ouvert manuellement avec une magie vide ?

Dans la boucle de commande, nous devons vérifier l'opérateur OrderMagicNumber comme ceci :

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum) // тут
         {  //--- некоторое действие.

}  }  }  }
 
artmedia70:
Il faut donc mettre en place deux tableaux à deux dimensions. Un pour les données vertes et un pour les données rouges. Dans une dimension, écrivez le temps, dans l'autre la valeur numérique. Dès que les données vertes apparaissent, augmentez le tableau vert de 1 et inscrivez l'heure et la valeur de la barre de zéro. Faites de même pour le tableau rouge. Ensuite, une fois les données accumulées dans les tableaux, vous pouvez les traiter selon vos besoins. Ou écrire toutes les données dans le fichier à partir du conseiller expert en une seule fois.

Merci.

Mais je ne comprends pas l'intérêt de créer une mesure du temps. Après tout, il y a plusieurs bars dans une série et leurs horaires sont différents. De cette façon, il n'est pas possible d'enregistrer la série.

Une dernière chose : je n'arrive pas à comprendre où il y a une erreur logique dans mon code. Quelle est la raison pour laquelle cela ne fonctionne pas ? Sans elle, toute tentative de refaire quoi que ce soit est inutile.

 
silhouette:

Merci.

Mais je ne comprends pas l'intérêt de créer une mesure du temps. Après tout, il y a plusieurs bars dans une série et leurs horaires sont différents. De cette manière, il n'est pas possible d'enregistrer la série.

Et autre chose : je n'arrive pas à comprendre où il y a une erreur logique dans mon code. Quelle est la raison pour laquelle cela ne fonctionne pas ? Sans elle, toute tentative de refaire quoi que ce soit est inutile.

Pourquoi ce temps dans la série ? Eh bien, par exemple, (je ne sais pas quelles statistiques vous voulez collecter) lors du traitement de données statistiques, il serait utile de connaître non seulement la valeur, mais aussi le moment de cette valeur. Lors de la création d'un graphique dans Excel, vous serez en mesure de voir clairement l'emplacement de la série et des données de cette série, leur position relative les unes par rapport aux autres (rouge et vert), etc. Si vous n'en avez pas besoin, ne l'utilisez pas.

Je n'ai pas regardé votre code et je ne peux pas dire où se trouve l'erreur logique. Je me souviens - vous l'avez fait sur la base de l'indicateur de Victor (Vinin), pourquoi ne pas demander à Victor à ce sujet ?