# `Bourse.WS.Semantics.Ohlcv`
[🔗](https://github.com/ZenHive/bourse/blob/main/lib/bourse/ws/semantics/ohlcv.ex#L1)

OHLCV cache driven by `websocket.ohlcv_semantics`.

# `t`

```elixir
@type t() :: %Bourse.WS.Semantics.Ohlcv{
  cache_type: String.t() | nil,
  caches: %{required(String.t()) =&gt; map() | nil},
  closed_signal: String.t() | nil,
  timeframe_key: String.t() | nil,
  update_model: String.t()
}
```

# `apply`

```elixir
@spec apply(t(), String.t(), term()) :: {t(), map() | nil}
```

Applies a routed OHLCV payload and returns updated state + candle.

# `new`

```elixir
@spec new(Bourse.Exchange.t()) :: t()
```

Builds state from exchange spec semantics.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
