-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathindex.html
More file actions
216 lines (159 loc) · 22 KB
/
index.html
File metadata and controls
216 lines (159 loc) · 22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
<script src="scripts/nav.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav >
<input type="text" id="nav-search" placeholder="Search" />
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AccountSummary.html">AccountSummary</a><ul class='methods'><li data-type='method'><a href="AccountSummary.html#.unserialize">unserialize</a></li><li data-type='method'><a href="AccountSummary.html#.validate">validate</a></li></ul></li><li><a href="Alert.html">Alert</a><ul class='methods'><li data-type='method'><a href="Alert.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Alert.html#.validate">validate</a></li></ul></li><li><a href="AuthPermission.html">AuthPermission</a><ul class='methods'><li data-type='method'><a href="AuthPermission.html#.unserialize">unserialize</a></li><li data-type='method'><a href="AuthPermission.html#.validate">validate</a></li></ul></li><li><a href="BalanceInfo.html">BalanceInfo</a><ul class='methods'><li data-type='method'><a href="BalanceInfo.html#.unserialize">unserialize</a></li><li data-type='method'><a href="BalanceInfo.html#.validate">validate</a></li></ul></li><li><a href="Candle.html">Candle</a><ul class='methods'><li data-type='method'><a href="Candle.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Candle.html#.validate">validate</a></li></ul></li><li><a href="ChangeLog.html">ChangeLog</a><ul class='methods'><li data-type='method'><a href="ChangeLog.html#.unserialize">unserialize</a></li><li data-type='method'><a href="ChangeLog.html#.validate">validate</a></li></ul></li><li><a href="CoreSettings.html">CoreSettings</a><ul class='methods'><li data-type='method'><a href="CoreSettings.html#.unserialize">unserialize</a></li><li data-type='method'><a href="CoreSettings.html#.validate">validate</a></li></ul></li><li><a href="Currency.html">Currency</a><ul class='methods'><li data-type='method'><a href="Currency.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Currency.html#.validate">validate</a></li></ul></li><li><a href="FundingCredit.html">FundingCredit</a><ul class='methods'><li data-type='method'><a href="FundingCredit.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingCredit.html#.validate">validate</a></li></ul></li><li><a href="FundingInfo.html">FundingInfo</a><ul class='methods'><li data-type='method'><a href="FundingInfo.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingInfo.html#.validate">validate</a></li><li data-type='method'><a href="FundingInfo.html#serialize">serialize</a></li></ul></li><li><a href="FundingLoan.html">FundingLoan</a><ul class='methods'><li data-type='method'><a href="FundingLoan.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingLoan.html#.validate">validate</a></li></ul></li><li><a href="FundingOffer.html">FundingOffer</a><ul class='methods'><li data-type='method'><a href="FundingOffer.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingOffer.html#.validate">validate</a></li><li data-type='method'><a href="FundingOffer.html#cancel">cancel</a></li><li data-type='method'><a href="FundingOffer.html#close">close</a></li><li data-type='method'><a href="FundingOffer.html#submit">submit</a></li><li data-type='method'><a href="FundingOffer.html#toNewOfferPacket">toNewOfferPacket</a></li><li data-type='method'><a href="FundingOffer.html#toString">toString</a></li></ul></li><li><a href="FundingTicker.html">FundingTicker</a><ul class='methods'><li data-type='method'><a href="FundingTicker.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingTicker.html#.validate">validate</a></li><li data-type='method'><a href="FundingTicker.html#base">base</a></li><li data-type='method'><a href="FundingTicker.html#quote">quote</a></li></ul></li><li><a href="FundingTickerHist.html">FundingTickerHist</a><ul class='methods'><li data-type='method'><a href="FundingTickerHist.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingTickerHist.html#.validate">validate</a></li><li data-type='method'><a href="FundingTickerHist.html#base">base</a></li><li data-type='method'><a href="FundingTickerHist.html#quote">quote</a></li></ul></li><li><a href="FundingTrade.html">FundingTrade</a><ul class='methods'><li data-type='method'><a href="FundingTrade.html#.unserialize">unserialize</a></li><li data-type='method'><a href="FundingTrade.html#.validate">validate</a></li><li data-type='method'><a href="FundingTrade.html#toString">toString</a></li></ul></li><li><a href="Invoice.html">Invoice</a><ul class='methods'><li data-type='method'><a href="Invoice.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Invoice.html#.validate">validate</a></li><li data-type='method'><a href="Invoice.html#toString">toString</a></li></ul></li><li><a href="LedgerEntry.html">LedgerEntry</a><ul class='methods'><li data-type='method'><a href="LedgerEntry.html#.unserialize">unserialize</a></li><li data-type='method'><a href="LedgerEntry.html#.validate">validate</a></li></ul></li><li><a href="Liquidations.html">Liquidations</a><ul class='methods'><li data-type='method'><a href="Liquidations.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Liquidations.html#.validate">validate</a></li><li data-type='method'><a href="Liquidations.html#toString">toString</a></li></ul></li><li><a href="Login.html">Login</a><ul class='methods'><li data-type='method'><a href="Login.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Login.html#.validate">validate</a></li></ul></li><li><a href="MarginInfo.html">MarginInfo</a><ul class='methods'><li data-type='method'><a href="MarginInfo.html#.unserialize">unserialize</a></li><li data-type='method'><a href="MarginInfo.html#.validate">validate</a></li><li data-type='method'><a href="MarginInfo.html#serialize">serialize</a></li></ul></li><li><a href="Model.html">Model</a><ul class='methods'><li data-type='method'><a href="Model.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Model.html#.validate">validate</a></li><li data-type='method'><a href="Model.html#serialize">serialize</a></li><li data-type='method'><a href="Model.html#toJS">toJS</a></li></ul></li><li><a href="Movement.html">Movement</a><ul class='methods'><li data-type='method'><a href="Movement.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Movement.html#.validate">validate</a></li></ul></li><li><a href="Notification.html">Notification</a><ul class='methods'><li data-type='method'><a href="Notification.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Notification.html#.validate">validate</a></li></ul></li><li><a href="Order.html">Order</a><ul class='methods'><li data-type='method'><a href="Order.html#.getBaseCurrency">getBaseCurrency</a></li><li data-type='method'><a href="Order.html#.getQuoteCurrency">getQuoteCurrency</a></li><li data-type='method'><a href="Order.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Order.html#.validate">validate</a></li><li data-type='method'><a href="Order.html#cancel">cancel</a></li><li data-type='method'><a href="Order.html#cbGID">cbGID</a></li><li data-type='method'><a href="Order.html#getBaseCurrency">getBaseCurrency</a></li><li data-type='method'><a href="Order.html#getLastFillAmount">getLastFillAmount</a></li><li data-type='method'><a href="Order.html#getNotionalValue">getNotionalValue</a></li><li data-type='method'><a href="Order.html#getQuoteCurrency">getQuoteCurrency</a></li><li data-type='method'><a href="Order.html#includesVariableRates">includesVariableRates</a></li><li data-type='method'><a href="Order.html#isHidden">isHidden</a></li><li data-type='method'><a href="Order.html#isOCO">isOCO</a></li><li data-type='method'><a href="Order.html#isPartiallyFilled">isPartiallyFilled</a></li><li data-type='method'><a href="Order.html#isPositionClose">isPositionClose</a></li><li data-type='method'><a href="Order.html#isPostOnly">isPostOnly</a></li><li data-type='method'><a href="Order.html#isReduceOnly">isReduceOnly</a></li><li data-type='method'><a href="Order.html#modifyFlag">modifyFlag</a></li><li data-type='method'><a href="Order.html#recreate">recreate</a></li><li data-type='method'><a href="Order.html#registerListeners">registerListeners</a></li><li data-type='method'><a href="Order.html#removeListeners">removeListeners</a></li><li data-type='method'><a href="Order.html#resetFilledAmount">resetFilledAmount</a></li><li data-type='method'><a href="Order.html#setHidden">setHidden</a></li><li data-type='method'><a href="Order.html#setNoVariableRates">setNoVariableRates</a></li><li data-type='method'><a href="Order.html#setOCO">setOCO</a></li><li data-type='method'><a href="Order.html#setPositionClose">setPositionClose</a></li><li data-type='method'><a href="Order.html#setPostOnly">setPostOnly</a></li><li data-type='method'><a href="Order.html#setReduceOnly">setReduceOnly</a></li><li data-type='method'><a href="Order.html#submit">submit</a></li><li data-type='method'><a href="Order.html#toNewOrderPacket">toNewOrderPacket</a></li><li data-type='method'><a href="Order.html#toPreview">toPreview</a></li><li data-type='method'><a href="Order.html#toString">toString</a></li><li data-type='method'><a href="Order.html#update">update</a></li><li data-type='method'><a href="Order.html#updateFrom">updateFrom</a></li></ul></li><li><a href="OrderBook.html">OrderBook</a><ul class='methods'><li data-type='method'><a href="OrderBook.html#.checksumArr">checksumArr</a></li><li data-type='method'><a href="OrderBook.html#.unserialize">unserialize</a></li><li data-type='method'><a href="OrderBook.html#.updateArrayOBWith">updateArrayOBWith</a></li><li data-type='method'><a href="OrderBook.html#askAmount">askAmount</a></li><li data-type='method'><a href="OrderBook.html#bidAmount">bidAmount</a></li><li data-type='method'><a href="OrderBook.html#checksum">checksum</a></li><li data-type='method'><a href="OrderBook.html#getEntry">getEntry</a></li><li data-type='method'><a href="OrderBook.html#midPrice">midPrice</a></li><li data-type='method'><a href="OrderBook.html#spread">spread</a></li><li data-type='method'><a href="OrderBook.html#toJS">toJS</a></li><li data-type='method'><a href="OrderBook.html#topAsk">topAsk</a></li><li data-type='method'><a href="OrderBook.html#topAskLevel">topAskLevel</a></li><li data-type='method'><a href="OrderBook.html#topBid">topBid</a></li><li data-type='method'><a href="OrderBook.html#topBidLevel">topBidLevel</a></li><li data-type='method'><a href="OrderBook.html#updateWith">updateWith</a></li><li data-type='method'><a href="OrderBook.html#volBPSMid">volBPSMid</a></li></ul></li><li><a href="Position.html">Position</a><ul class='methods'><li data-type='method'><a href="Position.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Position.html#.validate">validate</a></li><li data-type='method'><a href="Position.html#claim">claim</a></li><li data-type='method'><a href="Position.html#close">close</a></li><li data-type='method'><a href="Position.html#orderToClose">orderToClose</a></li><li data-type='method'><a href="Position.html#toString">toString</a></li></ul></li><li><a href="PublicPulseProfile.html">PublicPulseProfile</a><ul class='methods'><li data-type='method'><a href="PublicPulseProfile.html#.unserialize">unserialize</a></li><li data-type='method'><a href="PublicPulseProfile.html#.validate">validate</a></li><li data-type='method'><a href="PublicPulseProfile.html#toString">toString</a></li></ul></li><li><a href="PublicTrade.html">PublicTrade</a><ul class='methods'><li data-type='method'><a href="PublicTrade.html#.unserialize">unserialize</a></li><li data-type='method'><a href="PublicTrade.html#.validate">validate</a></li><li data-type='method'><a href="PublicTrade.html#toString">toString</a></li></ul></li><li><a href="PulseMessage.html">PulseMessage</a><ul class='methods'><li data-type='method'><a href="PulseMessage.html#.unserialize">unserialize</a></li><li data-type='method'><a href="PulseMessage.html#.validate">validate</a></li><li data-type='method'><a href="PulseMessage.html#serialize">serialize</a></li><li data-type='method'><a href="PulseMessage.html#toString">toString</a></li></ul></li><li><a href="StatusMessagesDeriv.html">StatusMessagesDeriv</a><ul class='methods'><li data-type='method'><a href="StatusMessagesDeriv.html#.unserialize">unserialize</a></li><li data-type='method'><a href="StatusMessagesDeriv.html#.validate">validate</a></li></ul></li><li><a href="SymbolDetails.html">SymbolDetails</a><ul class='methods'><li data-type='method'><a href="SymbolDetails.html#.unserialize">unserialize</a></li><li data-type='method'><a href="SymbolDetails.html#.validate">validate</a></li></ul></li><li><a href="Trade.html">Trade</a><ul class='methods'><li data-type='method'><a href="Trade.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Trade.html#.validate">validate</a></li><li data-type='method'><a href="Trade.html#toString">toString</a></li></ul></li><li><a href="TradingTicker.html">TradingTicker</a><ul class='methods'><li data-type='method'><a href="TradingTicker.html#.unserialize">unserialize</a></li><li data-type='method'><a href="TradingTicker.html#.validate">validate</a></li><li data-type='method'><a href="TradingTicker.html#base">base</a></li><li data-type='method'><a href="TradingTicker.html#quote">quote</a></li></ul></li><li><a href="TradingTickerHist.html">TradingTickerHist</a><ul class='methods'><li data-type='method'><a href="TradingTickerHist.html#.unserialize">unserialize</a></li><li data-type='method'><a href="TradingTickerHist.html#.validate">validate</a></li><li data-type='method'><a href="TradingTickerHist.html#base">base</a></li><li data-type='method'><a href="TradingTickerHist.html#quote">quote</a></li></ul></li><li><a href="TransactionFee.html">TransactionFee</a><ul class='methods'><li data-type='method'><a href="TransactionFee.html#.unserialize">unserialize</a></li><li data-type='method'><a href="TransactionFee.html#.validate">validate</a></li></ul></li><li><a href="UserInfo.html">UserInfo</a><ul class='methods'><li data-type='method'><a href="UserInfo.html#.unserialize">unserialize</a></li><li data-type='method'><a href="UserInfo.html#.validate">validate</a></li></ul></li><li><a href="Wallet.html">Wallet</a><ul class='methods'><li data-type='method'><a href="Wallet.html#.unserialize">unserialize</a></li><li data-type='method'><a href="Wallet.html#.validate">validate</a></li></ul></li><li><a href="WalletHist.html">WalletHist</a><ul class='methods'><li data-type='method'><a href="WalletHist.html#.unserialize">unserialize</a></li><li data-type='method'><a href="WalletHist.html#.validate">validate</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#assignFromCollectionOrInstance">assignFromCollectionOrInstance</a></li></ul>
</nav>
<div id="main">
<section class="package">
<h3> </h3>
</section>
<section class="readme usertext">
<article><h1>Bitfinex Data Models for Node.JS</h1>
<p>This repo contains model classes for working with the data structures returned
by the Bitfinex REST & WebSocket APIs. The models can all be initialized with
an array-format payload as returned by an API call, and can be unserialized
back to the array format when needed.</p>
<p>Some models, such as <a href="Order.html"><code>Order</code></a> and <a href="OrderBook.html"><code>OrderBook</code></a> provide higher level
methods which operate on the underlying data sets.</p>
<p>All models provide <code>serialize()</code> and <code>unserialize()</code> methods, which convert
to/from array-format payloads respectively. All model constructors can take
either array-format payloads, or objects/other model instances. A helper
<code>toJS()</code> method is also provided for converting models to plain JS objects
(POJOs).</p>
<h3>Features</h3>
<ul>
<li>Convert between array, object, and class representations of API data</li>
<li>Class methods for operating on model data where applicable (i.e. <code>OrderBook</code>)</li>
</ul>
<p>Classes for the following Bitfinex API data types:</p>
<ul>
<li><a href="Alert.html"><code>Alert</code></a></li>
<li><a href="BalanceInfo.html"><code>BalanceInfo</code></a></li>
<li><a href="Candle.html"><code>Candle</code></a></li>
<li><a href="Currency.html"><code>Currency</code></a></li>
<li><a href="FundingCredit.html"><code>FundingCredit</code></a></li>
<li><a href="FundingInfo.html"><code>FundingInfo</code></a></li>
<li><a href="FundingLoan.html"><code>FundingLoan</code></a></li>
<li><a href="FundingOffer.html"><code>FundingOffer</code></a></li>
<li><a href="FundingTickerHist.html"><code>FundingTickerHist</code></a></li>
<li><a href="FundingTicker.html"><code>FundingTicker</code></a></li>
<li><a href="FundingTrade.html"><code>FundingTrade</code></a></li>
<li><a href="LedgerEntry.html"><code>LedgerEntry</code></a></li>
<li><a href="Liquidations.html"><code>Liquidations</code></a></li>
<li><a href="MarginInfo.html"><code>MarginInfo</code></a></li>
<li><a href="Movement.html"><code>Movement</code></a></li>
<li><a href="Notification.html"><code>Notification</code></a></li>
<li><a href="OrderBook.html"><code>OrderBook</code></a></li>
<li><a href="Order.html"><code>Order</code></a></li>
<li><a href="Position.html"><code>Position</code></a></li>
<li><a href="PublicTrade.html"><code>PublicTrade</code></a></li>
<li><a href="PulseMessage.html"><code>PulseMessage</code></a></li>
<li><a href="StatusMessagesDeriv.html"><code>StatusMessagesDeriv</code></a></li>
<li><a href="Trade.html"><code>Trade</code></a></li>
<li><a href="TradingTicker.html"><code>TradingTicker</code></a></li>
<li><a href="TradingTickerHist.html"><code>TradingTickerHist</code></a></li>
<li><a href="UserInfo.html"><code>UserInfo</code></a></li>
<li><a href="Wallet.html"><code>Wallet</code></a></li>
<li><a href="WalletHist.html"><code>WalletHist</code></a></li>
<li><a href="Currency.html"><code>Currency</code></a></li>
<li><a href="SymbolDetails.html"><code>SymbolDetails</code></a></li>
<li><a href="TransactionFee.html"><code>TransactionFee</code></a></li>
<li><a href="AccountSummary.html"><code>AccountSummary</code></a></li>
<li><a href="AuthPermission.html"><code>AuthPermission</code></a></li>
</ul>
<h3>Installation</h3>
<pre class="prettyprint source lang-js"><code>npm i --save bfx-api-node-models
</code></pre>
<h3>Quickstart</h3>
<pre class="prettyprint source lang-js"><code>const { Order } = require('bfx-api-node-models')
const o = new Order({
cid: Date.now(),
symbol: 'tBTCUSD',
price: 7000.0,
amount: -0.02,
type: Order.type.EXCHANGE_LIMIT
})
// Generate an API-compatible order creation packet for later submit
console.log(o.toNewOrderPacket())
</code></pre>
<h3>Examples</h3>
<p>The order model provides helper methods for order submission, updates, and cancellation. These methods are compatible with version 2.0.0 of <code>bitfinex-api-node</code>, and return promises which resolve upon receival of the relevant success/error notifications.</p>
<p>Orders are matched with their API packets by one/all of <code>id</code>, <code>gid</code>, and <code>cid</code>.</p>
<p>Example usage:</p>
<pre class="prettyprint source lang-js"><code>const { Order } = require('bfx-api-node-models')
const ws = ... // setup WSv2 instance for order updates/submission
// Build new order
const o = new Order({
cid: Date.now(),
symbol: 'tBTCUSD',
price: 7000.0,
amount: -0.02,
type: Order.type.EXCHANGE_LIMIT
}, ws) // note WSv2 client passed in here
let closed = false
// Enable automatic updates
o.registerListeners()
o.on('update', () => {
debug('order updated: %j', o.serialize())
})
o.on('close', () => {
debug('order closed: %s', o.status)
closed = true
})
debug('submitting order %d', o.cid)
o.submit().then(() => {
debug('got submit confirmation for order %d [%d]', o.cid, o.id)
}).catch((err) => {
debug('failed to submit order: %s', err.message)
})
</code></pre>
<p>The order book model constructor takes either entire book snapshots as returned by the WSv2 API, or individual update packets with single bids/asks. Once constructed, order books may be updated either with complete snapshots via <code>updateFromSnapshot(snapshot)</code> or individual update packets via <code>updateWidth(entry)</code>.</p>
<p>Static helpers are also provided for working with array-format order books, in the form of <code>updateArrayOBWith(ob, entry, raw)</code>, <code>arrayOBMidPrice(ob, raw)</code>, and <code>checksumArr(ob, raw)</code>.</p>
<p>Checksums may be calculated for normal books via <code>checksum()</code>, for comparison with the checksums reported by the WSv2 API.</p>
<p>Example usage:</p>
<pre class="prettyprint source lang-js"><code>const ob = new OrderBook([
[140, 1, 10],
[145, 1, 10],
[148, 1, 10],
[149, 1, 10],
[151, 1, -10],
[152, 1, -10],
[158, 1, -10],
[160, 1, -10]
])
ob.updateWith([145, 3, 15]) // update bid
ob.updateWith([158, 3, -15]) // update ask
console.log(ob.serialize())
</code></pre></article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a> on Thu Oct 28 2021 16:31:01 GMT+0200 (Central European Summer Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>
<script src="scripts/search.js" defer></script>
</body>
</html>