All notable changes to com.qtsurfer:sdk are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Corrected JitPack dependency coordinate for
api-client:com.qtsurfer:api-client-java:0.2.0(JitPack uses the repo name as artifactId, not the pom artifactId).
- Maven coordinates migrated to
com.qtsurfer:sdk-javavia JitPack custom domain (git.qtsurfer.com). Consumers should replacecom.github.QTSurfer:sdk-java:v0.3.xwithcom.qtsurfer:sdk-java:0.4.1. - Java packages renamed from
net.qtsurfer.api.sdktocom.qtsurfer.api.sdkthroughout. - Dependency on
com.qtsurfer:api-client-java:0.2.0(previouslycom.github.QTSurfer:api-client-java:v0.1.2). - Tags no longer use the
vprefix; CI release workflow updated accordingly.
- 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, includingdataFrom/dataToavailability windows,lastPrice, andvolume24h.- Both methods wrap
com.qtsurfer.api.client.api.ExchangeApi(already generated inapi-client v0.1.2) and surface failures asQTSError.
- Domain objects (
Strategy,Backtest):QTSurfer#compile(...)returns a reusableStrategyhandle that can launch multiple backtests.Strategy#backtest(...)returns aBacktesthandle exposingid(),state(),progress()(aFlow.Publisher<BacktestProgress>),await(), andcancel().QTSurfer#backtest(request, options)shortcut now composescompile → backtest → awaitover the new objects.
- Hourly tickers/klines downloads:
QTSurfer#tickers(exchangeId, base, quote, hour[, format])andQTSurfer#klines(...)— stream one hour of raw tickers or klines asInputStream.DownloadFormatenum (LASTRAdefault,PARQUETfor on-the-fly conversion).QTSDownloadError(subclass ofQTSError) — surfaced when the download fails (HTTP 4xx/5xx, transport error).
api-clientdependency bumped tov0.1.2(addsExchangeBinaryDownloads).- Internal
Backtestworkflow class renamed toBacktestWorkflowto free the publicBacktestname for the new domain handle.
- Hardcoded staging URL from the integration test default;
QTSURFER_API_URLis now required alongsideJWT_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.
- Initial release of
net.qtsurfer:sdk, an opinionated Java SDK built on top ofnet.qtsurfer:api-client. QTSurferfacade with a fluent builder (baseUrl,token, optionalhttpClient/executor).QTSurfer.backtest(BacktestRequest, BacktestOptions)— orchestrates compile → prepare → execute and returns aCompletableFuture<ResultMap>.- Polling, exponential backoff, and per-stage timeouts delegated to Failsafe policies.
- Best-effort server-side
cancelExecutionwhen the returned future is cancelled after the execute stage has started. - Error hierarchy:
QTSError,QTSStrategyCompileError,QTSPreparationError,QTSExecutionError,QTSTimeoutError,QTSCanceledError. - Status normalizer handling casing drift between the OpenAPI spec and the live API (
queued,completed,failed,aborted, …). - SLF4J API hook for logging (consumers bring their own binding).
- Distribution via JitPack.