hft-js 0.2.0 → 0.4.0

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/lib/index.test.js CHANGED
@@ -1,154 +1,122 @@
1
- "use strict";
2
1
  /*
3
2
  * index.test.ts
4
3
  *
5
- * Copyright (c) 2025 Xiongfei Shi
4
+ * Copyright (c) 2025-2026 Xiongfei Shi
6
5
  *
7
6
  * Author: Xiongfei Shi <xiongfei.shi(a)icloud.com>
8
7
  * License: Apache-2.0
9
8
  *
10
9
  * https://github.com/shixiongfei/hft.js
11
10
  */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || (function () {
29
- var ownKeys = function(o) {
30
- ownKeys = Object.getOwnPropertyNames || function (o) {
31
- var ar = [];
32
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
- return ar;
34
- };
35
- return ownKeys(o);
36
- };
37
- return function (mod) {
38
- if (mod && mod.__esModule) return mod;
39
- var result = {};
40
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
- __setModuleDefault(result, mod);
42
- return result;
43
- };
44
- })();
45
- var __importDefault = (this && this.__importDefault) || function (mod) {
46
- return (mod && mod.__esModule) ? mod : { "default": mod };
47
- };
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- var node_fs_1 = __importDefault(require("node:fs"));
50
- var node_process_1 = require("node:process");
51
- var hft = __importStar(require("."));
52
- var config = JSON.parse(node_fs_1.default.readFileSync("test.conf.json", "utf8"));
53
- var Strategy = /** @class */ (function () {
54
- function Strategy(engine) {
55
- this.symbol = config.Test.Symbol;
11
+ import process from "node:process";
12
+ import fs from "node:fs";
13
+ import * as hft from "./index.js";
14
+ const config = JSON.parse(fs.readFileSync("test.conf.json", "utf8"));
15
+ class Strategy {
16
+ lastTick;
17
+ lastBar;
18
+ engine;
19
+ symbol = config.Test.Symbol;
20
+ constructor(engine) {
56
21
  this.engine = engine;
57
22
  }
58
- Strategy.prototype.onInit = function () {
59
- var _this = this;
23
+ onInit() {
60
24
  this.engine.subscribe([this.symbol], this);
61
25
  this.engine.subscribeBar([this.symbol], this);
62
26
  console.log("Strategy init");
63
27
  console.log("Trading Day", this.engine.getTradingDay());
64
28
  this.engine.queryInstrument(this.symbol, {
65
- onInstrument: function (instrument) {
29
+ onInstrument: (instrument) => {
66
30
  if (!instrument) {
67
- console.error("Symbol", _this.symbol, "error");
68
- (0, node_process_1.exit)(1);
31
+ console.error("Symbol", this.symbol, "error");
32
+ process.exit(1);
69
33
  }
70
34
  console.log("Instrument", instrument);
71
35
  },
72
36
  });
73
37
  this.engine.queryCommissionRate(this.symbol, {
74
- onCommissionRate: function (rate) {
38
+ onCommissionRate: (rate) => {
75
39
  console.log("Commission Rate", rate);
76
40
  },
77
41
  });
78
42
  this.engine.queryMarginRate(this.symbol, {
79
- onMarginRate: function (rate) {
43
+ onMarginRate: (rate) => {
80
44
  console.log("Margin Rate", rate);
81
45
  },
82
46
  });
83
47
  this.engine.queryTradingAccounts({
84
- onTradingAccounts: function (accounts) {
48
+ onTradingAccounts: (accounts) => {
85
49
  console.log("Trading Accounts", accounts);
86
50
  },
87
51
  });
88
52
  this.engine.queryOrders({
89
- onOrders: function (orders) {
53
+ onOrders: (orders) => {
90
54
  console.log("Orders", orders);
91
55
  },
92
56
  });
93
57
  this.engine.queryPositionDetails({
94
- onPositionDetails: function (positionDetails) {
58
+ onPositionDetails: (positionDetails) => {
95
59
  console.log("Position Details", positionDetails);
96
60
  },
97
61
  });
98
62
  this.engine.queryPositions({
99
- onPositions: function (positions) {
63
+ onPositions: (positions) => {
100
64
  console.log("Positions", positions);
101
65
  },
102
66
  });
103
- setTimeout(function () {
104
- if (!_this.lastTick) {
67
+ setTimeout(() => {
68
+ if (!this.lastTick) {
105
69
  console.error("Market data is not found");
106
70
  return;
107
71
  }
108
- if (_this.lastBar) {
109
- console.log(_this.lastBar);
72
+ if (this.lastBar) {
73
+ console.log(this.lastBar);
74
+ }
75
+ const price = this.lastTick.orderBook.asks.price[0];
76
+ if (!price) {
77
+ console.error("Invalid price");
78
+ return;
110
79
  }
111
- hft.buyOpen(_this.engine, _this, _this.symbol, 1, _this.lastTick.orderBook.asks.price[0], {
112
- onPlaceOrderSent: function (receiptId) {
80
+ hft.buyOpen(this.engine, this, this.symbol, 1, price, {
81
+ onPlaceOrderSent: (receiptId) => {
113
82
  console.log("Open Place Order Receipt Id", receiptId);
114
83
  },
115
- onPlaceOrderError: function (reason) {
84
+ onPlaceOrderError: (reason) => {
116
85
  console.error("Open Place Order Error", reason);
117
86
  },
118
87
  });
119
88
  }, 30 * 1000);
120
- };
121
- Strategy.prototype.onDestroy = function () {
89
+ }
90
+ onDestroy() {
122
91
  this.engine.unsubscribeBar([this.symbol], this);
123
92
  this.engine.unsubscribe([this.symbol], this);
124
93
  console.log("Strategy destroy");
125
- };
126
- Strategy.prototype.onRisk = function (type, reason) {
94
+ }
95
+ onRisk(type, reason) {
127
96
  console.log("Trigger Risk Control", type, reason);
128
- };
129
- Strategy.prototype.onEntrust = function (order) {
97
+ }
98
+ onEntrust(order) {
130
99
  console.log("Entrust order", order);
131
- };
132
- Strategy.prototype.onTrade = function (order, trade) {
133
- var _this = this;
100
+ }
101
+ onTrade(order, trade) {
134
102
  console.log("Order", order, "Traded", trade);
135
103
  if (order.status === "filled") {
136
- setTimeout(function () {
137
- _this.engine.queryPosition(_this.symbol, {
138
- onPosition: function (position) {
139
- if (!position || !_this.lastTick) {
104
+ setTimeout(() => {
105
+ this.engine.queryPosition(this.symbol, {
106
+ onPosition: (position) => {
107
+ if (!position || !this.lastTick) {
140
108
  return;
141
109
  }
142
- var todayLong = position.today.long.position - position.today.long.frozen;
110
+ const todayLong = position.today.long.position - position.today.long.frozen;
143
111
  if (todayLong > 0) {
144
- if (_this.lastBar) {
145
- console.log(_this.lastBar);
112
+ if (this.lastBar) {
113
+ console.log(this.lastBar);
146
114
  }
147
- hft.sellClose(_this.engine, _this, _this.symbol, todayLong, 0, true, {
148
- onPlaceOrderSent: function (receiptId) {
115
+ hft.sellClose(this.engine, this, this.symbol, todayLong, 0, true, {
116
+ onPlaceOrderSent: (receiptId) => {
149
117
  console.log("Close Place Order Receipt Id", receiptId);
150
118
  },
151
- onPlaceOrderError: function (reason) {
119
+ onPlaceOrderError: (reason) => {
152
120
  console.error("Close Place Order Error", reason);
153
121
  },
154
122
  });
@@ -157,56 +125,59 @@ var Strategy = /** @class */ (function () {
157
125
  });
158
126
  }, 30 * 1000);
159
127
  }
160
- };
161
- Strategy.prototype.onCancel = function (order) {
128
+ }
129
+ onCancel(order) {
162
130
  console.log("Cancel Order", order);
163
- };
164
- Strategy.prototype.onReject = function (order) {
131
+ }
132
+ onReject(order) {
165
133
  console.log("Reject Order", order);
166
- };
167
- Strategy.prototype.onTick = function (tick, tape) {
134
+ }
135
+ onTick(tick, tape) {
168
136
  //console.log(tick);
169
137
  //console.log(tape);
170
138
  this.lastTick = tick;
171
- };
172
- Strategy.prototype.onBar = function (bar) {
139
+ }
140
+ onBar(bar) {
173
141
  console.log(bar);
174
142
  this.lastBar = bar;
175
- };
176
- return Strategy;
177
- }());
178
- var market = hft.createMarket(config.FlowMdPath, config.FrontMdAddrs, {
143
+ }
144
+ }
145
+ const market = hft.createMarket(config.FlowMdPath, config.FrontMdAddrs, {
179
146
  listener: {
180
- onSubscribed: function (symbol) {
181
- console.log("Market subscribed: ".concat(symbol));
147
+ onSubscribed: (symbol) => {
148
+ console.log(`Market subscribed: ${symbol}`);
182
149
  },
183
- onUnsubscribed: function (symbol) {
184
- console.log("Market unsubscribed: ".concat(symbol));
150
+ onUnsubscribed: (symbol) => {
151
+ console.log(`Market unsubscribed: ${symbol}`);
185
152
  },
186
153
  },
187
154
  });
188
- var trader = hft.createTrader(config.FlowTdPath, config.FrontTdAddrs, config.UserInfo, { fastQueryLastTick: function (instrumentId) { return market.getLastTick(instrumentId); } });
189
- var recorder = market.getRecorder();
190
- var enableRecorder = false;
155
+ const trader = hft.createTrader(config.FlowTdPath, config.FrontTdAddrs, config.UserInfo, { fastQueryLastTick: (instrumentId) => market.getLastTick(instrumentId) });
156
+ const recorder = market.getRecorder();
157
+ const enableRecorder = false;
191
158
  if (enableRecorder && recorder) {
192
159
  recorder.setRecorder({
193
- onMarketData: function (marketData) {
160
+ onOpen: () => {
161
+ console.log("Market Recorder is started");
162
+ },
163
+ onClose: () => {
164
+ console.log("Market Recorder is stopped");
165
+ },
166
+ onMarketData: (marketData) => {
194
167
  console.log(marketData.InstrumentID, marketData.LastPrice);
195
168
  },
196
- }, function (instruments) {
197
- return instruments
198
- .filter(function (instrument) { return instrument.productType === "futures"; })
199
- .map(function (instrument) { return instrument.symbol; });
200
- });
169
+ }, (instruments) => instruments
170
+ .filter((instrument) => instrument.productType === "futures")
171
+ .map((instrument) => instrument.symbol));
201
172
  }
202
- var broker = hft.createBroker(trader, market, {
203
- onError: function (error, message) {
173
+ const broker = hft.createBroker(trader, market, {
174
+ onError(error, message) {
204
175
  console.error(error, message);
205
176
  },
206
177
  });
207
178
  broker.addStrategy(new Strategy(broker));
208
179
  if (!broker.start()) {
209
180
  console.error("Broker start failed");
210
- (0, node_process_1.exit)(1);
181
+ process.exit(1);
211
182
  }
212
183
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BarData, CommissionRate, InstrumentData, MarginRate, OffsetType, OrderData, OrderFlag, OrderStatistic, PositionData, PositionDetail, ProductType, SideType, TapeData, TickData, TradeData, TradingAccount } from "./typedef.js";
1
+ import type { BarData, CommissionRate, InstrumentData, MarginRate, OffsetType, OrderData, OrderFlag, OrderStatistic, PositionData, PositionDetail, ProductType, SideType, TapeData, TickData, TradeData, TradingAccount } from "./typedef.js";
2
2
  export type RiskType = "place-order-risk" | "cancel-order-risk";
3
3
  export interface IPlaceOrderRiskManager {
4
4
  onPlaceOrder: (symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag) => boolean | string;
@@ -13,7 +13,7 @@ export type ErrorType = "login-error" | "query-order-error" | "query-trade-error
13
13
  export interface IErrorReceiver {
14
14
  onError: (error: ErrorType, message: string) => void;
15
15
  }
16
- export interface ILifecycleListener extends IErrorReceiver {
16
+ export interface ILifecycleListener {
17
17
  onOpen: () => void;
18
18
  onClose: () => void;
19
19
  }
@@ -74,8 +74,8 @@ export interface IPositionDetailsReceiver {
74
74
  onPositionDetails: (positionDetails: PositionDetail[] | undefined) => void;
75
75
  }
76
76
  export interface IProvider {
77
- open: (lifecycle: ILifecycleListener) => boolean;
78
- close: (lifecycle: ILifecycleListener) => void;
77
+ open: (lifecycle: ILifecycleListener, errorReceiver: IErrorReceiver) => boolean;
78
+ close: (lifecycle: ILifecycleListener, errorReceiver: IErrorReceiver) => void;
79
79
  }
80
80
  export interface IOrderEmitter {
81
81
  addOrderReceiver: (receiver: IOrderReceiver) => void;
@@ -95,7 +95,7 @@ export interface IQueryProvider {
95
95
  queryPositionDetails: (receiver: IPositionDetailsReceiver) => void;
96
96
  queryOrders: (receiver: IOrdersReceiver) => void;
97
97
  }
98
- export interface IMarketRecorderReceiver {
98
+ export interface IMarketRecorderReceiver extends ILifecycleListener {
99
99
  onMarketData: (marketData: any) => void;
100
100
  }
101
101
  export type IMarketRecorderSymbols = (instrument: InstrumentData[]) => string[];
package/lib/interfaces.js CHANGED
@@ -1,13 +1,12 @@
1
- "use strict";
2
1
  /*
3
2
  * interfaces.ts
4
3
  *
5
- * Copyright (c) 2025 Xiongfei Shi
4
+ * Copyright (c) 2025-2026 Xiongfei Shi
6
5
  *
7
6
  * Author: Xiongfei Shi <xiongfei.shi(a)icloud.com>
8
7
  * License: Apache-2.0
9
8
  *
10
9
  * https://github.com/shixiongfei/hft.js
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
11
+ export {};
13
12
  //# sourceMappingURL=interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
package/lib/market.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CTPProvider } from "./provider.js";
2
- import { InstrumentData, OrderBook } from "./typedef.js";
3
- import { ILifecycleListener, IMarketProvider, IMarketRecorderProvider, IMarketRecorderReceiver, IMarketRecorderSymbols, ITickReceiver } from "./interfaces.js";
2
+ import type { InstrumentData, OrderBook } from "./typedef.js";
3
+ import type { IErrorReceiver, ILifecycleListener, IMarketProvider, IMarketRecorderProvider, IMarketRecorderReceiver, IMarketRecorderSymbols, ITickReceiver } from "./interfaces.js";
4
4
  export interface IMarketListener {
5
5
  onSubscribed: (symbol: string) => void;
6
6
  onUnsubscribed: (symbol: string) => void;
@@ -40,8 +40,8 @@ export declare class Market extends CTPProvider implements IMarketProvider, IMar
40
40
  bandings: import("./typedef.js").PriceRange;
41
41
  orderBook: OrderBook;
42
42
  }> | undefined;
43
- open(lifecycle: ILifecycleListener): boolean;
44
- close(lifecycle: ILifecycleListener): void;
43
+ open(lifecycle: ILifecycleListener, errorReceiver: IErrorReceiver): boolean;
44
+ close(lifecycle: ILifecycleListener, _errorReceiver: IErrorReceiver): void;
45
45
  startRecorder(instrument: InstrumentData[]): void;
46
46
  stopRecorder(): void;
47
47
  subscribe(symbols: string[], receiver: ITickReceiver): void;