Fugle Trade
FugleTrade API SDK for Node.js
Installation
$ npm install --save @fugle/trade
Importing
const { FugleTrade, Order } = require('@fugle/trade');
import { FugleTrade, Order } from '@fugle/trade';
Quick Start
import { FugleTrade, Order } from '@fugle/trade';
const fugle = new FugleTrade({ configPath: '/path/to/config.ini' });
fugle.login().then(() => {
fugle.streamer.connect();
fugle.streamer.on('connect', () => {
console.log('streamer connected');
const order = new Order({
buySell: Order.Side.Buy,
price: 25.00,
stockNo: '2884',
quantity: 1,
apCode: Order.ApCode.Common,
priceFlag: Order.PriceFlag.Limit,
bsFlag: Order.BsFlag.ROD,
trade: Order.Trade.Cash,
});
fugle.placeOrder(order);
});
fugle.streamer.on('disconnect', () => {
console.log('streamer disconnected');
});
fugle.streamer.on('order', (data) => {
console.log('order confirmation:');
console.log(data);
});
fugle.streamer.on('trade', (data) => {
console.log('execution report:');
console.log(data);
});
});
Usage
Make sure you have applied to use Fugle trading API, downloaded the configuration file and certificate to your local machine.
Creating a client
First, create a FugleTrade
client with configPath
option:
const fugle = new FugleTrade({ configPath: '/path/to/config.ini' });
Logining to server
After creating the client, you need to log in to the remote server to obtain a valid api token:
await fugle.login();
When you log in for the first time, you need to set your account password and certificate password:
? Enter esun account password ********
? Enter cert password ********
Once logged in, you can start placing orders and viewing account information:
const orders = await fugle.getOrders();
const transactions = await fugle.getTransactions({ duration: '3m' });
const inventories = await fugle.getInventories();
const settlements = await fugle.getSettlements();
const balance = await fugle.getBalance();
const tradeStatus = await fugle.getTradeStatus();
const marketStatus = await fugle.getMarketStatus();
When you want to log in with another account, or need to reset your certificate password, please log out first:
await fugle.logout();
Placing an order
In order to place an order, you need to import Order
from @fugle/trade
.
import { Order } from '@fugle/trade';
Then, create an Order
instance that represents the order to place:
const order = new Order({
buySell: Order.Side.Buy,
price: 25.00,
stockNo: '2884',
quantity: 3,
apCode: Order.ApCode.Common,
priceFlag: Order.PriceFlag.Limit,
bsFlag: Order.BsFlag.ROD,
trade: Order.Trade.Cash,
});
await fugle.placeOrder(order);
See /doc/fugle-trade.md
for details on available options.
Replacing or canceling the order
If you want to replace or cancel an order, you need to get your all existing orders first.
const orders = await fugle.getOrders();
After that, you can choose one of the orders to replace or cancel it.
const [ order, ...others ] = orders;
await fugle.replacePrice(order, 24.5);
await fugle.replaceQuantity(order, 1);
await fugle.cancelOrder(order);
Connecting to streamer
Streamer is an application that serves streaming data to clients of Fugle. If you want to receive order confirmation or execution report in real time, you need to connect the streamer.
Make sure you are logged in, then connect to the streamer:
fugle.streamer.connect();
The fugle.streamer
inherits from EventEmitter
that lets you register event listeners to listen for events:
fugle.streamer.on('connect', () => {
});
fugle.streamer.on('disconnect', () => {
});
fugle.streamer.on('order', (data) => {
});
fugle.streamer.on('trade', (data) => {
});
fugle.streamer.on('message', (data) => {
});
fugle.streamer.on('error', (err) => {
});
If you want to disconnect the streamer, just inovke:
fugle.streamer.disconnect();
Documentation
See /doc/fugle-trade.md
for Node.js-like documentation of @fugle/trade
classes.
License
MIT