Skip to content

Releases: QTSurfer/sdk-java

0.5.0

26 May 10:27
a191b19

Choose a tag to compare

Added

  • QTSurfer.auth(apikey) (plus auth() env-var overload and auth(apikey, AuthOptions)) — one-call helper that exchanges a long-lived API key for a short-lived JWT and returns an AuthenticatedClient. The returned session mirrors the existing QTSurfer surface (compile, backtest, exchanges, instruments, tickers, klines) but transparently refreshes the JWT once on a 401 before retrying.
  • com.qtsurfer.api.sdk.auth.TokenStore interface (load / save / clear) and a default InMemoryTokenStore. Adopters can plug in a file, secret manager, or desktop keychain. AuthOptions is the configuration record (base URL, token store, HTTP client, executor) — defaults to https://api.qtsurfer.com/v1 and an in-memory store.
  • QTSURFER_APIKEY environment variable: read by QTSurfer.auth(null, ...) / QTSurfer.auth() when no API key argument is passed.
  • QTSAuthError (subclass of QTSError) raised when no API key is available or the JWT exchange fails.

Changed

  • Bumped com.qtsurfer:api-client-java to 0.3.1 (adds AuthApi, AuthTokenResponse, AuthTokenError).
  • DownloadFormat#wire() is now public so the auth-session can pass the underlying ExchangeBinaryDownloads.Format through.

0.4.1

17 May 15:20

Choose a tag to compare

Fixed

  • Corrected JitPack dependency coordinate for : (JitPack uses the repo name as artifactId, not the pom artifactId).

v0.3.0

17 May 12:21

Choose a tag to compare

Added

  • Exchange & instrument discovery:
    • QTSurfer#exchanges()List<Exchange> — list all exchanges available on the platform.
    • QTSurfer#instruments(String exchangeId)List<InstrumentDetail> — list instruments for a given exchange, including dataFrom/dataTo availability windows, lastPrice, and volume24h.
    • Both methods wrap net.qtsurfer.api.client.api.ExchangeApi (already generated in api-client v0.1.2) and surface failures as QTSError.

v0.2.0

17 May 12:21

Choose a tag to compare

Added

  • Domain objects (Strategy, Backtest):
    • QTSurfer#compile(...) returns a reusable Strategy handle that can launch multiple backtests.
    • Strategy#backtest(...) returns a Backtest handle exposing id(), state(), progress() (a Flow.Publisher<BacktestProgress>), await(), and cancel().
    • QTSurfer#backtest(request, options) shortcut now composes compile → backtest → await over the new objects.
  • Hourly tickers/klines downloads:
    • QTSurfer#tickers(exchangeId, base, quote, hour[, format]) and QTSurfer#klines(...) — stream one hour of raw tickers or klines as InputStream.
    • DownloadFormat enum (LASTRA default, PARQUET for on-the-fly conversion).
    • QTSDownloadError (subclass of QTSError) — surfaced when the download fails (HTTP 4xx/5xx, transport error).

Changed

  • api-client dependency bumped to v0.1.2 (adds ExchangeBinaryDownloads).
  • Internal Backtest workflow class renamed to BacktestWorkflow to free the public Backtest name for the new domain handle.

Removed

  • Hardcoded staging URL from the integration test default; QTSURFER_API_URL is now required alongside JWT_API_TOKEN (the test skips when either is absent).
  • Javadoc and README examples use the public domain (api.qtsurfer.com) instead of internal/staging URLs.

v0.1.0

15 Apr 11:15

Choose a tag to compare

net.qtsurfer:sdk@0.1.0

Initial release of the opinionated Java SDK for QTSurfer, built on top of net.qtsurfer:api-client.

Highlights

  • QTSurfer facade with a fluent Builder (baseUrl, token, optional HttpClient / ExecutorService).
  • QTSurfer.backtest(BacktestRequest, BacktestOptions) orchestrates compile → prepare → execute, returns a CompletableFuture.
  • Async compile flow (X-Compile-Async: true) with Failsafe-driven polling, exponential backoff and per-stage timeouts.
  • Best-effort server-side cancelExecution when the returned future is cancelled after the execute stage has started.
  • QTSError hierarchy, StatusNormalizer for backend casing drift, SLF4J hook for logging.
  • 21 unit tests + integration test on binance BTC/USDT with ForcedTradeStrategy.

JitPack: com.github.QTSurfer:sdk-java:v0.1.0

<repository><id>jitpack.io</id><url>https://jitpack.io</url></repository>
<dependency>
  <groupId>com.github.QTSurfer</groupId>
  <artifactId>sdk-java</artifactId>
  <version>v0.1.0</version>
</dependency>