Files
gocryptotrader/backtester/btrpc/btrpc.swagger.json
Scott 2232478415 backtester: run manager (#1040)
* begins defining run management options

* fleshes out concept

* completes fund manager and RPC commands

* coverage and improvements

* adds coverage, and bad log concept

* simplifies output at expense of races

* removes run logging for now. tightens races. adds cov

* Lints thine splints

* Fixes stopping and clearing bugs

* some niteroos

* fix races
2022-09-30 14:15:10 +10:00

1032 lines
25 KiB
JSON

{
"swagger": "2.0",
"info": {
"title": "btrpc.proto",
"version": "version not set"
},
"tags": [
{
"name": "BacktesterService"
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/v1/clearallruns": {
"delete": {
"operationId": "BacktesterService_ClearAllRuns",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcClearAllRunsResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/clearrun": {
"delete": {
"operationId": "BacktesterService_ClearRun",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcClearRunResponse"
}
},
"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.apiKeyOverride",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.apiSecretOverride",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.apiClientIdOverride",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.api2faOverride",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.apiSubAccountOverride",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "config.dataSettings.liveData.useRealOrders",
"in": "query",
"required": false,
"type": "boolean"
},
{
"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/listallruns": {
"get": {
"operationId": "BacktesterService_ListAllRuns",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcListAllRunsResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/startallruns": {
"post": {
"operationId": "BacktesterService_StartAllRuns",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStartAllRunsResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/startrun": {
"post": {
"operationId": "BacktesterService_StartRun",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStartRunResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "id",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
"BacktesterService"
]
}
},
"/v1/stopallruns": {
"post": {
"operationId": "BacktesterService_StopAllRuns",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStopAllRunsResponse"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"BacktesterService"
]
}
},
"/v1/stoprun": {
"post": {
"operationId": "BacktesterService_StopRun",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/btrpcStopRunResponse"
}
},
"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"
}
}
},
"btrpcClearAllRunsResponse": {
"type": "object",
"properties": {
"clearedRuns": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcRunSummary"
}
},
"remainingRuns": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
}
},
"btrpcClearRunResponse": {
"type": "object",
"properties": {
"clearedRun": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
},
"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"
}
}
},
"btrpcExchangeLevelFunding": {
"type": "object",
"properties": {
"exchangeName": {
"type": "string"
},
"asset": {
"type": "string"
},
"currency": {
"type": "string"
},
"initialFunds": {
"type": "string"
},
"transferFee": {
"type": "string"
}
}
},
"btrpcExecuteStrategyResponse": {
"type": "object",
"properties": {
"run": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
},
"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"
}
}
},
"btrpcListAllRunsResponse": {
"type": "object",
"properties": {
"runs": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
}
},
"btrpcLiveData": {
"type": "object",
"properties": {
"apiKeyOverride": {
"type": "string"
},
"apiSecretOverride": {
"type": "string"
},
"apiClientIdOverride": {
"type": "string"
},
"api2faOverride": {
"type": "string"
},
"apiSubAccountOverride": {
"type": "string"
},
"useRealOrders": {
"type": "boolean"
}
}
},
"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"
}
}
},
"btrpcRunSummary": {
"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"
}
}
},
"btrpcSpotDetails": {
"type": "object",
"properties": {
"initialBaseFunds": {
"type": "string"
},
"initialQuoteFunds": {
"type": "string"
}
}
},
"btrpcStartAllRunsResponse": {
"type": "object",
"properties": {
"runsStarted": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"btrpcStartRunResponse": {
"type": "object",
"properties": {
"started": {
"type": "boolean"
}
}
},
"btrpcStatisticSettings": {
"type": "object",
"properties": {
"riskFreeRate": {
"type": "string"
}
}
},
"btrpcStopAllRunsResponse": {
"type": "object",
"properties": {
"runsStopped": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
}
},
"btrpcStopRunResponse": {
"type": "object",
"properties": {
"stoppedRun": {
"$ref": "#/definitions/btrpcRunSummary"
}
}
},
"btrpcStrategySettings": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"useSimultaneousSignalProcessing": {
"type": "boolean"
},
"disableUsdTracking": {
"type": "boolean"
},
"customSettings": {
"type": "array",
"items": {
"$ref": "#/definitions/btrpcCustomSettings"
}
}
},
"title": "struct definitions"
},
"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"
}
}
}
}
}
}