hft-js 0.1.0 → 0.1.2

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/bar.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import { BarData, TapeData, TickData, Writeable } from "./typedef.js";
2
+ import { IBarReceiver, ITickReceiver } from "./interfaces.js";
3
+ export type BarInfo = Writeable<BarData>;
4
+ export declare class BarGenerator implements ITickReceiver {
5
+ private readonly receivers;
6
+ private readonly symbol;
7
+ private bar?;
8
+ constructor(symbol: string);
9
+ get isWorking(): boolean;
10
+ addReceiver(receiver: IBarReceiver): void;
11
+ removeReceiver(receiver: IBarReceiver): void;
12
+ onTick(tick: TickData, tape: TapeData): void;
13
+ private _createBar;
14
+ }
15
+ export declare const createBarGenerator: (symbol: string) => BarGenerator;
package/lib/bar.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /*
3
+ * bar.ts
4
+ *
5
+ * Copyright (c) 2025 Xiongfei Shi
6
+ *
7
+ * Author: Xiongfei Shi <xiongfei.shi(a)icloud.com>
8
+ * License: Apache-2.0
9
+ *
10
+ * https://github.com/shixiongfei/hft.js
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createBarGenerator = exports.BarGenerator = void 0;
14
+ var utils_js_1 = require("./utils.js");
15
+ var BarGenerator = /** @class */ (function () {
16
+ function BarGenerator(symbol) {
17
+ this.receivers = [];
18
+ this.symbol = symbol;
19
+ }
20
+ Object.defineProperty(BarGenerator.prototype, "isWorking", {
21
+ get: function () {
22
+ return this.receivers.length > 0;
23
+ },
24
+ enumerable: false,
25
+ configurable: true
26
+ });
27
+ BarGenerator.prototype.addReceiver = function (receiver) {
28
+ if (!this.receivers.includes(receiver)) {
29
+ this.receivers.push(receiver);
30
+ }
31
+ };
32
+ BarGenerator.prototype.removeReceiver = function (receiver) {
33
+ var index = this.receivers.indexOf(receiver);
34
+ if (index >= 0) {
35
+ this.receivers.splice(index, 1);
36
+ }
37
+ };
38
+ BarGenerator.prototype.onTick = function (tick, tape) {
39
+ if (tick.symbol !== this.symbol) {
40
+ return;
41
+ }
42
+ var date = tick.date;
43
+ var time = Math.floor(tick.time / 100) * 100;
44
+ if (this.bar && (this.bar.date !== date || this.bar.time !== time)) {
45
+ var bar_1 = Object.freeze(this.bar);
46
+ Object.freeze(bar_1.buyVolumes);
47
+ Object.freeze(bar_1.sellVolumes);
48
+ this.receivers.forEach(function (receiver) { return receiver.onBar(bar_1); });
49
+ this.bar = undefined;
50
+ }
51
+ if (tape.volumeDelta === 0) {
52
+ return;
53
+ }
54
+ if (!this.bar) {
55
+ this.bar = this._createBar(date, time, tick);
56
+ }
57
+ this.bar.openInterest = tick.openInterest;
58
+ this.bar.closePrice = tick.lastPrice;
59
+ this.bar.highPrice = Math.max(this.bar.highPrice, tick.lastPrice);
60
+ this.bar.lowPrice = Math.min(this.bar.lowPrice, tick.lastPrice);
61
+ this.bar.volume += tape.volumeDelta;
62
+ this.bar.amount += tape.amountDelta;
63
+ switch (tape.direction) {
64
+ case "up":
65
+ if (tick.lastPrice in this.bar.buyVolumes) {
66
+ this.bar.buyVolumes[tick.lastPrice] += tape.volumeDelta;
67
+ }
68
+ else {
69
+ this.bar.buyVolumes[tick.lastPrice] = tape.volumeDelta;
70
+ }
71
+ this.bar.delta += tape.volumeDelta;
72
+ break;
73
+ case "down":
74
+ if (tick.lastPrice in this.bar.sellVolumes) {
75
+ this.bar.sellVolumes[tick.lastPrice] += tape.volumeDelta;
76
+ }
77
+ else {
78
+ this.bar.sellVolumes[tick.lastPrice] = tape.volumeDelta;
79
+ }
80
+ this.bar.delta -= tape.volumeDelta;
81
+ break;
82
+ }
83
+ if (tape.direction !== "none") {
84
+ var tickVP = (0, utils_js_1.getBarVolume)(this.bar, tick.lastPrice);
85
+ var pocVP = (0, utils_js_1.getBarVolume)(this.bar, this.bar.poc);
86
+ if (tickVP > pocVP) {
87
+ this.bar.poc = tick.lastPrice;
88
+ }
89
+ }
90
+ };
91
+ BarGenerator.prototype._createBar = function (date, time, tick) {
92
+ return {
93
+ symbol: this.symbol,
94
+ date: date,
95
+ time: time,
96
+ openInterest: tick.openInterest,
97
+ openPrice: tick.lastPrice,
98
+ highPrice: tick.lastPrice,
99
+ lowPrice: tick.lastPrice,
100
+ closePrice: tick.lastPrice,
101
+ volume: 0,
102
+ amount: 0,
103
+ delta: 0,
104
+ poc: tick.lastPrice,
105
+ buyVolumes: {},
106
+ sellVolumes: {},
107
+ };
108
+ };
109
+ return BarGenerator;
110
+ }());
111
+ exports.BarGenerator = BarGenerator;
112
+ var createBarGenerator = function (symbol) { return new BarGenerator(symbol); };
113
+ exports.createBarGenerator = createBarGenerator;
114
+ //# sourceMappingURL=bar.js.map
package/lib/bar.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar.js","sourceRoot":"","sources":["../src/bar.ts"],"names":[],"mappings":"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"}
package/lib/broker.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { OffsetType, OrderData, OrderFlag, SideType } from "./typedef.js";
2
- import { ICancelOrderResultReceiver, ICancelOrderRiskManager, ICommissionRateReceiver, IErrorReceiver, IInstrumentReceiver, IInstrumentsReceiver, IMarginRateReceiver, IMarketProvider, IOrdersReceiver, IPlaceOrderRiskManager, IPositionsReceiver, IRuntimeEngine, IStrategy, ITickReceiver, ITraderProvider, ITradingAccountsReceiver, IPlaceOrderResultReceiver, IPositionReceiver, IPositionDetailsReceiver } from "./interfaces.js";
2
+ import { ICancelOrderResultReceiver, ICancelOrderRiskManager, ICommissionRateReceiver, IErrorReceiver, IInstrumentReceiver, IInstrumentsReceiver, IMarginRateReceiver, IMarketProvider, IOrdersReceiver, IPlaceOrderRiskManager, IPositionsReceiver, IRuntimeEngine, IStrategy, ITickReceiver, ITraderProvider, ITradingAccountsReceiver, IPlaceOrderResultReceiver, IPositionReceiver, IPositionDetailsReceiver, IBarReceiver } from "./interfaces.js";
3
3
  export declare class Broker implements IRuntimeEngine {
4
4
  private readonly trader;
5
5
  private readonly market;
@@ -8,6 +8,7 @@ export declare class Broker implements IRuntimeEngine {
8
8
  private readonly strategies;
9
9
  private readonly placeOrderRiskManagers;
10
10
  private readonly cancelOrderRiskManagers;
11
+ private readonly generators;
11
12
  constructor(trader: ITraderProvider, market: IMarketProvider, errorReceiver?: IErrorReceiver);
12
13
  start(): boolean;
13
14
  stop(): void;
@@ -17,8 +18,14 @@ export declare class Broker implements IRuntimeEngine {
17
18
  addCancelOrderRiskManager(riskMgr: ICancelOrderRiskManager): void;
18
19
  subscribe(symbols: string[], receiver: ITickReceiver): void;
19
20
  unsubscribe(symbols: string[], receiver: ITickReceiver): void;
21
+ subscribeBar(symbols: string[], receiver: IBarReceiver): void;
22
+ unsubscribeBar(symbols: string[], receiver: IBarReceiver): void;
20
23
  placeOrder(strategy: IStrategy, symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver): void;
21
24
  cancelOrder(strategy: IStrategy, order: OrderData, receiver: ICancelOrderResultReceiver): void;
25
+ buyOpen(strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver): void;
26
+ buyClose(strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver): void;
27
+ sellOpen(strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver): void;
28
+ sellClose(strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver): void;
22
29
  getTradingDay(): number;
23
30
  queryCommissionRate(symbol: string, receiver: ICommissionRateReceiver): void;
24
31
  queryMarginRate(symbol: string, receiver: IMarginRateReceiver): void;
package/lib/broker.js CHANGED
@@ -11,6 +11,7 @@
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.createBroker = exports.Broker = void 0;
14
+ var bar_js_1 = require("./bar.js");
14
15
  var Broker = /** @class */ (function () {
15
16
  function Broker(trader, market, errorReceiver) {
16
17
  var _this = this;
@@ -19,6 +20,7 @@ var Broker = /** @class */ (function () {
19
20
  this.cancelOrderRiskManagers = [];
20
21
  this.trader = trader;
21
22
  this.market = market;
23
+ this.generators = new Map();
22
24
  this.marketLifecycle = {
23
25
  onOpen: function () {
24
26
  if (_this.market.hasRecorder()) {
@@ -30,10 +32,10 @@ var Broker = /** @class */ (function () {
30
32
  },
31
33
  });
32
34
  }
33
- _this.strategies.forEach(function (strategy) { return strategy.onInit(_this); });
35
+ _this.strategies.forEach(function (strategy) { return strategy.onInit(); });
34
36
  },
35
37
  onClose: function () {
36
- _this.strategies.forEach(function (strategy) { return strategy.onDestroy(_this); });
38
+ _this.strategies.forEach(function (strategy) { return strategy.onDestroy(); });
37
39
  _this.market.stopRecorder();
38
40
  },
39
41
  onError: function (error, message) {
@@ -92,6 +94,32 @@ var Broker = /** @class */ (function () {
92
94
  Broker.prototype.unsubscribe = function (symbols, receiver) {
93
95
  return this.market.unsubscribe(symbols, receiver);
94
96
  };
97
+ Broker.prototype.subscribeBar = function (symbols, receiver) {
98
+ var _this = this;
99
+ symbols.forEach(function (symbol) {
100
+ var generator = _this.generators.get(symbol);
101
+ if (!generator) {
102
+ generator = (0, bar_js_1.createBarGenerator)(symbol);
103
+ _this.generators.set(symbol, generator);
104
+ _this.subscribe([symbol], generator);
105
+ }
106
+ generator.addReceiver(receiver);
107
+ });
108
+ };
109
+ Broker.prototype.unsubscribeBar = function (symbols, receiver) {
110
+ var _this = this;
111
+ symbols.forEach(function (symbol) {
112
+ var generator = _this.generators.get(symbol);
113
+ if (!generator) {
114
+ return;
115
+ }
116
+ generator.removeReceiver(receiver);
117
+ if (!generator.isWorking) {
118
+ _this.unsubscribe([symbol], generator);
119
+ _this.generators.delete(symbol);
120
+ }
121
+ });
122
+ };
95
123
  Broker.prototype.placeOrder = function (strategy, symbol, offset, side, volume, price, flag, receiver) {
96
124
  for (var _i = 0, _a = this.placeOrderRiskManagers; _i < _a.length; _i++) {
97
125
  var placeOrderRiskManager = _a[_i];
@@ -130,6 +158,18 @@ var Broker = /** @class */ (function () {
130
158
  }
131
159
  return this.trader.cancelOrder(order, receiver);
132
160
  };
161
+ Broker.prototype.buyOpen = function (strategy, symbol, volume, price, receiver) {
162
+ return this.placeOrder(strategy, symbol, "open", "long", volume, price, "limit", receiver);
163
+ };
164
+ Broker.prototype.buyClose = function (strategy, symbol, volume, price, isToday, receiver) {
165
+ return this.placeOrder(strategy, symbol, isToday ? "close-today" : "close", "long", volume, price, "limit", receiver);
166
+ };
167
+ Broker.prototype.sellOpen = function (strategy, symbol, volume, price, receiver) {
168
+ return this.placeOrder(strategy, symbol, "open", "short", volume, price, "limit", receiver);
169
+ };
170
+ Broker.prototype.sellClose = function (strategy, symbol, volume, price, isToday, receiver) {
171
+ return this.placeOrder(strategy, symbol, isToday ? "close-today" : "close", "short", volume, price, "limit", receiver);
172
+ };
133
173
  Broker.prototype.getTradingDay = function () {
134
174
  return this.trader.getTradingDay();
135
175
  };
package/lib/broker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./typedef.js";
2
2
  export * from "./interfaces.js";
3
3
  export * from "./broker.js";
4
- export * from "./tape.js";
5
4
  export * from "./trader.js";
6
5
  export * from "./market.js";
6
+ export * from "./utils.js";
7
7
  export { CTPUserInfo } from "./provider.js";
package/lib/index.js CHANGED
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  __exportStar(require("./typedef.js"), exports);
28
28
  __exportStar(require("./interfaces.js"), exports);
29
29
  __exportStar(require("./broker.js"), exports);
30
- __exportStar(require("./tape.js"), exports);
31
30
  __exportStar(require("./trader.js"), exports);
32
31
  __exportStar(require("./market.js"), exports);
32
+ __exportStar(require("./utils.js"), exports);
33
33
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,kDAAgC;AAChC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,6CAA2B"}
package/lib/index.test.js CHANGED
@@ -70,9 +70,10 @@ var Strategy = /** @class */ (function () {
70
70
  this.symbol = "ni2505.SHFE";
71
71
  this.engine = engine;
72
72
  }
73
- Strategy.prototype.onInit = function (subscriber) {
73
+ Strategy.prototype.onInit = function () {
74
74
  var _this = this;
75
- subscriber.subscribe([this.symbol], this);
75
+ this.engine.subscribe([this.symbol], this);
76
+ this.engine.subscribeBar([this.symbol], this);
76
77
  console.log("Strategy init");
77
78
  console.log("Trading Day", this.engine.getTradingDay());
78
79
  this.engine.queryInstrument(this.symbol, {
@@ -119,7 +120,10 @@ var Strategy = /** @class */ (function () {
119
120
  console.error("Market data is not found");
120
121
  return;
121
122
  }
122
- _this.engine.placeOrder(_this, _this.symbol, "open", "long", 1, _this.lastTick.orderBook.asks.price[0], "limit", {
123
+ if (_this.lastBar) {
124
+ console.log(_this.lastBar);
125
+ }
126
+ _this.engine.buyOpen(_this, _this.symbol, 1, _this.lastTick.orderBook.asks.price[0], {
123
127
  onPlaceOrderSent: function (receiptId) {
124
128
  console.log("Open Place Order Receipt Id", receiptId);
125
129
  },
@@ -129,8 +133,9 @@ var Strategy = /** @class */ (function () {
129
133
  });
130
134
  }, 30 * 1000);
131
135
  };
132
- Strategy.prototype.onDestroy = function (unsubscriber) {
133
- unsubscriber.unsubscribe([this.symbol], this);
136
+ Strategy.prototype.onDestroy = function () {
137
+ this.engine.unsubscribeBar([this.symbol], this);
138
+ this.engine.unsubscribe([this.symbol], this);
134
139
  console.log("Strategy destroy");
135
140
  };
136
141
  Strategy.prototype.onRisk = function (type, reason) {
@@ -140,31 +145,33 @@ var Strategy = /** @class */ (function () {
140
145
  console.log("Entrust order", order);
141
146
  };
142
147
  Strategy.prototype.onTrade = function (order, trade) {
143
- console.log("Order", order, "Traded", trade);
144
- };
145
- Strategy.prototype.onFinish = function (order) {
146
148
  var _this = this;
147
- console.log("Finish Order", order);
148
- setTimeout(function () {
149
- _this.engine.queryPosition(_this.symbol, {
150
- onPosition: function (position) {
151
- if (!position || !_this.lastTick) {
152
- return;
153
- }
154
- var todayLong = position.today.long.position - position.today.long.frozen;
155
- if (todayLong > 0) {
156
- _this.engine.placeOrder(_this, _this.symbol, "close-today", "short", todayLong, _this.lastTick.orderBook.bids.price[0], "limit", {
157
- onPlaceOrderSent: function (receiptId) {
158
- console.log("Close Place Order Receipt Id", receiptId);
159
- },
160
- onPlaceOrderError: function (reason) {
161
- console.error("Close Place Order Error", reason);
162
- },
163
- });
164
- }
165
- },
166
- });
167
- }, 30 * 1000);
149
+ console.log("Order", order, "Traded", trade);
150
+ if (order.status === "filled") {
151
+ setTimeout(function () {
152
+ _this.engine.queryPosition(_this.symbol, {
153
+ onPosition: function (position) {
154
+ if (!position || !_this.lastTick) {
155
+ return;
156
+ }
157
+ var todayLong = position.today.long.position - position.today.long.frozen;
158
+ if (todayLong > 0) {
159
+ if (_this.lastBar) {
160
+ console.log(_this.lastBar);
161
+ }
162
+ _this.engine.sellClose(_this, _this.symbol, todayLong, _this.lastTick.orderBook.bids.price[0], true, {
163
+ onPlaceOrderSent: function (receiptId) {
164
+ console.log("Close Place Order Receipt Id", receiptId);
165
+ },
166
+ onPlaceOrderError: function (reason) {
167
+ console.error("Close Place Order Error", reason);
168
+ },
169
+ });
170
+ }
171
+ },
172
+ });
173
+ }, 30 * 1000);
174
+ }
168
175
  };
169
176
  Strategy.prototype.onCancel = function (order) {
170
177
  console.log("Cancel Order", order);
@@ -172,12 +179,15 @@ var Strategy = /** @class */ (function () {
172
179
  Strategy.prototype.onReject = function (order) {
173
180
  console.log("Reject Order", order);
174
181
  };
175
- Strategy.prototype.onTick = function (tick) {
176
- //const tape = hft.calcTapeData(tick, this.lastTick);
182
+ Strategy.prototype.onTick = function (tick, tape) {
177
183
  //console.log(tick);
178
184
  //console.log(tape);
179
185
  this.lastTick = tick;
180
186
  };
187
+ Strategy.prototype.onBar = function (bar) {
188
+ //console.log(bar)
189
+ this.lastBar = bar;
190
+ };
181
191
  return Strategy;
182
192
  }());
183
193
  var trader = hft.createTrader(config.FlowTdPath, config.FrontTdAddrs, config.UserInfo);
@@ -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 { CommissionRate, InstrumentData, MarginRate, OffsetType, OrderData, OrderFlag, PositionData, PositionDetail, ProductType, SideType, TickData, TradeData, TradingAccount } from "./typedef.js";
1
+ import { BarData, CommissionRate, InstrumentData, MarginRate, OffsetType, OrderData, OrderFlag, 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;
@@ -20,7 +20,6 @@ export interface ILifecycleListener extends IErrorReceiver {
20
20
  export interface IOrderReceiver {
21
21
  onEntrust: (order: OrderData) => void;
22
22
  onTrade: (order: OrderData, trade: TradeData) => void;
23
- onFinish: (order: OrderData) => void;
24
23
  onCancel: (order: OrderData) => void;
25
24
  onReject: (order: OrderData) => void;
26
25
  }
@@ -28,7 +27,7 @@ export interface IOrdersReceiver {
28
27
  onOrders: (orders: OrderData[]) => void;
29
28
  }
30
29
  export interface ITickReceiver {
31
- onTick: (tick: TickData) => void;
30
+ onTick: (tick: TickData, tape: TapeData) => void;
32
31
  }
33
32
  export interface ITickSubscriber {
34
33
  subscribe: (symbols: string[], receiver: ITickReceiver) => void;
@@ -36,9 +35,18 @@ export interface ITickSubscriber {
36
35
  export interface ITickUnsubscriber {
37
36
  unsubscribe: (symbols: string[], receiver: ITickReceiver) => void;
38
37
  }
38
+ export interface IBarReceiver {
39
+ onBar: (bar: BarData) => void;
40
+ }
41
+ export interface IBarSubscriber {
42
+ subscribeBar: (symbols: string[], receiver: IBarReceiver) => void;
43
+ }
44
+ export interface IBarUnsubscriber {
45
+ unsubscribeBar: (symbols: string[], receiver: IBarReceiver) => void;
46
+ }
39
47
  export interface IStrategy extends IRiskManagerReceiver, IOrderReceiver {
40
- onInit: (subscriber: ITickSubscriber) => void;
41
- onDestroy: (unsubscriber: ITickUnsubscriber) => void;
48
+ onInit: () => void;
49
+ onDestroy: () => void;
42
50
  }
43
51
  export interface ICommissionRateReceiver {
44
52
  onCommissionRate: (rate: CommissionRate | undefined) => void;
@@ -106,11 +114,15 @@ export interface ITraderProvider extends IProvider, IOrderEmitter, IQueryApi {
106
114
  placeOrder: (symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver) => void;
107
115
  cancelOrder: (order: OrderData, receiver: ICancelOrderResultReceiver) => void;
108
116
  }
109
- export interface IRuntimeEngine extends IQueryApi, ITickSubscriber, ITickUnsubscriber {
117
+ export interface IRuntimeEngine extends IQueryApi, ITickSubscriber, ITickUnsubscriber, IBarSubscriber, IBarUnsubscriber {
110
118
  addStrategy: (strategy: IStrategy) => void;
111
119
  removeStrategy: (strategy: IStrategy) => void;
112
120
  addPlaceOrderRiskManager: (riskMgr: IPlaceOrderRiskManager) => void;
113
121
  addCancelOrderRiskManager: (riskMgr: ICancelOrderRiskManager) => void;
114
122
  placeOrder: (strategy: IStrategy, symbol: string, offset: OffsetType, side: SideType, volume: number, price: number, flag: OrderFlag, receiver: IPlaceOrderResultReceiver) => void;
115
123
  cancelOrder: (strategy: IStrategy, order: OrderData, receiver: ICancelOrderResultReceiver) => void;
124
+ buyOpen: (strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver) => void;
125
+ buyClose: (strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver) => void;
126
+ sellOpen: (strategy: IStrategy, symbol: string, volume: number, price: number, receiver: IPlaceOrderResultReceiver) => void;
127
+ sellClose: (strategy: IStrategy, symbol: string, volume: number, price: number, isToday: boolean, receiver: IPlaceOrderResultReceiver) => void;
116
128
  }
package/lib/market.d.ts CHANGED
@@ -5,8 +5,10 @@ export declare class Market extends CTPProvider implements IMarketProvider {
5
5
  private marketApi?;
6
6
  private recorder?;
7
7
  private recorderSymbols?;
8
+ private tradingDay;
8
9
  private readonly recordings;
9
10
  private readonly symbols;
11
+ private readonly lastTicks;
10
12
  private readonly subscribers;
11
13
  constructor(flowMdPath: string, frontMdAddrs: string | string[], userInfo: CTPUserInfo);
12
14
  hasRecorder(): boolean;
package/lib/market.js CHANGED
@@ -40,14 +40,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.createMarket = exports.Market = void 0;
41
41
  var napi_ctp_1 = __importDefault(require("napi-ctp"));
42
42
  var provider_js_1 = require("./provider.js");
43
+ var tape_js_1 = require("./tape.js");
44
+ var utils_js_1 = require("./utils.js");
43
45
  var isValidPrice = function (x) { return x !== Number.MAX_VALUE && x !== 0; };
44
46
  var isValidVolume = function (x) { return x !== Number.MAX_VALUE && x !== 0; };
45
47
  var Market = /** @class */ (function (_super) {
46
48
  __extends(Market, _super);
47
49
  function Market(flowMdPath, frontMdAddrs, userInfo) {
48
50
  var _this = _super.call(this, flowMdPath, frontMdAddrs, userInfo) || this;
51
+ _this.tradingDay = 0;
49
52
  _this.recordings = new Set();
50
53
  _this.symbols = new Map();
54
+ _this.lastTicks = new Map();
51
55
  _this.subscribers = new Map();
52
56
  return _this;
53
57
  }
@@ -72,6 +76,11 @@ var Market = /** @class */ (function (_super) {
72
76
  if (_this._isErrorResp(lifecycle, options, "login-error")) {
73
77
  return;
74
78
  }
79
+ var tradingDay = parseInt(_this.marketApi.getTradingDay());
80
+ if (_this.tradingDay !== tradingDay) {
81
+ _this.lastTicks.clear();
82
+ _this.tradingDay = tradingDay;
83
+ }
75
84
  var instrumentIds = new Set(__spreadArray(__spreadArray([], Array.from(_this.recordings), true), Object.keys(_this.subscribers), true));
76
85
  if (instrumentIds.size > 0) {
77
86
  _this._withRetry(function () {
@@ -92,10 +101,6 @@ var Market = /** @class */ (function (_super) {
92
101
  if (!symbol) {
93
102
  return;
94
103
  }
95
- var receivers = _this.subscribers.get(instrumentId);
96
- if (!receivers || receivers.length === 0) {
97
- return;
98
- }
99
104
  var orderBook = {
100
105
  asks: { price: [], volume: [] },
101
106
  bids: { price: [], volume: [] },
@@ -175,7 +180,13 @@ var Market = /** @class */ (function (_super) {
175
180
  }),
176
181
  orderBook: Object.freeze(orderBook),
177
182
  });
178
- receivers.forEach(function (receiver) { return receiver.onTick(tick); });
183
+ var receivers = _this.subscribers.get(instrumentId);
184
+ if (receivers && receivers.length > 0) {
185
+ var lastTick = _this.lastTicks.get(instrumentId);
186
+ var tape_1 = (0, tape_js_1.calcTapeData)(tick, lastTick);
187
+ receivers.forEach(function (receiver) { return receiver.onTick(tick, tape_1); });
188
+ }
189
+ _this.lastTicks.set(instrumentId, tick);
179
190
  });
180
191
  return true;
181
192
  };
@@ -195,7 +206,7 @@ var Market = /** @class */ (function (_super) {
195
206
  var symbols = this.recorderSymbols(instrument);
196
207
  var instrumentIds = new Set();
197
208
  symbols.forEach(function (symbol) {
198
- var instrumentId = _this._parseSymbol(symbol)[0];
209
+ var instrumentId = (0, utils_js_1.parseSymbol)(symbol)[0];
199
210
  if (_this.recordings.has(instrumentId)) {
200
211
  return;
201
212
  }
@@ -230,7 +241,7 @@ var Market = /** @class */ (function (_super) {
230
241
  var _this = this;
231
242
  var instrumentIds = new Set();
232
243
  symbols.forEach(function (symbol) {
233
- var instrumentId = _this._parseSymbol(symbol)[0];
244
+ var instrumentId = (0, utils_js_1.parseSymbol)(symbol)[0];
234
245
  var receivers = _this.subscribers.get(instrumentId);
235
246
  if (receivers) {
236
247
  if (!receivers.includes(receiver)) {
@@ -253,7 +264,7 @@ var Market = /** @class */ (function (_super) {
253
264
  var _this = this;
254
265
  var instrumentIds = new Set();
255
266
  symbols.forEach(function (symbol) {
256
- var instrumentId = _this._parseSymbol(symbol)[0];
267
+ var instrumentId = (0, utils_js_1.parseSymbol)(symbol)[0];
257
268
  var receivers = _this.subscribers.get(instrumentId);
258
269
  if (!receivers) {
259
270
  return;