⚠️ EXPERIMENTAL — read this before depending on it

This package has never run in production. It is published early and openly so it can be used and reported on, not because it is finished.

  • The API may change without a major version. Pin three-part (~> 0.1.0).
  • Verification is uneven, and the gaps are on the expensive side. The conformance suite passes against a fake, and against Webull's live public endpoints. Order placement and authenticated flows are thinly covered. No test in this repo spends money.
  • Maturity is declared per endpoint. Read capabilities/0, not this banner.

Report a divergence.

Webull for the DpExchange family: market data, trading and streaming behind the same facade every venue in the family exposes.

Installation

def deps do
  [
    {:dp_exchange_webull, "~> 0.1.0"}
  ]
end

Usage

# In your supervision tree. Nothing starts itself.
children = [{DpExchange.Webull, credentials: my_credentials()}]

{:ok, quote} = DpExchange.Webull.get_price("BTCUSD", [])

:ok = DpExchange.Webull.subscribe(["BTCUSD"], to: self())

DpExchange.Webull is the entire public API. Everything else — transport, signing, session handling, supervision — is internal, and the conformance suite asserts it.

See dp_exchange_core for the contract, and this package's usage-rules.md for what is specific to Webull.

License

MIT. See LICENSE.