const grpc = require("@grpc/grpc-js");
const protoLoader = require("@grpc/proto-loader");
const packageDefinition =
protoLoader.loadSync(
"trading.proto",
);
const proto =
grpc.loadPackageDefinition(
packageDefinition,
);
const client =
new proto.trading.TradingService(
"stream.anthid.com:443",
grpc.credentials.createSsl(),
);
const metadata =
new grpc.Metadata();
metadata.add(
"x-api-key",
"YOUR_API_KEY",
);
const stream =
client.SubscribeEvents(
{
trading_account_id:
"YOUR_TRADING_ACCOUNT_ID",
subscriptions: [
"EVENT_TYPE_BROKER_ORDER",
"EVENT_TYPE_BROKER_POSITION",
],
},
metadata,
);
stream.on("data", (event) => {
if (event.heartbeat) {
console.log("heartbeat");
} else if (event.status) {
console.log(
"status:",
event.status.message,
);
} else if (event.error) {
console.log(
"error:",
event.error.message,
);
} else if (event.brokerOrder) {
console.log(
"order:",
event.brokerOrder,
);
} else if (event.brokerPosition) {
console.log(
"position:",
event.brokerPosition,
);
}
});
stream.on("error", (error) => {
console.error(error);
});
stream.on("end", () => {
console.log(
"stream disconnected",
);
});