Tiki en temps réel - page 21

 
Aleksey Mavrin:

C'est la photo du jour. Bien sûr, nous n'avons pas vérifié si OnBook correspondait à Tick, mais nous avons simplement pris le suivant, en espérant que si OnTick était en avance sur OnBook, alors le correspondant serait soit le même, soit légèrement plus tard.

Le maximum bien sûr sans contrôles supplémentaires n'est pas un indicateur, ou le dépassement ou vraiment OnBook quelque part lent.


Mais c'est quelqu'un qui peut expliquer ? Pourquoi tant d'OnTicks sont déployés, et pas un seul OnBook ne s'intercale entre eux ?


Parce que vous avez vous-même écrit"Le code est manivelé, peut-être est-il tordu, je vais regarder les résultats."

//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{ 
  if((Mode != USE_BOOK) || (symbol != Symbol())) return;
  TimeArrayBook[curBook]=GetMicrosecondCount();
  curBook++
 }
void OnTick()
{
  if(Mode != USE_TICK) return;
  TimeArrayTick[curTick]=GetMicrosecondCount();
  curTick++
}

Et vous n'avez pas besoin de minuteur du tout...

 
Mais je me demande si le responsable est satisfait des réponses à sa question.
 
prostotrader:

Parce que vous avez vous-même écrit: "Le code est monté en épingle, il est peut-être tordu, je vais regarder les résultats. "

Et vous n'avez pas besoin de minuteur du tout...

Vous n'avez pas trouvé que la raison était due à des erreurs dans le code. Ou vous n'avez pas compris la question. J'ai sorti une marque dans les fonctions On, sans timer, mais il y a toujours une foule de ticks entre lesquels il n'y a pas de OnBooks.
 
Aleksey Mavrin:
Vous n'avez pas trouvé que la cause est due à des erreurs dans le code. Ou vous n'avez pas compris la question. Je viens aussi d'imprimer une marque dans les fonctions On, sans timer, il y a quand même une foule de ticks entre lesquels il n'y a pas de OnBooks.

1. Il n'est pas clair pour moi comment vous avez exécuté le EA (s)

2. Il y a 2 codes écrits par Andrei et moi-même qui

Ils secorroborent mutuellement. Alors pourquoi s'embêter avec le vôtre?

3. Andrey et moi avons tous deux exécuté des EA sur le marché des produits dérivés, et vous sur le marché boursier.

Peut-être que le terminal a des défauts sur le Fonds (je n'ai même pas fait fonctionner MT5 sur le marché boursier).

Personnellement, sur le Fonds, je négocie via Quick.

 
prostotrader:

1. Il n'est pas clair pour moi comment vous avez exécuté le EA (s)

2. Il y a 2 codes écrits par Andrei et moi-même qui

Ils se corroborent mutuellement. Alors pourquoi s'embêter avec le vôtre?

3. Andrey et moi avons tous deux exécuté des EA sur le marché des produits dérivés, et vous sur le marché boursier.

Peut-être que le terminal a des défauts sur le Fonds (je n'ai même pas fait fonctionner MT5 sur le marché boursier).

Personnellement, sur le Fonds, je négocie par le biais de Quick.

Oh, je vois. Je l'essaierai sur le futur demain. Pourquoi n'utilisez-vous pas mt5 sur le fonds ? Y a-t-il des inconvénients ?
Z.s. Le code ici est de 3 lignes) fixe juste le temps msk sans aucune vérification afin que la file d'attente ne soit pas ralentie de quelque manière que ce soit par le handler, et sur le timer il imprime et compte le retard. Je n'ai pas non plus bien compris votre code, le principe général de fonctionnement est déjà clair dans la sortie.
 
Aleksey Mavrin:
1. Ah, je vois. Demain, je l'essaierai sur un futur. Pourquoi n`utilisez-vous pas MT5 sur le fonds ? Avez-vous des inconvénients ?
S.s. Le code ici est de 3 lignes) fixe juste le temps msc sans aucune vérification afin que la file d'attente ne soit pas ralentie de quelque manière que ce soit par le handler, et sur le timer il l'imprime et compte le délai. Je n'ai pas non plus bien compris votre code, le principe général de fonctionnement est déjà clair dans la sortie.

1. Le deuxième terminal et les suivants chez le courtier sont payants, et je n'ai pas de stratégies où je ne négocie que des actions(portefeuilles d'actions).

2. Si vous voulez afficher les données accumulées dansGetMicrosecondCount(), alors

faites-le sans timer dans OnDeinit(), quand l'EA sort, tout s'imprimera.

void OnDeinit(const int reason)
{
  if(Mode == USE_BOOK)
  {
    if(is_book == true) MarketBookRelease(Symbol());
  } 
  if(reason == REASON_REMOVE)
  {
   //Распечатываем данные
  } 
}
 
prostotrader:

2. Si vous voulez afficher les données accumulées dansGetMicrosecondCount(), alors

faites-le sans timer dans OnDeinit(), quand EA sort, tout s'imprimera.

Vous pouvez le faire de cette façon aussi, je l'ai fait initialement de cette façon pour garder une trace des choses. Mais en raison de la minuterie, les OnTicks peuvent être ignorés, mais les OnBooks ne devraient pas l'être, puisqu'ils sont garantis. Peut-être que je n'ai pas pris en compte un élément, peut-être que tous les Ticks n'initient pas un changement de coupe, c'est-à-dire un OnBook ?
 
Aleksey Mavrin:
Oui, vous pouvez le faire de cette façon aussi, je l'ai fait à l'origine de cette façon pour le rendre plus clair. Mais à cause de la minuterie, les OnTicks peuvent être ignorés, mais les OnBooks ne doivent pas l'être, ils sont garantis. Peut-être que je n'ai pas pris en compte un élément, peut-être que tous les Ticks n'initient pas un changement du verre, c'est-à-dire OnBook ?

Aussi.

Vous devez vérifier les compteurs :

void OnBookEvent(const string &symbol)
{ 
  if(curBook >= 65534) return;
  if((Mode != USE_BOOK) || (symbol != Symbol())) return;
  TimeArrayBook[curBook]=GetMicrosecondCount();
  curBook++
 }
void OnTick()
{
  if(curTick >= 65534) return;
  if(Mode != USE_TICK) return;
  TimeArrayTick[curTick]=GetMicrosecondCount();
  curTick++
}

A, lorsque vous déclarez des tableaux, procédez comme suit

ulong TimeArrayBook[
INT_MAX];

а инициализировать так
ArrayInitialize(TimeArrayBook, 0);

	          
 
prostotrader:

Aussi.

Nous devons faire une contre vérification :

A, à l'initialisation le nombre devrait être65535 et non65536

Non, ce n'est pas nécessaire. C'est délibérément fait de cette manière afin de ne rien vérifier. Ils sont très courts. La taille du tableau est excessive, mais cela ne change rien.
 
Aleksey Mavrin:

Qui peut expliquer cela ? Pourquoi tant de OnTicks sont-ils radiés et pas un seul OnBook entre eux ?

Regardez l'heure du journal. Tout cela s'est passé dans un ms, et à côté (dans le même ms) un tas d'OnBooks.

Vous pouvez compter tous les événements par des compteurs, mais même visuellement vous pouvez voir qu'il y a plus d'OnBooks.