Le verre est-il à moitié plein ou à moitié vide ? Comment analyser le verre et l'appliquer au trading ? - page 4

 
Alexey Kozitsyn:

Et une stratégie peut être mise en œuvre. Une sorte de "frontrunning" est possible.

Je ne veux rien dire sur la stratégie - je ne les connais pas encore. Le verre est pratique pour définir et décharger les positions, mais dans le verre standard actuel, vous ne pouvez pas voir le prix de votre position, ce qui est très inconfortable, on ne sait même pas pourquoi un besoin aussi évident n'a pas été mis en œuvre.

 
Alexey Kozitsyn:

Si tu peux tout faire jusqu'aux lignes, tu peux aussi faire les lignes.

Où trouver un tel homme à tout faire...

 
Aleksey Vyazmikin:

Où trouver un tel homme à tout faire...

Vous pouvez en trouver un, mais pourquoi ? Écrire tout le reste pour le plaisir d'une ligne dans le verre ?

 
Alexey Kozitsyn:

On peut trouver un bricoleur, mais pourquoi ? Pour avoir une ligne dans le verre pour écrire tout le reste ?

Le marquage des niveaux est très important. Mais il est tout à fait possible de faire une simple indication, de placer les lignes sur le graphique et de prendre les niveaux à partir de là.

 

Bonjour, j'essaie d'optimiser la représentation des données dans le verre, après avoir créé un post séparé, les clowns locaux ont spammé le sujet sans lui permettre de se développer, peut-être que cela sera utile à quelqu'un ici. Voici un sujet avec un indicateur arbitraire.

https://www.mql5.com/ru/forum/231011

L'idée est de choisir les informations qui peuvent être utilisées pour la prévision à partir de tous les niveaux d'évolution rapide et fausse dans la coupe. Je le fais en appliquant des pondérations arbitraires / des nombres ordinaux à chaque niveau.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1

#property indicator_label1 "Delta"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlack
#property indicator_width1 1

int iStart;
double iDelta[];

void OnDeinit(const int reason)
{
  string symbol = Symbol();

  MarketBookRelease(symbol);
}

void OnInit()
{
  string symbol = Symbol();

  SetIndexBuffer(0, iDelta, INDICATOR_DATA);
  ArraySetAsSeries(iDelta, true);

  IndicatorSetString(INDICATOR_SHORTNAME, "OrderBook");
  IndicatorSetInteger(INDICATOR_DIGITS, Digits());

  MarketBookAdd(symbol);
}

int OnCalculate(
  const int bars,
  const int counted,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& ticks[],
  const long& volume[],
  const int& spread[]
)
{
  if (iStart == 0)
  {
    iStart = 1;
    ZeroMemory(iDelta);
  }
  else if (bars != counted)
  {
    iDelta[0] = iDelta[1];
  }

  string symbol = Symbol();

  double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid = SymbolInfoDouble(symbol, SYMBOL_BID);

  MqlBookInfo levels[];

  bool book = MarketBookGet(symbol, levels);

  int indexBuy = 1;
  int indexSell = 1;
  long volumeBuy = 0;
  long volumeSell = 0;

  if (book)
  {
    int size = ArraySize(levels);

    for (int k = 0; k < size; k++)
    {
      if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
      }
    }

    for (int k = size - 1; k >= 0; k--)
    {
      if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
      }
    }
  }

  iDelta[0] = (double) (volumeBuy - volumeSell);
  
  return bars;
}
 
Andy Sanders:

Pas une bonne mise en œuvre.

1. les hêtres sont mieux reçus dans une fonction dédiée, sinon vous obtiendrez des sauts.

2. Oui, vous pouvez quitter les boucles plus tôt. Vous devrez effectuer 20 contrôles supplémentaires dans chacun d'eux.

En ce qui concerne l'idée - veuillez préciser ce que vous voulez en retirer. Que fait votre indicateur ? En quoi cela aide-t-il à identifier les niveaux " non factices " ?

 
Alexey Kozitsyn: En ce qui concerne l'idée - veuillez expliquer ce qu'elle fait ? Que fait votre indicateur ? En quoi cela aide-t-il à mettre en évidence les niveaux "non factices" ?

merci pour le commentaire, je l'optimiserai plus tard
les gobelets que j'ai vus ont à peu près la même apparence, deux parois de chaque côté de l'étalement, et entre elles quelques volumes


1. des niveaux de graisse changeant rapidement autour de la propagation
2. [#2 dans l'image] de plus il y a un mur avec un volume moyen, mais qui peut tenir une forte chute vers le haut, un ordre ne peut pas être placé derrière ce mur car si le mouvement est graduel, il commencera à bouger
3. [Sur les bords, on trouve une sorte de volume dragon, qui semble pouvoir résister à tout mouvement ascendant, mais qui, en fait, commencera aussi à bouger lorsque le mouvement sera progressif.
4. le plus probable est qu'entre le n°1 et le n°2 se trouvent les volumes de robots qui tentent d'utiliser le mur d'une manière ou d'une autre et que, lorsque le mur bouge, ces niveaux changent de manière synchrone.

La première idée qui vient à l'esprit pour analyser ces niveaux est que si le volume total au sommet est plus important, cela signifie que le teneur de marché manifeste son intention de vendre et de déplacer le marché vers le bas, la demande étant plus importante, respectivement, et vice versa. Mais cette hypothèse n'est pas tout à fait exacte, car.

1. la position de ces murs change et nous ne pouvons pas nous y fier en tant que support ou résistance, c'est pourquoi nous ne pouvons pas non plus considérer ces volumes de dragons comme des intérêts ouverts, ces ordres ne seront probablement jamais exécutés et se déplaceront, nous devrions donc exclure les faux murs de l'analyse des intérêts ouverts.
2. En même temps, le mouvement est généralement initié par des ordres de marché et commence autour du spread, de plus pour les robots il est risqué de jouer avec des faux ordres autour du spread, ils peuvent aussi être exécutés, d'où l'hypothèse, que les intentions les plus réelles du marché ne peuvent être vues qu'au niveau des ordres autour du spread, si l'ordre est placé, ils veulent qu'il soit exécuté mais à l'arrière-plan des faux murs ces mouvements peuvent passer inaperçus, une raison de plus pour retirer de la coupe les pseudo gros volumes se tenant loin du spread.

Compte tenu de ce qui précède, nous ne pouvons pas simplement écarter les pseudo-murs parce que nous n'avons pas de définition claire de ce qu'est un pseudo-mur et de ce qu'est un gros ordre. Nous nous contentons donc d'attribuer des poids aux poids de la coupe pour ne prêter attention qu'au mouvement autour de l'écart.

Цена | Обьем - Стандартный стакан

20    | 5
20.5  | 200
30    | 10
30.5  | 5
40    | 20
40.5  | 1         Итого: 241 контрактов на покупку

50

50.5  | 1
60    | 40
60.5  | 10
70    | 50
70.5  | 100
80    | 5         Итого: 206 контрактов на покупку
En d'autres termes, en additionnant les volumes, nous pensons qu'il y a beaucoup de vendeurs, mais ces 200 vendeurs du haut de l'échelle ne vendront jamais rien...
Mais si nous faisons correspondre les commandes avant les murs, les acheteurs seront en avance sur les acheteurs.
Essayons d'utiliser des échelles.
Цена | Обьем - Реалистичный стакан

20    | 5     х 1
20.5  | 200   х 2
30    | 10    х 3
30.5  | 5     х 4
40    | 20    х 5
40.5  | 1     х 6         Итого: 561 контрактов на покупку

50

50.5  | 1     х 6
60    | 40    х 5
60.5  | 10    х 4
70    | 50    х 3
70.5  | 100   х 2
80    | 5     х 1        Итого: 601 контрактов на покупку
C'est plus réaliste. Peut-être que la progression des poids ne devrait pas être linéaire, mais géométrique, alors nous verrons mieux. En outre, nous voulons voir la dépendance des changements de prix sur les données de la pile, c'est pourquoi l'ajout correct de poids nous permet de voir comment le prix change en fonction de l'état de la pile sur une certaine barre.
 
Andy Sanders:


Ainsi, en additionnant simplement les volumes, on pense qu'il y a beaucoup de vendeurs, mais ces 200 vendeurs du haut de l'échelle ne vendront jamais rien.
Et quand nous ferons correspondre les commandes avant les murs, les acheteurs seront en avance sur les acheteurs.
Essayons d'utiliser des échelles.
C'est plus réaliste. Peut-être que les poids ne devraient pas avoir une progression linéaire, mais géométrique, dans ce cas nous verrons mieux. En outre, nous voulons voir la dépendance des changements de prix sur les données de la pile, c'est pourquoi l'ajout correct de poids nous permet de voir comment le prix change en fonction de l'état de la pile sur une certaine barre.

C'est une idée intéressante. Mais il faut tenir compte du fait que les gros bonnets utilisent des offres icebergs, c'est-à-dire celles qui se rechargent au cas où elles tenteraient de se faire manger. Et quelle est la profondeur de la vitre à laquelle les niveaux sont accrochés - 6 de chaque côté ?

 
Aleksey Vyazmikin:

C'est une idée intéressante. Mais il faut tenir compte du fait que les gros bonnets utilisent des offres icebergs, c'est-à-dire celles qui se rechargent au cas où elles tenteraient de se faire manger. Et quelle est la profondeur de la vitre à laquelle les niveaux sont accrochés - 6 de chaque côté ?

Je viens de réaliser que c'est un peu faux maintenant.
Il y a maintenant un cycle du bord de la tasse à l'écart, le numéro d'ordre de l'itération est le poids.
Dans ce cas, si les volumes sont petits, mais que les niveaux sont nombreux, nous obtiendrons des poids énormes près de l'écart.

Il est donc nécessaire, au contraire, de fixer le nombre de niveaux analysés, par exemple, 10 de chaque côté et le poids maximum, et de commencer à placer les poids à partir de l'écartement, plutôt que des bords, plus près des bords les poids diminueront, jusqu'à zéro. Dans ce cas, il sera plus correct d'analyser le mouvement du prix par +- 10 pips, quel que soit le nombre de niveaux fixés.

Comment se débarrasser des icebergs - Je ne sais pas, en théorie, ils seront égaux des deux côtés, donc ils ne devraient pas affecter l'analyse.

 
Andy Sanders:

L'idée est claire, merci. Et pourquoi ne pas simplement regarder à partir de quel niveau un volume élevé (> X lots) n'est pas supprimé pendant une certaine période (> Y mises à jour de la tasse) afin de trouver des "murs" ? Et marquer ce point sur le graphique avec un point ?

Cela permettrait de filtrer immédiatement les robots qui traînent de gros volumes dans les deux sens, car ils ne restent pas longtemps au même endroit.

Cela peut ressembler à ceci :

Chaque point est un niveau d'au moins 500 lots avec une durée d'au moins 150 mises à jour de la coupe.