-
Notifications
You must be signed in to change notification settings - Fork 2
/
trade-executor-api.yaml
440 lines (322 loc) · 10.8 KB
/
trade-executor-api.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
openapi: 3.0.2
info:
version: '0.1'
title: Trade Executor API
contact:
email: [email protected]
url: 'https://tradingstrategy.ai'
x-logo:
url: 'https://raw.githubusercontent.com/tradingstrategy-ai/frontend/ec73a013cae04fa3f13c579dcc0dd0d80cbc49cc/src/lib/assets/logo-horizontal.svg'
description: |
Trade executor API allows you to read the current state of the trading strategy execution.
**This API is still in beta and subject to change**.
## Introduction
[Trade Executor daemon](https://github.com/tradingstrategy-ai/trade-executor) offers execution for algorithmic trading strategies.
It runs an internal webhook server allowing to query the current execution state.
This, in turn, allows website clients to render various statistics and numbers about the live trading strategy.
## Execution state
The trade execution state includes the information like
* Current portfolio
* Open and closed positions
* Executed trades
* Profit and loss
* Deposit and withdraw events
* Execution daemon internal metrics and diagnostics
## Logistics
There are additional endpoints for
* Checking the trade executor process health
* Notifying about the availabiltiy of new trading data in market data feeds (i.e. a new OHLCV candle available)
## Security
The API endpoints may be optionally protected with HTTP Basic Auth.
## Data format
Currently, all the state is serialised as one JSON blob,
as [described here](https://github.com/tradingstrategy-ai/trade-executor/blob/master/tradeexecutor/state/state.py).
## About OpenAPI Specification used
This API specification is written in [OpenAPI v3](https://swagger.io/specification/).
externalDocs:
description: Trading Strategy documentation
url: 'https://tradingstrategy.ai/docs/'
paths:
'/':
x-pyramid-route-name: home
get:
operationId: home
summary: |
Return the service name and version information as plain text.
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
'/ping':
x-pyramid-route-name: web_ping
get:
operationId: web_ping
summary: |
An endpoint to get a JSON response to check the server is up.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'/metadata':
x-pyramid-route-name: web_metadata
get:
operationId: web_metadata
summary: |
Return the strategy and executor metadata, needed
to render the strategy on a website.
See [Metadata class](https://tradingstrategy.ai/docs/programming/api/execution/help/tradeexecutor.state.metadata.Metadata.html)
for the returned data.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
'/state':
x-pyramid-route-name: web_state
get:
operationId: web_state
summary: |
Download the whole state of the trade executor.
The state is served as a JSON blob,
[as described in Python source code](https://github.com/tradingstrategy-ai/trade-executor/blob/master/tradeexecutor/state/state.py).
Currently one trade executor deployment can have only one state.
responses: # list of responses
"200":
description: |
Downloading the state dump as a blob
[This returns the serialized State object](https://github.com/tradingstrategy-ai/trade-executor/blob/master/tradeexecutor/state/state.py).
content:
application/json:
schema:
type: object
"422":
description: Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/status':
x-pyramid-route-name: web_status
get:
operationId: web_status
summary: |
Return the status of the trade execution loop: is it alive or has it crashed with an exception.
See ExecutionState class for the returned data.
responses:
"200":
description: |
Return the trade execution loop status.
This returns the serialized ExecutionState object.
content:
application/json:
schema:
type: object
"422":
description: Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/logs':
x-pyramid-route-name: web_logs
get:
operationId: web_logs
summary: |
Return the latest logs of the trade executor.
responses:
"200":
description: |
Return the log messages as a list of JSON objects.
See `ring_buffer_logging_handler.py` for the format.
content:
application/json:
schema:
type: object
"422":
description: Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/notify':
x-pyramid-route-name: web_notify
post:
operationId: web_notify
summary: |
Notifies about the availability of new trading data on the market data feeds.
responses: # list of responses
"200":
description: OK
'/source':
x-pyramid-route-name: web_source
get:
operationId: web_source
summary: |
Get the source code of the strategy
responses:
"200":
description: |
Return the source code of the strategy.
Returns an empty string if the source code is not public.
content:
text/plain:
schema:
type: string
"422":
description: Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/visualisation':
x-pyramid-route-name: web_visualisation
get:
operationId: web_visualisation
summary: |
Get the strategy visualisation.
parameters:
- name: type
in: query
description: |
Visualisation options:
* `small` - 512 x 512 PNG
* `large` - 1920 x 1920 SVG
required: false
schema:
type: string
enum: [small, large]
default: small
- name: theme
in: query
description: |
Color scheme options:
* `light` - black on white charts
* `dark` - white on black charts
required: false
schema:
type: string
enum: [light, dark]
default: dark
responses:
"200":
description: |
Return the source code of the strategy.
Returns an empty string if the source code is not public.
content:
text/plain:
schema:
type: string
"422":
description: |
Unexpected error - usually an internal error
Maybe also returned when image data is not yet avaible.
It is generated when the trade executor successfully completes
its first strategy execution cycle.
content:
application/json:
schema:
type: object
'/chart':
x-pyramid-route-name: web_chart
get:
operationId: web_chart
summary: |
Render various charts about the trade execution output.
By default, output charts as interactive Plotly.js payload.
parameters:
- name: chart
in: query
description: |
Which time-series data we are queryinh
required: true
schema:
type: string
enum: [compounding_realised_profitability, total_equity, funding_flow]
- name: source
in: query
description: |
Are we looking for live data or backtest
required: true
schema:
type: string
enum: [live_trading, backtest]
default: live_trading
responses:
"200":
description: |
Return the WebChart object
- Time-series of (timestamp, value) array
- Metadata like help links
content:
application/json:
schema:
type: object
"422":
description: |
Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/file':
x-pyramid-route-name: web_file
get:
operationId: web_file
summary: |
Serve various files related to the trading strategy and its backtest.
These files are static in nature and are not supposed to change for
the duration of trade-executor life time.
parameters:
- name: type
in: query
description: |
required: true
schema:
type: string
enum: [html, notebook]
responses:
"200":
description: |
Return the asked file.
"422":
description: |
Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
'/icon':
x-pyramid-route-name: web_icon
get:
operationId: web_icon
summary: |
Serve various icons as image files related to the trade executor.
By the default, render the round avatar icon used on the strategy listing page.
responses:
"200":
description: |
Return the asked image file.
"422":
description: |
Unexpected error - usually an internal error
content:
application/json:
schema:
type: object
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
# Declare HTTP Basic Auth protection over the whole API
# https://swagger.io/docs/specification/authentication/basic-authentication/
security:
- basicAuth: []