Suggestions pour améliorer le MetaEditor - page 6

 
Lizar:
Essayez. Fonctionne dans le testeur. Mais avec les ajustements stipulés dans l'article.

Et qu'est-ce que le testeur doit envoyer à travers l'événement ?

A) Les graphiques dans le testeur ne sont pas ouverts

B) les indicateurs de l'événement ne reçoivent pas

Le conseiller expert s'enverra des événements à lui-même, alors à quoi bon ?

 

Обработка событий в тестере

La présence du gestionnaire OnTick() dans un Expert Advisor n'est pas nécessaire pour pouvoir être testé sur des données historiques dans le Strategy Tester du terminal MetaTrader 5. Il suffit que l'Expert Advisor ait au moins une fonction de gestionnaire parmi celles listées ci-dessus :

  • OnTick() - gestionnaire de l'événement d'arrivée d'un nouveau tick ;
  • OnTrade () - gestionnaire de l'événement de transaction ;
  • OnTimer() - gestionnaire d'événement de l'arrivée du signal de la minuterie ;
  • OnChartEvent() - gestionnaire des événements personnalisés.

Lors du test dans un Expert Advisor, les événements personnalisés peuvent être traités par OnChartEvent(), mais dans les indicateurs, cette fonction n'est pas appelée dans le testeur. Même si l'indicateur possède le gestionnaire OnChartEvent(), et que cet indicateur est utilisé dans le conseiller expert testé, l'indicateur lui-même ne recevra aucun événement personnalisé.

Pendant les tests, l'indicateur peut générer des événements personnalisés en utilisant la fonction EventChartCustom(), tandis que le conseiller expert peut traiter ces événements dans OnChartEvent().

1. Pour l'instant, autant que je m'en souvienne, l'Expert Advisor du testeur ne traite pas les événements envoyés par la fonction EventChartCustom().

2. L'article contient une indication que la fonction ne fonctionnera pas dans les indicateurs du testeur, mais le fichier d'aide ne le fait pas. Comment le comprenez-vous ?

3. Eh bien, ce n'est pas bien quand quelque chose fonctionne en démo/réel et ne fonctionne pas en testeur. Quoi que tu veuilles me faire, c'est toujours mal.

Si je fais OnChartEvent() dans les indicateurs, que cela fonctionne partout, sinon cela n'a aucun sens de le garder là...

PS

Question pour les développeurs - cela ne fonctionne pas du tout dans le testeur, ou seulement ce qui est envoyé avec OnChartEvent() ?

 
Urain:

Et qu'est-ce que le testeur doit envoyer à travers l'événement ?

A) Les graphiques dans le testeur ne sont pas ouverts

B) les indicateurs ne reçoivent pas d'événements

le conseiller expert s'enverra des événements à lui-même, quel est l'intérêt de cela ?

C'est logique, j'ai, par exemple, réussi à m'envoyer moi-même, et plus d'une fois (jusqu'à ce que le testeur casse la réception des événements).

Et lorsque le testeur commence à comprendre et à traiter le tableau, il sera logique de recevoir des événements...

 

La question n'est pas claire. Que voulez-vous dire par "il ne fonctionne pas du tout dans le testeur, ou ne traite que ce qui est envoyé avec OnChartEvent()" ?

Il n'y a pas de mécanisme dans le testeur pour fournir ChartEvent aux indicateurs. Le cycle de livraison des événements au conseiller expert testé est précisément la partie principale du testeur.

 
Interesting:

Il y a un point, j'ai, par exemple, réussi à m'envoyer, et plus d'un (jusqu'à ce que la réception de l'événement soit cassée dans le testeur).

Donc le testeur avait l'habitude d'avoir une réception d'événement, mais ensuite elle a été cassée ?
 
Interesting:

C'est logique, j'ai par exemple réussi à m'envoyer, et à en envoyer plusieurs (jusqu'à ce que le testeur casse la réception des événements).

Et lorsque le testeur commencera à comprendre et à traiter les graphiques, il sera logique de recevoir des événements...

Au sein d'un même programme, il existe de nombreuses possibilités de transfert d'informations, mais le sens des événements est le transfert d'informations entre différents programmes.
 
Lizar:

Cela fait quelques semaines qu'il a été annoncé officiellement dans l'article:

Annoncé officiellement dans les "build updates", pas dans les articles. Y avait-il quelque chose dans les "mises à jour" ?
 
Urain:
Au sein d'un même programme, il existe de nombreuses possibilités de transfert d'informations, le but des événements étant de transférer des informations entre différents programmes.

Le problème n'est pas de savoir comment livrer, mais que ce qui fonctionnait dans le testeur (et aurait dû fonctionner) a cessé de fonctionner il y a environ 6 mois.

stringo:

Il n'y a pas de mécanisme dans le testeur pour fournir ChartEvent aux indicateurs. Le cycle de livraison des événements au conseiller expert testé est la partie principale du testeur.

Donc il y avait une réception d'événement dans le testeur et ensuite elle a été cassée ?

Je veux parler du problème de EventChartCustom() -> OnChartEvent() dans le testeur pour les Expert Advisors. Peut-être que je ne comprends pas quelque chose, mais avant le championnat, cela fonctionnait bien, mais plus maintenant.

En même temps, je pense que tout le monde le sait et le comprend déjà, mais la "locomotive" ne bouge toujours pas (alors que c'est exactement la "partie principale").

Un exemple simple :

1 . Nous initialisons le conseiller expert en démarrant une minuterie toutes les 300 secondes (5 minutes).

//Function OnInit
int OnInit()
//Function for initialization of the trade system
{
//----------------------------------------------------------------------------//
int Result = 0; //Returned importance
//----------------------------------------------------------------------------//

EventSetTimer(300);

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

2. Dans le timer nous prescrivons l'envoi de l'événement avec le code 1001

//Event OnTimer
void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
int customEventID; // номер пользовательского события для отправки
//----------------------------------------------------------------------------//
customEventID=CHARTEVENT_CUSTOM+1;

EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. attraper cet événement dans le conseiller expert
//Event OnChartEvent
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                  )
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
//                          Processing user events                            //
//----------------------------------------------------------------------------//
  if(id>CHARTEVENT_CUSTOM)
  //User event is received
  {
  Print("New event, ID ",id," - ",sparam);
  }
//----------------------------------------------------------------------------//  
}


Le résultat est que la démo reçoit l'événement, mais pas le testeur de stratégie.

Et c'est en quelque sorte un élément de base du système commercial qui est censé fonctionner même en cas de "guerre nucléaire".

1. Démonstration avec un minuteur d'une minute


2. un testeur avec une minuterie de 1 heure


Je dois également ajouter que les tests ont été effectués du 01/04/2011 au 07/04/2011 à l'horizon temporel 1H.

Et où sont-ils ?

PS

Peut-être que quelqu'un pense que si un message ne provient pas d'Expert Advisor, il proviendra d'iinduke ?


 
Yedelkin:
Annoncé officiellement en quelque sorte dans les "updates builds", pas dans les articles. Y avait-il quelque chose dans les "mises à jour" ?

Oui, il n'y avait rien, comme le bug est apparu alors il pèse.

Et sur le fait que dans l'article donc il ne devrait pas être spécifié dans les articles, et même pas dans la description des nouvelles constructions, bien que là aussi.

En fait, de telles choses devraient être prescrites dans le manuel de langue. Montrez-moi où il y a ne serait-ce qu'un mot à ce sujet (personnellement, je n'ai pas pu le trouver)...

 
stringo:
Donc il y avait une réception d'événement dans le testeur et ensuite elle a été cassée ?

C'est ce que je devrais faire, préparer correctement l'examen d'État. Ce que je fais, c'est rechercher mes messages sur le forum. :)

1. Bugs, bugs, questions.

Bugs , bugs, questions.

Je voulais trouver le premier post sur le problème, et ne l'a pas creusé, même si je me souviens que pendant le championnat déjà n'a pas travaillé fic ...

Supposons que le message date du 05/09/2010 et qu'il était le premier sur le sujet donné. Conclusion - cela fait déjà 8 mois... :(

PS

Voici plus d'informations à ce sujet :

Mon exemple du 06/09/2010

Et même Alexey a promis de réfléchir à une solution au problème

Raison: