3 votos

¿Cómo se forman las barras OHLC a partir de los precios de compra, venta y última operación?

Esto parece una pregunta muy básica, pero Internet no parece saber, así que:

Si tienes un flujo de precios de compra, venta y última operación, ¿cómo los conviertes en barras periódicas de apertura/alta/baja/cierre? ¿Existe una definición estándar?

La cuestión principal es si los resúmenes incorporan los precios de compra y venta o sólo los de la última operación. La otra cuestión es si el cierre anterior es igual a la apertura siguiente (hablando aquí de barras intradía, excluyendo la apertura y el cierre de la sesión).

Mi suposición es que las barras sólo utilizan los precios de la última operación y el cierre anterior generalmente es igual a la próxima apertura, pero eso parece eliminar mucha información, especialmente para las barras intradía.

1voto

m0j0 Puntos 21

Las barras representan una visión resumida de lo ocurrido durante un periodo de tiempo determinado de un único valor dado.

Por lo tanto, primero debe elegir el valor que desea resumir: Oferta , Pregunte a o Última operación y utilice sólo los valores de estas medidas para construir sus barras.

1voto

Manzabar Puntos 526

Elija un rango temporal de precios negociados, open es el primer valor del rango, high es el máximo del rango, low es el mínimo y close es el último valor del rango.

1voto

Dennis Puntos 33

Hice la siguiente función de conversión en C++.

int Convert( Bar *bars, const Tick *tick, int tickCount, int lookback  )
{
    #define Normalize(a)    double((int((a)*m_scale+0.5))*m_point)
    unsigned int m_end = 0;
    int count = 0, i = 0;
    Bar *pBars = bars[count++];

   // lookback - bar's timeframe in seconds
    const Tick &t = tick[i++];
    pBars->Time = t.Time / lookback;
    pBars->Time *= m_lookback;
    pBars->Open = pBars->Close = pBars->High = pBars->Low = Normalize(t.Bid);
    pBars->Volume = t.Volume();
    m_end = pBars->Time + lookback;
    while (i < tickCount)
    {
        const Tick &t = tick[i++];

        if (t.Time < m_end)
        {
            double price = t.Bid;

            if (pBars->Low > price)
                pBars->Low = price;
            else if (pBars->High < price)
                pBars->High = price;

            pBars->Close = price;
            pBars->Volume += t.Volume();
        }
        else
        {
            pBars->Close = Normalize(pBars->Close);
            pBars->High = Normalize(pBars->High);
            pBars->Low = Normalize(pBars->Low);

            pBars = bars[count++]
            pBars->Time = t.Time / lookback;
            pBars->Time *= m_lookback;
            pBars->Open = pBars->Close = pBars->High = pBars->Low = Normalize(t.Bid);
            pBars->Volume = t.Volume();
            m_end = pBars->Time + lookback;
        }
    }
    return barIdx;
}

-2voto

cardycakes Puntos 1

Tengo entendido que la mayoría de los datos OHLC se obtienen a partir de ticks de oferta.

0 votos

Se trata de la fuente, pero eso no responde a toda la pregunta.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X