ctrader-ts 0.1.6 → 0.1.8
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/dist/src/modules/market.d.ts.map +1 -1
- package/dist/src/modules/market.js +45 -9
- package/dist/src/modules/market.js.map +1 -1
- package/dist/src/proto/messages.js +18889 -16733
- package/dist/src/proto/proto/messages.js +18889 -16733
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/modules/market.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAe,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/modules/market.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAe,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACT,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAsCD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqB;IAC7D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAGxC;IACJ,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqB;gBAElD,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM;IAK5D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAO7B,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAUxC,UAAU,CACd,eAAe,UAAQ,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAAC,eAAe,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAYnE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ1D,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAUhD,uBAAuB,CAC3B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC;IAYnB,cAAc,CAClB,SAAS,EAAE,MAAM,EAAE,EACnB,wBAAwB,CAAC,EAAE,OAAO,GACjC,OAAO,CAAC,IAAI,CAAC;IAWV,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAaV,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD,YAAY,CAChB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAuBjD,WAAW,CACf,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC;QAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAoBnD,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAMvD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAMzD,eAAe,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,IAAI;IAMnE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB5C"}
|
|
@@ -1,4 +1,39 @@
|
|
|
1
|
-
import { PayloadType } from "../enums.js";
|
|
1
|
+
import { PayloadType, TrendbarPeriod } from "../enums.js";
|
|
2
|
+
/** Approximate milliseconds per trendbar period (used for fromTimestamp default). */
|
|
3
|
+
function periodMs(period) {
|
|
4
|
+
switch (period) {
|
|
5
|
+
case TrendbarPeriod.M1:
|
|
6
|
+
return 60_000;
|
|
7
|
+
case TrendbarPeriod.M2:
|
|
8
|
+
return 2 * 60_000;
|
|
9
|
+
case TrendbarPeriod.M3:
|
|
10
|
+
return 3 * 60_000;
|
|
11
|
+
case TrendbarPeriod.M4:
|
|
12
|
+
return 4 * 60_000;
|
|
13
|
+
case TrendbarPeriod.M5:
|
|
14
|
+
return 5 * 60_000;
|
|
15
|
+
case TrendbarPeriod.M10:
|
|
16
|
+
return 10 * 60_000;
|
|
17
|
+
case TrendbarPeriod.M15:
|
|
18
|
+
return 15 * 60_000;
|
|
19
|
+
case TrendbarPeriod.M30:
|
|
20
|
+
return 30 * 60_000;
|
|
21
|
+
case TrendbarPeriod.H1:
|
|
22
|
+
return 3_600_000;
|
|
23
|
+
case TrendbarPeriod.H4:
|
|
24
|
+
return 4 * 3_600_000;
|
|
25
|
+
case TrendbarPeriod.H12:
|
|
26
|
+
return 12 * 3_600_000;
|
|
27
|
+
case TrendbarPeriod.D1:
|
|
28
|
+
return 86_400_000;
|
|
29
|
+
case TrendbarPeriod.W1:
|
|
30
|
+
return 7 * 86_400_000;
|
|
31
|
+
case TrendbarPeriod.MN1:
|
|
32
|
+
return 30 * 86_400_000;
|
|
33
|
+
default:
|
|
34
|
+
return 3_600_000;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
2
37
|
export class CTraderMarket {
|
|
3
38
|
connection;
|
|
4
39
|
accountId;
|
|
@@ -117,15 +152,16 @@ export class CTraderMarket {
|
|
|
117
152
|
this.activeDepthSubscriptions.delete(id);
|
|
118
153
|
}
|
|
119
154
|
async getTrendbars(params) {
|
|
155
|
+
const toTimestamp = params.toTimestamp ?? Date.now();
|
|
156
|
+
const fromTimestamp = params.fromTimestamp ??
|
|
157
|
+
toTimestamp - periodMs(params.period) * (params.count ?? 300) * 1.5;
|
|
120
158
|
const payload = {
|
|
121
159
|
ctidTraderAccountId: this.accountId,
|
|
122
160
|
symbolId: params.symbolId,
|
|
123
161
|
period: params.period,
|
|
162
|
+
fromTimestamp,
|
|
163
|
+
toTimestamp,
|
|
124
164
|
};
|
|
125
|
-
if (params.fromTimestamp !== undefined)
|
|
126
|
-
payload["fromTimestamp"] = params.fromTimestamp;
|
|
127
|
-
if (params.toTimestamp !== undefined)
|
|
128
|
-
payload["toTimestamp"] = params.toTimestamp;
|
|
129
165
|
if (params.count !== undefined)
|
|
130
166
|
payload["count"] = params.count;
|
|
131
167
|
const res = await this.connection.request(PayloadType.GET_TRENDBARS_REQ, payload);
|
|
@@ -135,15 +171,15 @@ export class CTraderMarket {
|
|
|
135
171
|
};
|
|
136
172
|
}
|
|
137
173
|
async getTickData(params) {
|
|
174
|
+
const toTimestamp = params.toTimestamp ?? Date.now();
|
|
175
|
+
const fromTimestamp = params.fromTimestamp ?? toTimestamp - 3_600_000; // default 1 hour
|
|
138
176
|
const payload = {
|
|
139
177
|
ctidTraderAccountId: this.accountId,
|
|
140
178
|
symbolId: params.symbolId,
|
|
141
179
|
type: params.type,
|
|
180
|
+
fromTimestamp,
|
|
181
|
+
toTimestamp,
|
|
142
182
|
};
|
|
143
|
-
if (params.fromTimestamp !== undefined)
|
|
144
|
-
payload["fromTimestamp"] = params.fromTimestamp;
|
|
145
|
-
if (params.toTimestamp !== undefined)
|
|
146
|
-
payload["toTimestamp"] = params.toTimestamp;
|
|
147
183
|
const res = await this.connection.request(PayloadType.GET_TICK_DATA_REQ, payload);
|
|
148
184
|
return {
|
|
149
185
|
ticks: res["tickData"] ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/modules/market.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/modules/market.ts"],"names":[],"mappings":"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"}
|