Question sur les devis FORTS - page 3

 

Il est conseillé de veiller à l'exactitude de l'heure de l'ordinateur afin de réduire les risques d'erreur dans les registres.

Merci pour le script : voici les résultats de ce script en 1 minute 17:36

CollectTicks (ED-12.14,M1)      2014.11.10 17:36:06; Bid = 1.2474; Ask = 1.2475; Last = 1.2476; Vol = 3
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:06; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 3
 CollectTicks (ED-12.14,M1)      2014.11.10 17:36:12; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:26; Bid = 1.2474; Ask = 1.2475; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:28; Bid = 1.2474; Ask = 1.2476; Last = 1.2476; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:29; Bid = 1.2474; Ask = 1.2476; Last = 1.2474; Vol = 8
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:29; Bid = 1.2473; Ask = 1.2475; Last = 1.2474; Vol = 8
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:30; Bid = 1.2473; Ask = 1.2474; Last = 1.2473; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:30; Bid = 1.2472; Ask = 1.2474; Last = 1.2473; Vol = 5
CollectTicks (ED-12.14,M1)      2014.11.10 17:36:43; Bid = 1.2472; Ask = 1.2474; Last = 1.2474; Vol = 2

La particularité de OnTick est qu'il réagit à la fois aux changements de l'offre et de la demande (flux d'informations) et au dernier (flux de transactions).

Par conséquent, le nombre d'appels OnTick pour les instruments négociés en bourse est sciemment plus important que le nombre de transactions commerciales.

Pourquoi est-ce fait de cette manière ?

  1. vous ne pouvez pas étouffer un conseiller expert uniquement avec des transactions commerciales et ne pas lui donner d'informations sur les changements du marché (c'est une chose de l'appeler 5 fois, et une autre est de l'appeler 15 fois)
  2. il est impossible de donner zéro last et last_volume dans la revue du marché en direct, car certains traders vont exploser.


Il y a aussi le fait que lors des mises à jour par lots, lorsque deux ticks ou plus sur un instrument arrivent en même temps, OnTick est appelé une fois. Cela nous permet de ne pas ralentir le flux des cotations entrantes et de ne pas créer une énorme file d'attente de ticks pour les Expert Advisors qui ralentissent.

Nous allons bientôt activer le flux Temps & Ventes, ce qui nous permettra d'analyser avec précision le flux des transactions.

 
Renat:

Il est conseillé de veiller à l'exactitude de l'heure de l'ordinateur afin de réduire les risques d'erreur dans les registres.

Merci pour le script : voici les résultats de ce script en 1 minute 17:36

La particularité de OnTick est qu'il réagit à la fois aux changements de l'offre et de la demande (flux d'informations) et au dernier (flux de transactions).

Par conséquent, le nombre d'appels OnTick pour les instruments négociés en bourse est sciemment plus important que le nombre de transactions commerciales.

Pourquoi est-ce fait de cette manière ?

  1. vous ne pouvez pas étouffer un conseiller expert uniquement avec des transactions commerciales et ne pas lui donner d'informations sur les changements du marché (c'est une chose de l'appeler 5 fois, et une autre est de l'appeler 15 fois)
  2. il est impossible de donner zéro last et last_volume dans la revue du marché en direct, car certains traders vont exploser.


Il y a une autre chose avec le fait que sur les mises à jour par lots, lorsque deux ou plusieurs ticks par outil arrivent en même temps, alors OnTick est appelé une fois. Cela vous permet de ne pas ralentir le flux des cotations entrantes et de ne pas créer une énorme file d'attente de ticks pour les EA qui ralentissent.

Nous inclurons bientôt un flux de temps et de ventes, qui nous donnera la possibilité d'analyser avec précision la bande des transactions.

Tout cela est formidable, bien sûr, mais pour FORTS, où il y a des piles, il aurait fallu ajouter un indicateur de citation à la structure MqlTick.

La "multiplication" des transactions n'est pas terrible - le pire est que les véritables transactions sont perdues.

P.S. Mon interdiction est liée à mon adresse IP, veuillez la supprimer, sinon je dois réinstaller mon navigateur à chaque fois pour vous répondre.

 

Есть еще один момент с тем, что на пакетных обновлениях, когда одновременно приходят два и более тика по инструменту, то OnTick вызывается однократно. Это позволяет не тормозить поток входящих котировок и не делать огромную очередь тиков для тормозящих экспертов.

Cette approche aboutit à ce qui suit :

Comme il se doit :

Temps papier (mcs) Prix Qté

317922.000000 RTS-12.14 [FORTS] 18:44:54 199000.000000 104140.000000 1.000000

317923.000000 RTS-12.14 [FORTS] 18:44:54 261000.000000 104130.000000 1.000000
317924.000000 RTS-12.14 [FORTS] 18:44:54 587000.000000 104140.000000 1.000000
317925.000000 RTS-12.14 [FORTS] 18:44:54 589000.000000 104140.000000 1.000000
317926.000000 RTS-12.14 [FORTS] 18:44:54 691000.000000 104140.000000 1.000000
317927.000000 RTS-12.14 [FORTS] 18:44:54 691000.000000 104140.000000 1.000000
317928.000000 RTS-12.14 [FORTS] 18:44:54 842000.000000 104130.000000 2.000000
317929.000000 RTS-12.14 [FORTS] 18:44:54 919000.000000 104150.000000 1.000000
317930.000000 RTS-12.14 [FORTS] 18:44:55 337000.000000 104150.000000 1.000000
317931.000000 RTS-12.14 [FORTS] 18:44:55 337000.000000 104150.000000 1.000000
317932.000000 RTS-12.14 [FORTS] 18:44:55 337000.000000 104160.000000 1.000000
317933.000000 RTS-12.14 [FORTS] 18:44:55 337000.000000 104160.000000 1.000000
317934.000000 RTS-12.14 [FORTS] 18:44:55 337000.000000 104160.000000 3.000000
317935.000000 RTS-12.14 [FORTS] 18:44:55 375000.000000 104140.000000 1.000000
317936.000000 RTS-12.14 [FORTS] 18:44:55 375000.000000 104130.000000 5.000000
317937.000000 RTS-12.14 [FORTS] 18:44:55 796000.000000 104130.000000 1.000000
317938.000000 RTS-12.14 [FORTS] 18:44:55 799000.000000 104130.000000 2.000000
317939.000000 RTS-12.14 [FORTS] 18:44:56 54000.000000 104160.000000 1.000000
317940.000000 RTS-12.14 [FORTS] 18:44:57 235000.000000 104160.000000 1.000000
317941.000000 RTS-12.14 [FORTS] 18:44:57 451000.000000 104140.000000 2.000000
317942.000000 RTS-12.14 [FORTS] 18:44:57 487000.000000 104140.000000 6.000000
317943.000000 RTS-12.14 [FORTS] 18:44:57 521000.000000 104160.000000 1.000000
317944.000000 RTS-12.14 [FORTS] 18:44:57 621000.000000 104160.000000 1.000000
317945.000000 RTS-12.14 [FORTS] 18:44:58 38000.000000 104160.000000 3.000000
317946.000000 RTS-12.14 [FORTS] 18:44:58 695000.000000 104160.000000 13.000000
317947.000000 RTS-12.14 [FORTS] 18:44:58 883000.000000 104140.000000 2.000000

317948.000000 RTS-12.14 [FORTS] 18:44:58 986000.000000 104160.000000 1.000000
317949.000000 RTS-12.14 [FORTS] 18:44:58 993000.000000 104160.000000 5.000000
317950.000000 RTS-12.14 [FORTS] 18:44:58 993000.000000 104160.000000 5.000000
317951.000000 RTS-12.14 [FORTS] 18:44:58 995000.000000 104160.000000 5.000000
317952.000000 RTS-12.14 [FORTS] 18:44:58 996000.000000 104160.000000 1.000000
317953.000000 RTS-12.14 [FORTS] 18:44:59 56000.000000 104160.000000 1.000000
317954.000000 RTS-12.14 [FORTS] 18:44:59 560000.000000 104140.000000 1.000000
317955.000000 RTS-12.14 [FORTS] 18:44:59 604000.000000 104140.000000 1.000000
317956.000000 RTS-12.14 [FORTS] 18:44:59 647000.000000 104160.000000 1.000000


Comme nous le faisons dans MT5 :

NE 0 18:44:54.483 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104140 Vol = 1
ES 0 18:44:54.639 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104130 Vol = 2
OR 0 18:44:54.720 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:54 Bid = 104130 Ask = 104150 Last = 104150 Vol = 1
NQ 0 18:44:54.983 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104140 Ask = 104150 Last = 104150 Vol = 1
FP 0 18:44:55.139 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104140 Ask = 104160 Last = 104160 Vol = 3
JO 0 18:44:55.174 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:55 Bid = 104140 Ask = 104160 Last = 104130 Vol = 5
GN 0 18:44:55.206 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:55 Bid = 104130 Ask = 104160 Last = 104130 Vol = 5
RM 0 18:44:55.592 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:55 Bid = 104130 Ask = 104160 Last = 104130 Vol = 2
IL 0 18:44:55.891 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:56 Bid = 104130 Ask = 104160 Last = 104160 Vol = 1
HJ 0 18:44:55.921 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:56 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
RI 0 18:44:57.032 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
PH 0 18:44:57.242 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104140 Vol = 2
FG 0 18:44:57.297 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:57 Bid = 104140 Ask = 104160 Last = 104140 Vol = 6
PF 0 18:44:57.328 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
JE 0 18:44:57.436 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:57 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
QD 0 18:44:57.838 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 3
DP 0 18:44:58.514 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 13
RR 0 18:44:58693 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:58 Bid = 104140 Ask = 104160 Last = 104140 Vol = 2
JP 0 18:44:58795 FORTSTicksAction (RTS-12.14,M1) Temps = 18:44:58 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
CO 0 18:44:58.852 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
GN 0 18:44:59.358 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:59 Bid = 104140 Ask = 104160 Last = 104140 Vol = 1
MM 0 18:44:59.406 FORTSTicksAction (RTS-12.14,M1) Heure = 18:44:59 Bid = 104140 Ask = 104160 Last = 104140 Vol = 1
IL 0 18:44:59.453 FORTSTicksAction (RTS-12.14,M1) Time = 18:44:59 Bid = 104140 Ask = 104160 Last = 104160 Vol = 1
CK 0 18:50:31.437 FORTSTicksAction (RTS-12.14,M1) Heure = 18:50:24 Bid = 0 Ask = 0 Last = 104160 Vol = 1
KH 0 18:50:33.357 FORTSTicksAction (RTS-12.14,M1) Temps = 18:50:24 Bid = 104080 Ask = 104180 Last = 104160 Vol = 1


Toutes ces cotations sont les dernières juste avant la clôture de la session (c'est-à-dire qu'il n'y a pas de cotations inférieures jusqu'à la fin de la compensation).

Prenons comme point de départ les trois lignes marquées en noir. Il y a deux questions :

1. Où sont passés ceux qui sont surlignés en rouge ?

2. D'où vient le surligné en bleu ?


Autre question (facultative) : quel intervalle de temps signifie "arrivée simultanée" ?

 
Dima_S:

Cette approche aboutit à ce qui suit :

317945.000000 RTS-12.14 [FORTS] 18:44:58 38000.000000 104160.000000 3.000000
317946.000000 RTS-12.14 [FORTS] 18:44:58 695000.000000 104160.000000 13.000000
317947.000000 RTS-12.14 [FORTS] 18:44:58 883000.000000 104140.000000 2.000000

317948.000000 RTS-12.14 [FORTS] 18:44:58 986000.000000 104160.000000 1.000000
317949.000000 RTS-12.14 [FORTS] 18:44:58 993000.000000 104160.000000 5.000000
317950.000000 RTS-12.14 [FORTS] 18:44:58 993000.000000 104160.000000 5.000000
317951.000000 RTS-12.14 [FORTS] 18:44:58 995000.000000 104160.000000 5.000000
317952.000000 RTS-12.14 [FORTS] 18:44:58 996000.000000 104160.000000 1.000000



Ce sont toutes les dernières juste avant la clôture de la session (c'est-à-dire qu'il n'y a pas de cotations inférieures jusqu'à la fin de la compensation).

Prenons les trois lignes surlignées en noir comme point de départ. Il y a deux questions :

1. Où sont passés ceux qui sont surlignés en rouge ?

Ils sont venus dans un paquet réseau très probablement et ont été appelés comme un OnTick. Il y a eu 8 ticks en une seconde, trois d'entre eux étaient des appels uniques, et les 5 derniers sont très probablement arrivés dans un paquet avec la dernière citation indiquée comme Dernière.


2. D'où vient le surlignage bleu ?

C'est du post-marché. Nous donnons également la possibilité d'attraper les événements post-marché. C'est là que le retrait des offres ne fonctionne généralement que.


Autre question (facultative) : quel intervalle de temps signifie "arrivée simultanée" ?

Il ne s'agit pas d'un intervalle, mais plutôt d'un paquet de réseau physique. Un paquet arrive sur 2-3-4 ticks, ils sont tous superposés dans la base, mais l'appel OnTick ne va qu'une fois.

Il est également possible que le conseiller expert soit ralenti (occupé) et qu'une nouvelle cotation soit ajoutée à la base de données mais que OnTick ne soit pas appelé, puisque le conseiller expert travaille. Si un tel mécanisme n'existait pas, nous déborderions facilement des files d'attente de cotations entrantes pour le conseiller expert et commencerions à lui envoyer les anciennes cotations.

 

Renat !

Merci beaucoup pour l'explication détaillée, mais...

Il me semble qu'une telle approche est inacceptable pour le FORTS.

Il devrait être : Citation - volume, et rien d'autre.

Il y avait 11 citations, donc il devrait y en avoir 11 dans OnTick.

N'est-ce pas ?

 

Faux.

Ne confondez pas la question de la fourniture de flux de données corrects et précis au terminal avec l'appel/la notification d'experts.

Toutes les données sont livrées de manière précise et correcte au terminal, sa base. Il suffit de comparer les graphiques.

En revanche, le démarrage du conseiller expert est une notification indépendante et asynchrone. Les paquets de données entrants ne peuvent pas attendre les experts lents, mais doivent être instantanément appliqués à l'environnement du marché et seulement en option (si l'expert a terminé l'appel précédent) exécuter l'expert.

Pensez à la situation : un flux de cotations de 2 par seconde et un Expert Advisor qui travaille, qui ralentit, effectue des transactions, mais il exige que les nouvelles cotations en attente dans la file d'attente ne soient pas imposées à l'environnement de marché du terminal, jusqu'à ce que l'EA termine son travail.

Vous voyez où cela peut mener ? L'ensemble du terminal commencera à retarder tous les processus au nom de l'idée stupide de conserver un instantané du marché sur l'état de la cotation en cours de traitement. Et si tu penses à d'autres instruments, tu vas te tirer une balle.

C'est pourquoi la superposition des mises à jour du marché est toujours une priorité, instantanée et indépendante des autres processus. Tous les autres doivent suivre le marché de manière asynchrone.

 
Renat:

Faux.

Ne confondez pas la question de la fourniture de flux de données corrects et précis au terminal avec l'appel/la notification d'experts.

Toutes les données sont livrées de manière précise et correcte au terminal, sa base. Il suffit de comparer les graphiques.

En revanche, le démarrage du conseiller expert est une notification indépendante et asynchrone. Les paquets de données entrants ne peuvent pas attendre les experts lents, mais doivent être instantanément appliqués à l'environnement du marché et seulement en option (si l'expert a terminé l'appel précédent) exécuter l'expert.

Pensez à la situation : un flux de cotations de 2 par seconde et un Expert Advisor qui travaille, qui ralentit, effectue des transactions, mais il exige que les nouvelles cotations en attente dans la file d'attente ne soient pas imposées à l'environnement de marché du terminal, jusqu'à ce que l'EA termine son travail.

Vous voyez où cela peut mener ? L'ensemble du terminal commencera à retarder tous les processus au nom de l'idée stupide de conserver un instantané du marché sur l'état de la cotation en cours de traitement. Et si tu penses à d'autres instruments, tu vas te tirer une balle.

C'est pourquoi la superposition des mises à jour du marché est toujours une priorité, instantanée et indépendante des autres processus. Tous les autres doivent suivre le marché de manière asynchrone.

Pas d'accord.

Disons que je n'utilise pas la coupe (l'offre et la demande sont dans le tick).

Quelle idée de la situation du marché des FORTS pourrais-je me faire (en tant qu'expert) sans connaître le cours ?

et le volume ?

En effet, pour FORTS, nous ne pouvons pas passer le bid et le ask (ils sont dans le ticker).

Les changements dans le code sont minimes - l'offre et la demande ne sont pas transmises au marché.

 
Mikalas:

Je ne suis pas d'accord.

Relisez mon explication plusieurs fois, s'il vous plaît.

Disons que je n'utilise pas de carnet de taux (l'offre et la demande sont dans le tick).

Quelle vision du marché des FORTS j'aurai (l'expert) avec un devis qui n'est pas clair

Avec le devis actuel mis à jour de manière asynchrone et aucun autre.

Si vous avez été appelé, c'est tout - seule la citation que vous avez dans le paquet est devant vous. S'il y a 2 citations dans le lot, vous ne verrez que la dernière. Car personne ne transmettra la première cotation au conseiller expert et n'attendra que ce dernier termine l'opération. L'ancienne citation a disparu et si vous ne l'avez pas attrapée à temps pour vous en rendre compte, cela signifie que le train est passé. En utilisant cette vieille citation, vous ne serez pas en mesure d'exécuter quoi que ce soit. Et l'ordre actuel/dernier a également des chances d'être exécuté, car le marché peut avoir changé au moment de l'envoi de l'ordre.

Il n'est pas question de "ne pas traduire les offres et les demandes". Les ticks obsolètes sont des ticks obsolètes - personne ne gèlera le marché et ne vous laissera travailler avec de vieux ticks.

Si tu veux, tu peux :

  1. mettre le terminal en colocation plus près du courtier sur un ordinateur à grande vitesse et attraper de plus en plus de choses
  2. bouclez l'EA, scrutez constamment le marché et surveillez le marché pour obtenir tout plus souvent.
  3. analyser le graphique, analyser le marché

En collaboration avec Time & Sales, nous allons réfléchir à la possibilité de fournir un accès direct au dernier flux de prix en ticks, afin que vous puissiez accéder à des ticks consécutifs. Dans l'étude de marché, nous les collectons par session. Cela donnera plus d'opportunités aux vendeurs à la sauvette.

 

Renat:

En collaboration avec le département "Time & Sales", nous envisagerons de fournir un accès direct au dernier flux de prix en ticks, afin de pouvoir accéder à des ticks cohérents. Dans Market Watch, nous les collectons par session. Cela donnera plus d'opportunités aux vendeurs à la sauvette.

C'est la seule solution acceptable. Espérons qu'il y aura des files d'attente phypho pour les symboles donnés. Cela résoudra un autre problème, insoluble dans ce modèle d'événement, qui consiste à obtenir des cotations sans perte pour des symboles autres que le symbole EA.
 

J'ai encore des doutes.

Je vais mettre cela en action :

//+------------------------------------------------------------------+
//|                                                    Kotirovki.mq5 |
//|                                                   Copyright 2014 |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Mikalas"
#property link      "http://www.mql5.com"
#property version   "1.02"
//
MqlTick curr_tick;
double  start_last   = 0;
double  start_bid    = 0;
double  start_ask    = 0; 
ulong   start_volume = 0;  
//  
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{

}
//+------------------------------------------------------------------+
//| Expert On Tick event function                                    |
//+------------------------------------------------------------------+  
void OnTick()
{
  if ( SymbolInfoTick( _Symbol, curr_tick ) )
  {
    if ( start_last == curr_tick.last )
    {
      if ( start_volume == curr_tick.volume )
      {
        if ( ( start_ask == curr_tick.ask ) &&
             ( start_bid == curr_tick.bid )  )
        {
          Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                                 "; Ask = ", curr_tick.ask,
                                 "; Last = ", curr_tick.last,
                                 "; Vol = ", curr_tick.volume, "; Новая котировка(Всё одинаковое)" );
        }
        else
        {
          start_ask = curr_tick.ask;
          start_bid = curr_tick.bid;
          Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                                 "; Ask = ", curr_tick.ask,
                                 "; Last = ", curr_tick.last,
                                 "; Vol = ", curr_tick.volume, "; Изменение ask или bid? Или же новая котировка?" );
        }
      }
      else
      {
        start_last = curr_tick.last;
        start_volume = curr_tick.volume;
        start_ask = curr_tick.ask;
        start_bid = curr_tick.bid;
        Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                               "; Ask = ", curr_tick.ask,
                               "; Last = ", curr_tick.last,
                               "; Vol = ", curr_tick.volume, "Новая котировка (Изменён объём)!" );
      }
    }
    else
    {
      start_last = curr_tick.last;
      start_volume = curr_tick.volume;
      start_ask = curr_tick.ask;
      start_bid = curr_tick.bid;
      Print( curr_tick.time, "; Bid = ", curr_tick.bid,
                             "; Ask = ", curr_tick.ask,
                             "; Last = ", curr_tick.last,
                             "; Vol = ", curr_tick.volume, "Новая котировка! (Изменена котировка)" );
    }
  }
}

Et demain, nous verrons ce qui se passe...

Dossiers :
Kotirovki.ex5  5 kb
Raison: