hft-js 0.0.0 → 0.1.1

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/src/typedef.ts ADDED
@@ -0,0 +1,201 @@
1
+ /*
2
+ * typedef.ts
3
+ *
4
+ * Copyright (c) 2025 Xiongfei Shi
5
+ *
6
+ * Author: Xiongfei Shi <xiongfei.shi(a)icloud.com>
7
+ * License: Apache-2.0
8
+ *
9
+ * https://github.com/shixiongfei/hft.js
10
+ */
11
+
12
+ export type TapeSide = Readonly<{
13
+ price: number[];
14
+ volume: number[];
15
+ }>;
16
+
17
+ export type OrderBook = Readonly<{
18
+ asks: TapeSide;
19
+ bids: TapeSide;
20
+ }>;
21
+
22
+ export type PriceRange = Readonly<{
23
+ upper: number;
24
+ lower: number;
25
+ }>;
26
+
27
+ export type TickData = Readonly<{
28
+ symbol: string;
29
+ date: number;
30
+ time: number;
31
+ tradingDay: number;
32
+ preOpenInterest: number;
33
+ preClose: number;
34
+ openInterest: number;
35
+ openPrice: number;
36
+ highPrice: number;
37
+ lowPrice: number;
38
+ lastPrice: number;
39
+ volume: number;
40
+ amount: number;
41
+ limits: PriceRange;
42
+ bandings: PriceRange;
43
+ orderBook: OrderBook;
44
+ }>;
45
+
46
+ export type TapeType =
47
+ | "open"
48
+ | "close"
49
+ | "dual-open"
50
+ | "dual-close"
51
+ | "turnover"
52
+ | "no-deal";
53
+
54
+ export type TapeDirection = "up" | "down" | "none";
55
+
56
+ export type TapeStatus =
57
+ | "open-long"
58
+ | "open-short"
59
+ | "close-short"
60
+ | "close-long"
61
+ | "turnover-long"
62
+ | "turnover-short"
63
+ | "dual-open"
64
+ | "dual-close"
65
+ | "invalid";
66
+
67
+ export type TapeData = Readonly<{
68
+ symbol: string;
69
+ date: number;
70
+ time: number;
71
+ volumeDelta: number;
72
+ interestDelta: number;
73
+ type: TapeType;
74
+ direction: TapeDirection;
75
+ status: TapeStatus;
76
+ }>;
77
+
78
+ export type PositionCell = Readonly<{
79
+ position: number;
80
+ frozen: number;
81
+ }>;
82
+
83
+ export type PositionSide = Readonly<{
84
+ long: PositionCell;
85
+ short: PositionCell;
86
+ }>;
87
+
88
+ export type PositionData = Readonly<{
89
+ symbol: string;
90
+ today: PositionSide;
91
+ history: PositionSide;
92
+ pending: { long: number; short: number };
93
+ }>;
94
+
95
+ export type SideType = "long" | "short";
96
+
97
+ export type PositionDetail = Readonly<{
98
+ symbol: string;
99
+ date: number;
100
+ side: SideType;
101
+ price: number;
102
+ volume: number;
103
+ margin: number;
104
+ }>;
105
+
106
+ export type OffsetType = "open" | "close" | "close-today";
107
+
108
+ export type OrderFlag = "limit" | "market";
109
+
110
+ export type OrderStatus =
111
+ | "submitted"
112
+ | "partially-filled"
113
+ | "filled"
114
+ | "canceled"
115
+ | "rejected";
116
+
117
+ export type TradeData = Readonly<{
118
+ id: string;
119
+ date: number;
120
+ time: number;
121
+ price: number;
122
+ volume: number;
123
+ }>;
124
+
125
+ export type OrderData = Readonly<{
126
+ id: string;
127
+ receiptId: string;
128
+ symbol: string;
129
+ date: number;
130
+ time: number;
131
+ flag: OrderFlag;
132
+ side: SideType;
133
+ offset: OffsetType;
134
+ price: number;
135
+ volume: number;
136
+ traded: number;
137
+ status: OrderStatus;
138
+ trades: TradeData[];
139
+ cancelTime?: number;
140
+ }>;
141
+
142
+ export type OrderStatistic = Readonly<{
143
+ symbol: string;
144
+ places: number;
145
+ entrusts: number;
146
+ trades: number;
147
+ cancels: number;
148
+ rejects: number;
149
+ }>;
150
+
151
+ export type RatioAmount = Readonly<{
152
+ ratio: number;
153
+ amount: number;
154
+ }>;
155
+
156
+ export type CommissionRate = Readonly<{
157
+ symbol: string;
158
+ open: RatioAmount;
159
+ close: RatioAmount;
160
+ closeToday: RatioAmount;
161
+ }>;
162
+
163
+ export type MarginRate = Readonly<{
164
+ symbol: string;
165
+ long: RatioAmount;
166
+ short: RatioAmount;
167
+ }>;
168
+
169
+ export type TradingAccount = Readonly<{
170
+ id: string;
171
+ currency: string;
172
+ preBalance: number;
173
+ balance: number;
174
+ cash: number;
175
+ margin: number;
176
+ commission: number;
177
+ frozenMargin: number;
178
+ frozenCash: number;
179
+ frozenCommission: number;
180
+ }>;
181
+
182
+ export type ProductType = "future" | "option";
183
+
184
+ export type InstrumentData = Readonly<{
185
+ symbol: string;
186
+ id: string;
187
+ name: string;
188
+ exchangeId: string;
189
+ productId: string;
190
+ productType: ProductType;
191
+ deliveryTime: number;
192
+ createDate: number;
193
+ openDate: number;
194
+ expireDate: number;
195
+ multiple: number;
196
+ priceTick: number;
197
+ maxLimitOrderVolume: number;
198
+ minLimitOrderVolume: number;
199
+ }>;
200
+
201
+ export type Writeable<T> = { -readonly [P in keyof T]: Writeable<T[P]> };