El vaso está medio lleno o medio vacío: ¿cómo se analiza el vaso y se aplica en el comercio? - página 4

 
Alexey Kozitsyn:

Y se puede aplicar una estrategia. Es posible una especie de "fronting".

No quiero decir nada sobre la estrategia, aún no la conozco. El cristal es conveniente para la fijación de la posición y la descarga de la posición, pero en el cristal estándar actual no puedes ver el precio de tu posición, lo que es muy incómodo, ni siquiera está claro por qué no se ha implementado una necesidad tan obvia.

 
Alexey Kozitsyn:

Si puedes hacer todo hasta las líneas, también puedes hacer las líneas.

Dónde más encontrar un manitas así...

 
Aleksey Vyazmikin:

¿Dónde más se puede encontrar un manitas así...

Puedes encontrar uno, pero ¿por qué? ¿Escribir todo lo demás por una línea en el vaso?

 
Alexey Kozitsyn:

Se puede encontrar un manitas, pero ¿por qué? ¿Por una línea en el vaso para escribir todo lo demás?

Marcar los niveles es muy importante. Pero, es muy posible simplemente hacer una indicación, y poner las líneas en el gráfico y tomar los niveles de allí.

 

Hola, intentando optimizar la representación de los datos en el vaso, después de crear un post aparte los payasos del lugar han spammeado el tema sin dejar que se desarrolle, quizás le sirva a alguien de aquí. Aquí hay un tema con un indicador arbitrario.

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

La idea es elegir la información que se puede utilizar para la previsión de todos los niveles cambiantes y falsos de la copa. Para ello, aplico pesos / números ordinales arbitrarios a cada nivel.

#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:

No es una buena implementación.

1. las hayas se reciben mejor en una función dedicada, de lo contrario, obtendrá saltos.

2. Sí, puedes dejar los bucles antes. Tendrá que realizar 20 controles adicionales en cada uno de ellos.

Con respecto a la idea - por favor, explique lo que le da? ¿Qué hace su indicador? ¿Cómo ayuda a identificar los niveles "no falsos"?

 
Alexey Kozitsyn: En cuanto a la idea - por favor, explique lo que hace? ¿Qué hace su indicador? ¿Cómo ayuda a destacar los niveles "no falsos"?

Gracias por el comentario, lo optimizaré más adelante
los bombos que he visto tienen más o menos el mismo aspecto, dos paredes a cada lado de la extensión, y entre ellas unos volúmenes


1. niveles de grasa que cambian rápidamente alrededor de la extensión
2. [#2 en la imagen] además hay una pared con un volumen medio, pero que puede mantener una caída brusca hacia arriba, no se puede colocar una orden detrás de esta pared porque si el movimiento es gradual, comenzará a moverse
3. [en los bordes hay una especie de volumen de dragón, que parece ser capaz de soportar cualquier deslizamiento, pero de hecho también comenzará a moverse cuando tengamos un movimiento gradual.
4. Lo más probable es que entre el nº 1 y el nº 2 se encuentren los volúmenes de los robots que intentan utilizar el muro de alguna manera y, a medida que el muro se mueve, estos niveles cambian de forma sincronizada.

La primera idea que se nos ocurre para analizar estos niveles es que si el volumen total en la parte superior es mayor, significa que el creador de mercado demuestra su intención de vender y mover el mercado a la baja, la demanda es mayor, respectivamente, y viceversa. Pero esta suposición no es del todo exacta, porque.

1. la posición de esos muros es cambiante y no podemos confiar en ellos como soporte o resistencia, por eso no podemos considerar esos volúmenes de dragón como Interés Abierto también, esas órdenes muy probablemente nunca serán ejecutadas y se moverán por lo que debemos excluir de alguna manera los muros falsos del análisis del Interés Abierto
2. Al mismo tiempo el movimiento suele ser iniciado por órdenes de mercado y comienza alrededor del spread, además para los robots es arriesgado jugar con órdenes falsas alrededor del spread, también pueden ser ejecutadas, de ahí la suposición, que las intenciones más reales del mercado se pueden ver sólo en las órdenes alrededor del spread, si la orden es colocada, quieren que se llene pero contra el fondo de las paredes falsas estos movimientos podrían ser imperceptibles, una razón más para eliminar de la copa los volúmenes pseudograndes que están lejos del spread

Teniendo en cuenta lo anterior, no podemos descartar las pseudo-paredes porque no tenemos una definición clara de dónde está una pseudo-pared y dónde una orden grande, así que simplemente asignamos pesos a los pesos de la copa para prestar atención sólo al movimiento alrededor de la propagación.

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

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 контрактов на покупку
Es decir, sólo sumando los volúmenes pensamos que hay muchos vendedores, pero esos 200 vendedores de la parte superior nunca venderán nada...
Pero cuando coincidamos con los pedidos ante las paredes, los compradores se adelantarán a los compradores.
Intentemos utilizar escalas.
Цена | Обьем - Реалистичный стакан

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 контрактов на покупку
Esto es más realista. Quizás los pesos no deberían ser lineales, sino geométricos en progresión, entonces lo veremos mejor. Además, queremos ver la dependencia de los cambios de precio en los datos de la pila, por eso la adición correcta de pesos nos permite ver cómo cambia el precio en función del estado de la pila en una barra determinada
 
Andy Sanders:


Así, sumando los volúmenes pensamos que hay muchos vendedores, pero esos 200 vendedores de la parte superior nunca venderán nada.
Y cuando coincidamos con los pedidos ante las paredes, los compradores se adelantarán a los compradores.
Intentemos utilizar escalas.
Esto es más realista. Quizás los pesos no deberían ser lineales, sino geométricos en progresión, en este caso lo veremos mejor. Además, queremos ver la dependencia de los cambios de precio en los datos de la pila, por eso la adición correcta de pesos nos permite ver cómo cambia el precio en función del estado de la pila en una barra determinada

Es una idea interesante. Pero hay que tener en cuenta que los peces gordos utilizan las ofertas de los icebergs, es decir, los que se rellenan solos en caso de que intenten ser comidos. ¿Y cuál es la profundidad del cristal a la que se cuelgan los niveles, 6 a cada lado?

 
Aleksey Vyazmikin:

Es una idea interesante. Pero hay que tener en cuenta que los peces gordos utilizan las ofertas de los icebergs, es decir, los que se rellenan solos en caso de que intenten ser comidos. ¿Y cuál es la profundidad del cristal en la que se cuelgan los niveles, 6 a cada lado?

Me he dado cuenta de que ahora se hace un poco mal.
Ahora hay un ciclo desde el borde de la copa hasta la extensión, el número de orden de la iteración es el peso.
En este caso, si los volúmenes son pequeños, pero los niveles son numerosos, obtendremos pesos enormes cerca del spread.

Por lo tanto, es necesario, por el contrario, para establecer el número de niveles analizados, por ejemplo, 10 en cada lado y el peso máximo, y empezar a colocar los pesos de la propagación, en lugar de los bordes, más cerca de los bordes pesos disminuirá, hasta cero. En ese caso, será más correcto analizar el movimiento del precio en +- 10 pips, sin importar cuántos niveles se hayan establecido.

Cómo deshacerse de los icebergs - No lo sé, en teoría, serán iguales en ambos lados, por lo que no deberían afectar al análisis.

 
Andy Sanders:

La idea está clara, gracias. ¿Y por qué no buscar simplemente a partir de qué nivel no se retira el volumen alto (> X lotes) durante algún periodo de tiempo (> Y actualizaciones de copas) para encontrar "muros"? ¿Y marcar ese punto en el gráfico con un punto?

Esto filtraría inmediatamente a los robots que arrastran grandes volúmenes de un lado a otro, ya que no permanecen mucho tiempo en un mismo lugar.

Puede tener este aspecto:

Cada punto es un nivel de al menos 500 lotes con una duración de al menos 150 actualizaciones de copa.

Razón de la queja: