Files
gocryptotrader/backtester/btrpc/btrpc.swagger.json
Scott 017cdf1384 Backtester: Live trading upgrades (#1023)
* Modifications for a smoother live run

* Fixes data appending

* Successfully allows multi-currency live trading. Adds multiple currencies to live DCA strategy

* Attempting to get cash and carry working

* Poor attempts at sorting out data and appending it properly with USD in mind

* =designs new live data handler

* Updates cash and carry strat to work

* adds test coverage. begins closeallpositions function

* Updates cash and carry to work live

* New kline.Event type. Cancels orders on close. Rn types

* =Fixes USD funding issue

* =fixes tests

* fixes tests AGAIN

* adds coverage to close all orders

* crummy tests, should override

* more tests

* more tests

* more coverage

* removes scourge of currency.Pair maps. More tests

* missed currency stuff

* Fixes USD data issue & collateral issue. Needs to close ALL orders

* Now triggers updates on the very first data entry

* All my problems are solved now????

* fixes tests, extends coverage

* there is some really funky candle stuff going on

* my brain is melting

* better shutdown management, fixes freezing bug

* fixes data duplication issues, adds retries to requests

* reduces logging, adds verbose options

* expands coverage over all new functionality

* fixes fun bug from curr == curr to curr.Equal(curr)

* fixes setup issues and tests

* starts adding external wallet amounts for funding

* more setup for assets

* setup live fund calcs and placing orders

* successfully performs automated cash and carry

* merge fixes

* funding properly set at all times

* fixes some bugs, need to address currencystatistics still

* adds 'appeneded' trait, attempts to fix some stats

* fixes stat bugs, adds cool new fetchfees feature

* fixes terrible processing bugs

* tightens realorder stats, sadly loses some live stats

* this actually sets everything correctly for bothcd ..cd ..cd ..cd ..cd ..!

* fix tests

* coverage

* beautiful new test coverage

* docs

* adds new fee getter delayer

* commits from the correct directory

* Lint

* adds verbose to fund manager

* Fix bug in t2b2 strat. Update dca live config. Docs

* go mod tidy

* update buf

* buf + test improvement

* Post merge fixes

* fixes surprise offset bug

* fix sizing restrictions for cash and carry

* fix server lints

* merge fixes

* test fixesss

* lintle fixles

* slowloris

* rn run to task, bug fixes, close all on close

* rpc lint and fixes

* bugfix: order manager not processing orders properly

* somewhat addresses nits

* absolutely broken end of day commit

* absolutely massive knockon effects from nits

* massive knockon effects continue

* fixes things

* address remaining nits

* jk now fixes things

* addresses the easier nits

* more nit fixers

* more niterinos addressederinos

* refactors holdings and does some nits

* so buf

* addresses some nits, fixes holdings bugs

* cleanup

* attempts to fix alert chans to prevent many chans waiting?

* terrible code, will revert

* to be reviewed in detail tomorrow

* Fixes up channel system

* smashes those nits

* fixes extra candles, fixes collateral bug, tests

* fixes data races, introduces reflection

* more checks n tests

* Fixes cash and carry issues. Fixes more cool bugs

* fixes ~typer~ typo

* replace spot strats from ftx to binance

* fixes all the tests I just destroyed

* removes example path, rm verbose

* 1) what 2) removes FTX references from the Backtester

* renamed, non-working strategies

* Removes FTX references almost as fast as sbf removes funds

* regen docs, add contrib names,sort contrib names

* fixes merge renamings

* Addresses nits. Fixes setting API credentials. Fixes Binance limit retrieval

* Fixes live order bugs with real orders and without

* Apply suggestions from code review

Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>

* Update backtester/engine/live.go

Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>

* Update backtester/engine/live.go

Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>

* Update backtester/config/strategyconfigbuilder/main.go

Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>

* updates docs

* even better docs

Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
2023-01-05 13:03:17 +11:00

1080 lines
26 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "btrpc.proto",
"version": "version not set"
},
"tags": [
{
"name": "BacktesterService"
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/v1/clearalltasks": {
"delete": {
"operationId": "BacktesterService_ClearAllTasks",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcClearAllTasksResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/cleartask": {
"delete": {
"operationId": "BacktesterService_ClearTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcClearTaskResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "id",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
"BacktesterService"
]
}
},
"/v1/executestrategyfromconfig": {
"post": {
"operationId": "BacktesterService_ExecuteStrategyFromConfig",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcExecuteStrategyResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "doNotRunImmediately",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "doNotStore",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.nickname",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.goal",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.strategySettings.name",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.strategySettings.useSimultaneousSignalProcessing",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.strategySettings.disableUsdTracking",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.fundingSettings.useExchangeLevelFunding",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.interval",
"in": "query",
"required": false,
"type": "string",
"format": "uint64"
},
{
"name": "config.dataSettings.datatype",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.apiData.startDate",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "config.dataSettings.apiData.endDate",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "config.dataSettings.apiData.inclusiveEndDate",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.databaseData.startDate",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "config.dataSettings.databaseData.endDate",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "config.dataSettings.databaseData.config.enabled",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.databaseData.config.verbose",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.databaseData.config.driver",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.config.config.host",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.config.config.port",
"in": "query",
"required": false,
"type": "integer",
"format": "int64"
},
{
"name": "config.dataSettings.databaseData.config.config.userName",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.config.config.password",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.config.config.database",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.config.config.sslMode",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.path",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.databaseData.inclusiveEndDate",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.csvData.path",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.newEventTimeout",
"in": "query",
"required": false,
"type": "string",
"format": "int64"
},
{
"name": "config.dataSettings.liveData.dataCheckTimer",
"in": "query",
"required": false,
"type": "string",
"format": "int64"
},
{
"name": "config.dataSettings.liveData.realOrders",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.liveData.closePositionsOnStop",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.dataSettings.liveData.dataRequestRetryTolerance",
"in": "query",
"required": false,
"type": "string",
"format": "int64"
},
{
"name": "config.dataSettings.liveData.dataRequestRetryWaitTime",
"in": "query",
"required": false,
"type": "string",
"format": "int64"
},
{
"name": "config.portfolioSettings.leverage.canUseLeverage",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "config.portfolioSettings.leverage.maximumOrdersWithLeverageRatio",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.leverage.maximumLeverageRate",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.leverage.maximumCollateralLeverageRate",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.buySide.minimumSize",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.buySide.maximumSize",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.buySide.maximumTotal",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.sellSide.minimumSize",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.sellSide.maximumSize",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.portfolioSettings.sellSide.maximumTotal",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.statisticSettings.riskFreeRate",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
"BacktesterService"
]
}
},
"/v1/executestrategyfromfile": {
"post": {
"operationId": "BacktesterService_ExecuteStrategyFromFile",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcExecuteStrategyResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "strategyFilePath",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "doNotRunImmediately",
"in": "query",
"required": false,
"type": "boolean"
},
{
"name": "doNotStore",
"in": "query",
"required": false,
"type": "boolean"
}
],
"tags": [
"BacktesterService"
]
}
},
"/v1/listalltasks": {
"get": {
"operationId": "BacktesterService_ListAllTasks",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcListAllTasksResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/startall": {
"post": {
"operationId": "BacktesterService_StartAllTasks",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStartAllTasksResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/starttask": {
"post": {
"operationId": "BacktesterService_StartTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStartTaskResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "id",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
"BacktesterService"
]
}
},
"/v1/stopalltasks": {
"post": {
"operationId": "BacktesterService_StopAllTasks",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStopAllTasksResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/stoptask": {
"post": {
"operationId": "BacktesterService_StopTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStopTaskResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "id",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
"BacktesterService"
]
}
}
},
"definitions": {
"btrpcApiData": {
"type": "object",
"properties": {
"startDate": {
"type": "string",
"format": "date-time"
},
"endDate": {
"type": "string",
"format": "date-time"
},
"inclusiveEndDate": {
"type": "boolean"
}
}
},
"btrpcCSVData": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
},
"btrpcClearAllTasksResponse": {
"type": "object",
"properties": {
"clearedTasks": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcTaskSummary"
}
},
"remainingTasks": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
}
},
"btrpcClearTaskResponse": {
"type": "object",
"properties": {
"clearedTask": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
},
"btrpcConfig": {
"type": "object",
"properties": {
"nickname": {
"type": "string"
},
"goal": {
"type": "string"
},
"strategySettings": {
"$ref": "#/definitions/btrpcStrategySettings"
},
"fundingSettings": {
"$ref": "#/definitions/btrpcFundingSettings"
},
"currencySettings": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcCurrencySettings"
}
},
"dataSettings": {
"$ref": "#/definitions/btrpcDataSettings"
},
"portfolioSettings": {
"$ref": "#/definitions/btrpcPortfolioSettings"
},
"statisticSettings": {
"$ref": "#/definitions/btrpcStatisticSettings"
}
}
},
"btrpcCurrencySettings": {
"type": "object",
"properties": {
"exchangeName": {
"type": "string"
},
"asset": {
"type": "string"
},
"base": {
"type": "string"
},
"quote": {
"type": "string"
},
"buySide": {
"$ref": "#/definitions/btrpcPurchaseSide"
},
"sellSide": {
"$ref": "#/definitions/btrpcPurchaseSide"
},
"minSlippagePercent": {
"type": "string"
},
"maxSlippagePercent": {
"type": "string"
},
"makerFeeOverride": {
"type": "string"
},
"takerFeeOverride": {
"type": "string"
},
"maximumHoldingsRatio": {
"type": "string"
},
"skipCandleVolumeFitting": {
"type": "boolean"
},
"useExchangeOrderLimits": {
"type": "boolean"
},
"useExchangePnlCalculation": {
"type": "boolean"
},
"spotDetails": {
"$ref": "#/definitions/btrpcSpotDetails"
},
"futuresDetails": {
"$ref": "#/definitions/btrpcFuturesDetails"
}
}
},
"btrpcCustomSettings": {
"type": "object",
"properties": {
"keyField": {
"type": "string"
},
"keyValue": {
"type": "string"
}
}
},
"btrpcDataSettings": {
"type": "object",
"properties": {
"interval": {
"type": "string",
"format": "uint64"
},
"datatype": {
"type": "string"
},
"apiData": {
"$ref": "#/definitions/btrpcApiData"
},
"databaseData": {
"$ref": "#/definitions/btrpcDatabaseData"
},
"csvData": {
"$ref": "#/definitions/btrpcCSVData"
},
"liveData": {
"$ref": "#/definitions/btrpcLiveData"
}
}
},
"btrpcDatabaseConfig": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"verbose": {
"type": "boolean"
},
"driver": {
"type": "string"
},
"config": {
"$ref": "#/definitions/btrpcDatabaseConnectionDetails"
}
}
},
"btrpcDatabaseConnectionDetails": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"port": {
"type": "integer",
"format": "int64"
},
"userName": {
"type": "string"
},
"password": {
"type": "string"
},
"database": {
"type": "string"
},
"sslMode": {
"type": "string"
}
}
},
"btrpcDatabaseData": {
"type": "object",
"properties": {
"startDate": {
"type": "string",
"format": "date-time"
},
"endDate": {
"type": "string",
"format": "date-time"
},
"config": {
"$ref": "#/definitions/btrpcDatabaseConfig"
},
"path": {
"type": "string"
},
"inclusiveEndDate": {
"type": "boolean"
}
}
},
"btrpcExchangeCredentials": {
"type": "object",
"properties": {
"exchange": {
"type": "string"
},
"keys": {
"$ref": "#/definitions/btrpcExchangeKeys"
}
}
},
"btrpcExchangeKeys": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"secret": {
"type": "string"
},
"clientId": {
"type": "string"
},
"pemKey": {
"type": "string"
},
"subAccount": {
"type": "string"
},
"oneTimePassword": {
"type": "string"
}
}
},
"btrpcExchangeLevelFunding": {
"type": "object",
"properties": {
"exchangeName": {
"type": "string"
},
"asset": {
"type": "string"
},
"currency": {
"type": "string"
},
"initialFunds": {
"type": "string"
},
"transferFee": {
"type": "string"
}
}
},
"btrpcExecuteStrategyResponse": {
"type": "object",
"properties": {
"task": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
},
"btrpcFundingSettings": {
"type": "object",
"properties": {
"useExchangeLevelFunding": {
"type": "boolean"
},
"exchangeLevelFunding": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcExchangeLevelFunding"
}
}
}
},
"btrpcFuturesDetails": {
"type": "object",
"properties": {
"leverage": {
"$ref": "#/definitions/btrpcLeverage"
}
}
},
"btrpcLeverage": {
"type": "object",
"properties": {
"canUseLeverage": {
"type": "boolean"
},
"maximumOrdersWithLeverageRatio": {
"type": "string"
},
"maximumLeverageRate": {
"type": "string"
},
"maximumCollateralLeverageRate": {
"type": "string"
}
}
},
"btrpcListAllTasksResponse": {
"type": "object",
"properties": {
"tasks": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
}
},
"btrpcLiveData": {
"type": "object",
"properties": {
"newEventTimeout": {
"type": "string",
"format": "int64"
},
"dataCheckTimer": {
"type": "string",
"format": "int64"
},
"realOrders": {
"type": "boolean"
},
"closePositionsOnStop": {
"type": "boolean"
},
"dataRequestRetryTolerance": {
"type": "string",
"format": "int64"
},
"dataRequestRetryWaitTime": {
"type": "string",
"format": "int64"
},
"credentials": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcExchangeCredentials"
}
}
}
},
"btrpcPortfolioSettings": {
"type": "object",
"properties": {
"leverage": {
"$ref": "#/definitions/btrpcLeverage"
},
"buySide": {
"$ref": "#/definitions/btrpcPurchaseSide"
},
"sellSide": {
"$ref": "#/definitions/btrpcPurchaseSide"
}
}
},
"btrpcPurchaseSide": {
"type": "object",
"properties": {
"minimumSize": {
"type": "string"
},
"maximumSize": {
"type": "string"
},
"maximumTotal": {
"type": "string"
}
}
},
"btrpcSpotDetails": {
"type": "object",
"properties": {
"initialBaseFunds": {
"type": "string"
},
"initialQuoteFunds": {
"type": "string"
}
}
},
"btrpcStartAllTasksResponse": {
"type": "object",
"properties": {
"tasksStarted": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"btrpcStartTaskResponse": {
"type": "object",
"properties": {
"started": {
"type": "boolean"
}
}
},
"btrpcStatisticSettings": {
"type": "object",
"properties": {
"riskFreeRate": {
"type": "string"
}
}
},
"btrpcStopAllTasksResponse": {
"type": "object",
"properties": {
"tasksStopped": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
}
},
"btrpcStopTaskResponse": {
"type": "object",
"properties": {
"stoppedTask": {
"$ref": "#/definitions/btrpcTaskSummary"
}
}
},
"btrpcStrategySettings": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"useSimultaneousSignalProcessing": {
"type": "boolean"
},
"disableUsdTracking": {
"type": "boolean"
},
"customSettings": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcCustomSettings"
}
}
},
"title": "struct definitions"
},
"btrpcTaskSummary": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"strategyName": {
"type": "string"
},
"dateLoaded": {
"type": "string"
},
"dateStarted": {
"type": "string"
},
"dateEnded": {
"type": "string"
},
"closed": {
"type": "boolean"
},
"liveTesting": {
"type": "boolean"
},
"realOrders": {
"type": "boolean"
}
}
},
"protobufAny": {
"type": "object",
"properties": {
"@type": {
"type": "string"
}
},
"additionalProperties": {}
},
"rpcStatus": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"$ref": "#/definitions/protobufAny"
}
}
}
}
}
}