@danielgroen/dxtrade-api 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,7 @@ npm install dxtrade-api
24
24
  - [x] Positions (get & close)
25
25
  - [x] Account metrics & trade journal
26
26
  - [x] Symbol search & instrument info
27
+ - [x] OHLC / price bar data
27
28
  - [x] PnL assessments
28
29
  - [x] Multi-broker support (FTMO, Eightcap, Lark Funding)
29
30
  - [x] Full TypeScript support
@@ -99,6 +100,7 @@ BROKER.FTMO // "https://dxtrade.ftmo.com"
99
100
  - `client.getSymbolInfo(symbol)` — Get instrument info (volume limits, lot size)
100
101
  - `client.getSymbolLimits()` — Get order size limits and stop/limit distances for all symbols
101
102
  - `client.getInstruments(params?)` — Get all available instruments, optionally filtered by partial match (e.g. `{ type: "FOREX" }`)
103
+ - `client.getOHLC(params)` — Fetch OHLC price bars for a symbol (resolution, range, maxBars, priceField)
102
104
 
103
105
  ### Trading
104
106
 
@@ -156,6 +158,7 @@ npm run example:assessments
156
158
  npm run example:assessments:btc
157
159
  npm run example:account
158
160
  npm run example:instruments
161
+ npm run example:ohlc
159
162
  npm run example:instruments:forex
160
163
  npm run example:symbol
161
164
  npm run example:symbol:btc
package/dist/index.d.mts CHANGED
@@ -12,11 +12,13 @@ declare const endpoints: {
12
12
  submitOrder: (base: string) => string;
13
13
  closePosition: (base: string) => string;
14
14
  assessments: (base: string) => string;
15
- websocket: (base: string) => string;
15
+ websocket: (base: string, atmosphereId?: string | null) => string;
16
16
  tradeJournal: (base: string, params: {
17
17
  from: number;
18
18
  to: number;
19
19
  }) => string;
20
+ subscribeInstruments: (base: string) => string;
21
+ charts: (base: string) => string;
20
22
  };
21
23
 
22
24
  declare enum ORDER_TYPE {
@@ -37,11 +39,39 @@ declare enum TIF {
37
39
  DAY = "DAY",
38
40
  GTD = "GTD"
39
41
  }
42
+ declare enum ERROR {
43
+ NO_SESSION = "NO_SESSION",
44
+ LOGIN_FAILED = "LOGIN_FAILED",
45
+ LOGIN_ERROR = "LOGIN_ERROR",
46
+ CSRF_NOT_FOUND = "CSRF_NOT_FOUND",
47
+ CSRF_ERROR = "CSRF_ERROR",
48
+ ACCOUNT_SWITCH_ERROR = "ACCOUNT_SWITCH_ERROR",
49
+ NO_SUGGESTIONS = "NO_SUGGESTIONS",
50
+ SUGGEST_ERROR = "SUGGEST_ERROR",
51
+ NO_SYMBOL_INFO = "NO_SYMBOL_INFO",
52
+ SYMBOL_INFO_ERROR = "SYMBOL_INFO_ERROR",
53
+ INSTRUMENTS_TIMEOUT = "INSTRUMENTS_TIMEOUT",
54
+ INSTRUMENTS_ERROR = "INSTRUMENTS_ERROR",
55
+ LIMITS_TIMEOUT = "LIMITS_TIMEOUT",
56
+ LIMITS_ERROR = "LIMITS_ERROR",
57
+ OHLC_TIMEOUT = "OHLC_TIMEOUT",
58
+ OHLC_ERROR = "OHLC_ERROR",
59
+ ORDER_ERROR = "ORDER_ERROR",
60
+ POSITION_CLOSE_ERROR = "POSITION_CLOSE_ERROR",
61
+ ACCOUNT_METRICS_TIMEOUT = "ACCOUNT_METRICS_TIMEOUT",
62
+ ACCOUNT_METRICS_ERROR = "ACCOUNT_METRICS_ERROR",
63
+ ACCOUNT_POSITIONS_TIMEOUT = "ACCOUNT_POSITIONS_TIMEOUT",
64
+ ACCOUNT_POSITIONS_ERROR = "ACCOUNT_POSITIONS_ERROR",
65
+ TRADE_JOURNAL_ERROR = "TRADE_JOURNAL_ERROR",
66
+ ASSESSMENTS_ERROR = "ASSESSMENTS_ERROR"
67
+ }
40
68
  declare enum WS_MESSAGE {
41
69
  ACCOUNT_METRICS = "ACCOUNT_METRICS",
42
70
  ACCOUNTS = "ACCOUNTS",
43
71
  AVAILABLE_WATCHLISTS = "AVAILABLE_WATCHLISTS",
72
+ CHART_FEED_SUBTOPIC = "chartFeedSubtopic",
44
73
  INSTRUMENTS = "INSTRUMENTS",
74
+ INSTRUMENT_METRICS = "INSTRUMENT_METRICS",
45
75
  LIMITS = "LIMITS",
46
76
  MESSAGE = "MESSAGE",
47
77
  ORDERS = "ORDERS",
@@ -49,8 +79,14 @@ declare enum WS_MESSAGE {
49
79
  POSITION_CASH_TRANSFERS = "POSITION_CASH_TRANSFERS",
50
80
  PRIVATE_LAYOUT_NAMES = "PRIVATE_LAYOUT_NAMES",
51
81
  SHARED_PROPERTIES_MESSAGE = "SHARED_PROPERTIES_MESSAGE",
82
+ TRADE_STATUSES = "TRADE_STATUSES",
52
83
  USER_LOGIN_INFO = "USER_LOGIN_INFO"
53
84
  }
85
+ declare namespace WS_MESSAGE {
86
+ enum SUBTOPIC {
87
+ BIG_CHART_COMPONENT = "BigChartComponentPresenter-4"
88
+ }
89
+ }
54
90
 
55
91
  declare class DxtradeError extends Error {
56
92
  code: string;
@@ -238,6 +274,31 @@ declare namespace Instrument {
238
274
  }
239
275
  }
240
276
 
277
+ declare namespace OHLC {
278
+ interface Params {
279
+ /** Symbol to fetch bars for (e.g. "EURUSD"). */
280
+ symbol: string;
281
+ /** Bar aggregation period in seconds (default: 60 = 1 min). Common values: 60 (1m), 300 (5m), 900 (15m), 1800 (30m), 3600 (1h), 14400 (4h), 86400 (1d). */
282
+ resolution?: number;
283
+ /** Lookback window in seconds from now (default: 432000 = 5 days). Determines how far back in history to fetch bars. */
284
+ range?: number;
285
+ /** Maximum number of bars to return (default: 3500). */
286
+ maxBars?: number;
287
+ /** Price field to use (default: "bid"). */
288
+ priceField?: "bid" | "ask";
289
+ }
290
+ interface Bar {
291
+ timestamp: number;
292
+ open: number;
293
+ high: number;
294
+ low: number;
295
+ close: number;
296
+ volume: number;
297
+ vwap: number;
298
+ time: number;
299
+ }
300
+ }
301
+
241
302
  declare namespace Position {
242
303
  interface Get {
243
304
  uid: string;
@@ -356,6 +417,15 @@ declare class DxtradeClient {
356
417
  getInstruments(params?: Partial<Instrument.Info>): Promise<Instrument.Info[]>;
357
418
  /** Fetch PnL assessments for an instrument within a date range. */
358
419
  getAssessments(params: Assessments.Params): Promise<Assessments.Response>;
420
+ /**
421
+ * Fetch OHLC price bars for a symbol.
422
+ * @param params.symbol - Instrument symbol (e.g. "EURUSD")
423
+ * @param params.resolution - Bar period in seconds (default: 60 = 1 min)
424
+ * @param params.range - Lookback window in seconds (default: 432000 = 5 days)
425
+ * @param params.maxBars - Maximum bars to return (default: 3500)
426
+ * @param params.priceField - "bid" or "ask" (default: "bid")
427
+ */
428
+ getOHLC(params: OHLC.Params): Promise<OHLC.Bar[]>;
359
429
  }
360
430
 
361
- export { ACTION, BROKER, type DxtradeCallbacks, DxtradeClient, type DxtradeConfig, DxtradeError, ORDER_TYPE, SIDE, TIF, WS_MESSAGE, type WsPayload, endpoints };
431
+ export { ACTION, BROKER, type DxtradeCallbacks, DxtradeClient, type DxtradeConfig, DxtradeError, ERROR, ORDER_TYPE, SIDE, TIF, WS_MESSAGE, type WsPayload, endpoints };
package/dist/index.d.ts CHANGED
@@ -12,11 +12,13 @@ declare const endpoints: {
12
12
  submitOrder: (base: string) => string;
13
13
  closePosition: (base: string) => string;
14
14
  assessments: (base: string) => string;
15
- websocket: (base: string) => string;
15
+ websocket: (base: string, atmosphereId?: string | null) => string;
16
16
  tradeJournal: (base: string, params: {
17
17
  from: number;
18
18
  to: number;
19
19
  }) => string;
20
+ subscribeInstruments: (base: string) => string;
21
+ charts: (base: string) => string;
20
22
  };
21
23
 
22
24
  declare enum ORDER_TYPE {
@@ -37,11 +39,39 @@ declare enum TIF {
37
39
  DAY = "DAY",
38
40
  GTD = "GTD"
39
41
  }
42
+ declare enum ERROR {
43
+ NO_SESSION = "NO_SESSION",
44
+ LOGIN_FAILED = "LOGIN_FAILED",
45
+ LOGIN_ERROR = "LOGIN_ERROR",
46
+ CSRF_NOT_FOUND = "CSRF_NOT_FOUND",
47
+ CSRF_ERROR = "CSRF_ERROR",
48
+ ACCOUNT_SWITCH_ERROR = "ACCOUNT_SWITCH_ERROR",
49
+ NO_SUGGESTIONS = "NO_SUGGESTIONS",
50
+ SUGGEST_ERROR = "SUGGEST_ERROR",
51
+ NO_SYMBOL_INFO = "NO_SYMBOL_INFO",
52
+ SYMBOL_INFO_ERROR = "SYMBOL_INFO_ERROR",
53
+ INSTRUMENTS_TIMEOUT = "INSTRUMENTS_TIMEOUT",
54
+ INSTRUMENTS_ERROR = "INSTRUMENTS_ERROR",
55
+ LIMITS_TIMEOUT = "LIMITS_TIMEOUT",
56
+ LIMITS_ERROR = "LIMITS_ERROR",
57
+ OHLC_TIMEOUT = "OHLC_TIMEOUT",
58
+ OHLC_ERROR = "OHLC_ERROR",
59
+ ORDER_ERROR = "ORDER_ERROR",
60
+ POSITION_CLOSE_ERROR = "POSITION_CLOSE_ERROR",
61
+ ACCOUNT_METRICS_TIMEOUT = "ACCOUNT_METRICS_TIMEOUT",
62
+ ACCOUNT_METRICS_ERROR = "ACCOUNT_METRICS_ERROR",
63
+ ACCOUNT_POSITIONS_TIMEOUT = "ACCOUNT_POSITIONS_TIMEOUT",
64
+ ACCOUNT_POSITIONS_ERROR = "ACCOUNT_POSITIONS_ERROR",
65
+ TRADE_JOURNAL_ERROR = "TRADE_JOURNAL_ERROR",
66
+ ASSESSMENTS_ERROR = "ASSESSMENTS_ERROR"
67
+ }
40
68
  declare enum WS_MESSAGE {
41
69
  ACCOUNT_METRICS = "ACCOUNT_METRICS",
42
70
  ACCOUNTS = "ACCOUNTS",
43
71
  AVAILABLE_WATCHLISTS = "AVAILABLE_WATCHLISTS",
72
+ CHART_FEED_SUBTOPIC = "chartFeedSubtopic",
44
73
  INSTRUMENTS = "INSTRUMENTS",
74
+ INSTRUMENT_METRICS = "INSTRUMENT_METRICS",
45
75
  LIMITS = "LIMITS",
46
76
  MESSAGE = "MESSAGE",
47
77
  ORDERS = "ORDERS",
@@ -49,8 +79,14 @@ declare enum WS_MESSAGE {
49
79
  POSITION_CASH_TRANSFERS = "POSITION_CASH_TRANSFERS",
50
80
  PRIVATE_LAYOUT_NAMES = "PRIVATE_LAYOUT_NAMES",
51
81
  SHARED_PROPERTIES_MESSAGE = "SHARED_PROPERTIES_MESSAGE",
82
+ TRADE_STATUSES = "TRADE_STATUSES",
52
83
  USER_LOGIN_INFO = "USER_LOGIN_INFO"
53
84
  }
85
+ declare namespace WS_MESSAGE {
86
+ enum SUBTOPIC {
87
+ BIG_CHART_COMPONENT = "BigChartComponentPresenter-4"
88
+ }
89
+ }
54
90
 
55
91
  declare class DxtradeError extends Error {
56
92
  code: string;
@@ -238,6 +274,31 @@ declare namespace Instrument {
238
274
  }
239
275
  }
240
276
 
277
+ declare namespace OHLC {
278
+ interface Params {
279
+ /** Symbol to fetch bars for (e.g. "EURUSD"). */
280
+ symbol: string;
281
+ /** Bar aggregation period in seconds (default: 60 = 1 min). Common values: 60 (1m), 300 (5m), 900 (15m), 1800 (30m), 3600 (1h), 14400 (4h), 86400 (1d). */
282
+ resolution?: number;
283
+ /** Lookback window in seconds from now (default: 432000 = 5 days). Determines how far back in history to fetch bars. */
284
+ range?: number;
285
+ /** Maximum number of bars to return (default: 3500). */
286
+ maxBars?: number;
287
+ /** Price field to use (default: "bid"). */
288
+ priceField?: "bid" | "ask";
289
+ }
290
+ interface Bar {
291
+ timestamp: number;
292
+ open: number;
293
+ high: number;
294
+ low: number;
295
+ close: number;
296
+ volume: number;
297
+ vwap: number;
298
+ time: number;
299
+ }
300
+ }
301
+
241
302
  declare namespace Position {
242
303
  interface Get {
243
304
  uid: string;
@@ -356,6 +417,15 @@ declare class DxtradeClient {
356
417
  getInstruments(params?: Partial<Instrument.Info>): Promise<Instrument.Info[]>;
357
418
  /** Fetch PnL assessments for an instrument within a date range. */
358
419
  getAssessments(params: Assessments.Params): Promise<Assessments.Response>;
420
+ /**
421
+ * Fetch OHLC price bars for a symbol.
422
+ * @param params.symbol - Instrument symbol (e.g. "EURUSD")
423
+ * @param params.resolution - Bar period in seconds (default: 60 = 1 min)
424
+ * @param params.range - Lookback window in seconds (default: 432000 = 5 days)
425
+ * @param params.maxBars - Maximum bars to return (default: 3500)
426
+ * @param params.priceField - "bid" or "ask" (default: "bid")
427
+ */
428
+ getOHLC(params: OHLC.Params): Promise<OHLC.Bar[]>;
359
429
  }
360
430
 
361
- export { ACTION, BROKER, type DxtradeCallbacks, DxtradeClient, type DxtradeConfig, DxtradeError, ORDER_TYPE, SIDE, TIF, WS_MESSAGE, type WsPayload, endpoints };
431
+ export { ACTION, BROKER, type DxtradeCallbacks, DxtradeClient, type DxtradeConfig, DxtradeError, ERROR, ORDER_TYPE, SIDE, TIF, WS_MESSAGE, type WsPayload, endpoints };