-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathtrade.js.html
More file actions
182 lines (143 loc) · 19 KB
/
trade.js.html
File metadata and controls
182 lines (143 loc) · 19 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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>trade.js - 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">
<h1 class="page-title">trade.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>'use strict'
const _isUndefined = require('lodash/isUndefined')
const _isFinite = require('lodash/isFinite')
const _flatten = require('lodash/flatten')
const _compact = require('lodash/compact')
const numberValidator = require('./validators/number')
const dateValidator = require('./validators/date')
const amountValidator = require('./validators/amount')
const currencyValidator = require('./validators/currency')
const stringValidator = require('./validators/string')
const priceValidator = require('./validators/price')
const boolValidator = require('./validators/bool')
const symbolValidator = require('./validators/symbol')
const Order = require('./order')
const Model = require('./model')
const boolFields = ['maker']
const fields = {
id: 0,
symbol: 1,
mtsCreate: 2,
orderID: 3,
execAmount: 4,
execPrice: 5,
orderType: 6,
orderPrice: 7,
maker: 8,
fee: 9,
feeCurrency: 10
}
/**
* Private Trade model
*/
class Trade extends Model {
/**
* @param {object|Array} data - trade data
* @param {number} data.id - id
* @param {string} data.symbol - symbol
* @param {number} data.mtsCreate - creation timestamp
* @param {number} data.orderID - order ID
* @param {string} data.execAmount - executed amount
* @param {string} data.execPrice - execution price
* @param {string} data.orderType - order type
* @param {string} data.orderPrice - order price
* @param {number|boolean} data.maker - maker flag
* @param {string} data.fee - fee amount
* @param {string} data.feeCurrency - fee currency
*/
constructor (data = {}) {
super({ data, fields, boolFields })
}
/**
* @param {object[]|object|Array[]|Array} data - data to convert to POJO
* @returns {object} pojo
*/
static unserialize (data) {
return super.unserialize({ data, fields, boolFields })
}
/**
* @returns {string} str
*/
toString () {
const {
id, symbol, mtsCreate, execAmount, execPrice, maker, fee, feeCurrency
} = this
return _compact(_flatten([
`(${id})`,
symbol,
new Date(mtsCreate).toLocaleString(),
[execAmount, '@', execPrice],
(!_isUndefined(maker)) && maker ? 'maker' : 'taker',
_isFinite(fee) && [fee, feeCurrency]
])).join(' ')
}
/**
* Validates a given trade instance
*
* @param {object[]|object|PublicTrade[]|PublicTrade|Array} data - instance to validate
* @returns {string} error - null if instance is valid
*/
static validate (data) {
return super.validate({
data,
fields,
validators: {
id: numberValidator,
symbol: symbolValidator,
mtsCreate: dateValidator,
orderID: stringValidator,
execAmount: amountValidator,
execPrice: priceValidator,
orderType: v => stringValidator(v, Object.values(Order.type)),
orderPrice: priceValidator,
maker: boolValidator,
fee: numberValidator,
feeCurrency: currencyValidator
}
})
}
}
module.exports = Trade
</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>