Skip to content
This repository was archived by the owner on Feb 1, 2024. It is now read-only.
This repository was archived by the owner on Feb 1, 2024. It is now read-only.

Overhaul Kelp APIs: Use custom Kelp interfaces in Kelp APIs with a more flexible strategy and exchange interface #270

@nikhilsaraf

Description

@nikhilsaraf

Desired Behavior

I want to be able to have Kelp-specific structs and interfaces in the Kelp API only, which limits the API dependencies and increased flexibility. The APIs should not be dependent on any package in the stellar/go repo (such as build or txnbuild).

Impact

The desired behavior will allow me to decouple the Kelp APIs from the stellar/go SDK

Feature Suggestion

We can achieve the desired behavior by updating the Kelp APIs in api/* which will constitute a major version bump because of the API change.

This will affect the strategy API as well as the exchange API. We can split this issue into two if needed during the implementation phase.

This will also include a redesign of the APIs to be more friendly to cross-language strategy development and advanced strategy development such as easily accessing technical indicators and convenient access to historical data via a managed data(base) interface (not a direct database connection).

References

This feature exists in a few other trading bots that present a developer-friendly strategy development API but some which are still lacking. The goal here is to make Kelp's APIs extremely expressive while having sub-APIs for specific implementations such as market-making vs. trading vs. remote strategies, etc.

Additional context

  • See this sample PR which demonstrates that we can easily replace the build package dependency with the txnbuild package -- the final solution will not be dependent on either build or txnbuild packages
  • Also see this issue which came close to touching the Kelp APIs, and only updated the implementations to avoid the version bump: Use txnbuild instead of build package, except in Kelp APIs #269

Specification

TBD

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions