Quel devrait être le prix du verre ? - page 13

 
Реter Konow:

1. Le programme est rédigé en deux langues. Le langage de base est MQL5, et par-dessus, mon langage de balisage.

2. Distribué de la même manière qu'envoyé. Je veux dire dans les bonnes cellules. C'est difficile à expliquer avec des mots. Je vous enverrai le code plus tard. Bien sûr, j'ai dû transpirer pour faire entrer les données dans les bonnes cellules, mais ce problème a été résolu.

3. Je vais ajouter tout ce qui sera demandé et qui a un sens et une importance.

mql5 est bon car il n'y aura pas de problèmes de compatibilité et de lisibilité du code.
Et comment sont-elles envoyées, nous ne savons pas quel type de données vous avez pris comme base.
Stream, cast, Json.
Si l'étagement se fait dans une boucle for, j'éviterais les boucles.
Toutes les boucles ont un temps de traitement, et c'est la latence.
Il n'y a qu'une quarantaine de niveaux de prix dans le tumbler, à la hausse et à la baisse.
Par conséquent, pour chaque niveau, j'écrirais sa propre variable avec la valeur souhaitée, éliminant ainsi la boucle.

 
Roman:

mql5 est bon, il n'y aura pas de problèmes de compatibilité et de lisibilité du code.
Et comment ils sont envoyés, nous ne savons pas quel type de données vous avez pris comme base.
Stream, cast, Json.
Si l'étagement se fait dans une boucle for, j'éviterais les boucles.
Toutes les boucles ont un temps de traitement, et c'est la latence.
Il n'y a qu'environ 40 niveaux de prix dans le tumbler, à la hausse et à la baisse.
Par conséquent, pour chaque niveau, j'écrirais sa propre variable avec la valeur souhaitée, éliminant ainsi la boucle.

Regardez le code de la page précédente.

Je centralise les données entrantes par rapport à la cellule centrale de la tasse. Le prix le plus proche de l'ask est placé dans la cellule du centre, puis on remonte le reste des prix dans l'ordre croissant. Il en va de même pour les prix et les offres.

 
Roman:

mql5 est bon, il n'y aura pas de problèmes de compatibilité et de lisibilité du code.
Et comment ils sont cartographiés, nous ne savons pas quel type de données vous avez.
Stream, cast, Json.
Si l'étagement se fait dans une boucle for, j'éviterais les boucles.
Toutes les boucles ont un temps de traitement, et c'est la latence.
Il n'y a qu'une quarantaine de niveaux de prix dans le tumbler, à la hausse et à la baisse.
Par conséquent, pour chaque niveau, j'écrirais sa propre variable avec la valeur souhaitée, éliminant ainsi la boucle.

Je ne sais pas comment résoudre le problème de la distribution des données entrantes sans cycle. Pouvez-vous me donner un indice ?

Parfois, il y a plus de 40 niveaux de prix qui entrent. Certains d'entre eux ne rentrent pas dans la tasse. Donc, j'ai fait un réseau de récepteurs de 100 cellules. Il est impossible de tout afficher dans le sélecteur, mais on peut le demander au moteur.

 
Roman:

...
Pour cette raison, je prescrirais pour chaque niveau une variable avec la valeur nécessaire, à l'exclusion du cycle.

Les données sont présentées dans un tableau, dans l'ordre du prix le plus élevé au prix le plus bas. Il n'y a pas de limite à la quantité de données. Il peut y avoir 60 prix avec des offres, 30 pour chaque côté, ou il peut y avoir 30 prix, tous avec des prix supérieurs à la demande ou inférieurs à l'offre. Ainsi, sans cycle, il n'y a aucun moyen de résoudre le problème.

 
Реter Konow:

Les données sont présentées dans un tableau, dans l'ordre du prix le plus élevé au prix le plus bas. Il n'y a pas de limite à la quantité de données. Il peut y avoir 60 prix avec des offres, 30 pour chaque côté, ou il peut y avoir 30 prix, tous avec des prix supérieurs à la demande ou inférieurs à l'offre. Il n'est donc pas possible de résoudre le problème sans un cycle.

Si l'indexation des éléments entrants dans le tableau n'est pas rompue, nous pouvons prendre chaque élément du tableau sans la boucle et l'affecter à notre variable.
Et déjà affecter chaque variable contenant la valeur à son propre niveau de cellule.
Ou bien, vous pouvez affecter chaque élément du tableau à un niveau à la fois.
Ensuite, nous excluons également les variables, mais les données non initialisées ne sont pas une bonne pratique de codage.

 

Une autre idée a surgi.
Pour diviser le tableau reçu en deux tableaux : Bid et Ask.
Et pensez à utiliser la fonction CopyArray().

Après avoir mis en œuvre les deux méthodes, nous pouvons mesurer la vitesse de traitement.
Et lequel donnera le meilleur résultat, et laissez-le.
 
Roman:

Si l'indexation des éléments entrants dans le tableau n'est pas cassée, nous pouvons prendre chaque élément du tableau sans la boucle et l'assigner dans notre variable.
Et déjà, chaque variable contenant la valeur est affectée au niveau de la cellule.
Ou bien, vous pouvez affecter chaque élément du tableau à un niveau à la fois.
Ensuite, nous excluons également les variables, mais les données non initialisées ne sont pas une bonne pratique de codage.

Hélas, il n'y a pas de prix ordonnés dans le tableau et son indexation ne pointe pas vers des cellules spécifiques du culbuteur. Les données vont d'un prix supérieur à un prix inférieur, mais c'est là que s'arrête l'ordre. Il peut y avoir un seul point entre les prix, ou il peut y en avoir 10 ou 153. Le curseur indique les derniers volumes d'ordres modifiés dans toute la plage sur laquelle ils se trouvent. Si un prix supérieur à 150 pips de l'ascendant a modifié le nombre d'ordres limités, il apparaîtra dans le tableau. Par conséquent, il n'y a pas d'ordre dans le tableau autre que du plus grand au plus petit et les données ne peuvent pas être réorganisées autrement que dans une boucle.

 
Реter Konow:

Hélas, il n'y a pas d'indexation dans le tableau. Les données vont d'un prix plus élevé à un prix plus bas, mais l'ordre s'arrête là. Il peut y avoir un seul point entre les prix, ou bien 10 ou 153. La pile indique les derniers volumes d'ordres modifiés pour l'ensemble de la plage sur laquelle ils se trouvent. Si un prix supérieur à 150 pips de l'ascendant a modifié le nombre d'ordres limités, il apparaîtra dans le tableau. Par conséquent, il n'y a pas d'ordre dans le tableau autre que du plus au moins, et les données ne peuvent pas être ordonnées autrement que dans une boucle.

Il y a une indexation par éléments de tableau dans le tableau récepteur.
Les données vont du prix le plus élevé au prix le plus bas, elles sont toujours ordonnées séquentiellement, n'est-ce pas ?
Donc, choisissez n'importe quel élément nécessaire du tableau par index, mais sans la boucle.
Et s'il est impossible d'obtenir une meilleure offre ou demande en raison de la taille variable des données entrantes,
alors peut-être que nous devrions penser à CopyArray()

 
Roman:

Il y a une indexation par éléments de tableau dans le tableau récepteur.
Les données vont d'un prix supérieur à un prix inférieur, elles sont toujours ordonnées de manière séquentielle, n'est-ce pas ?
On sélectionne donc n'importe quel élément du tableau de réception par index, mais sans boucle.

Classé par ordre séquentiel. Mais :

  1. Il peut y avoir plus de données qu'il n'y a de cupules.
  2. Il n'y a pas d'ordre précis entre les prix. Il peut y avoir un prix supérieur à l'ask et 7 prix inférieurs à l'bid.
  3. L'espacement entre les prix peut être inégal. Il peut y avoir 1 point entre le premier et le deuxième, et 18 points ou 1008 points entre le deuxième et le troisième.
C'est pourquoi vous ne saurez pas quel prix est le plus proche du Ask et quel prix est le plus proche du Bid, donc vous ne saurez pas quel prix devrait se trouver au milieu du peloton sans faire le cycle.
 
Реter Konow:

Classé par ordre séquentiel. Mais :

  1. Il peut y avoir plus de données qu'il n'y a de cupules.
  2. Il n'y a pas d'ordre précis entre les prix. Il peut y avoir un prix supérieur à l'ask et 7 prix inférieurs à l'bid.
  3. L'espacement entre les prix peut être inégal. Il peut y avoir 1 pip entre le premier et le deuxième, et 18 pips ou 1008 pips entre le deuxième et le troisième.
Par conséquent, sans faire un cycle, il est impossible de savoir quel prix est le plus proche de l'ask et quel prix est le plus proche de l'bid et donc quel prix doit être au centre de la coupe.

D'où viennent des données aussi tordues ? ))

1) Définissez une fourchette claire de sélection des données, par exemple 20 à la hausse, 20 à la baisse.
et ne sélectionner que cette gamme, tout le reste n'étant pas pertinent pour nous.

2. Vous dites que les prix vont du plus élevé au plus bas et qu'ils sont classés par ordre décroissant.
Donc, ce qui peut monter ou descendre, cela n'a pas d'importance, ne regardez pas les prix mais les indices dans le tableau.

2. Si vous voulez dire l'ordre par la distance entre les niveaux de prix, cela n'a pas d'importance du tout, nous avons l'indexation dans le tableau de réception.