45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
const Kraken = require('kraken-api')
|
|
const common = require('../../common/kraken')
|
|
|
|
var PAIRS = common.PAIRS
|
|
|
|
module.exports = {buy, sell}
|
|
|
|
function buy (account, cryptoAtoms, fiatCode, cryptoCode) {
|
|
return trade(account, 'buy', cryptoAtoms, fiatCode, cryptoCode)
|
|
}
|
|
|
|
function sell (account, cryptoAtoms, fiatCode, cryptoCode) {
|
|
return trade(account, 'sell', cryptoAtoms, fiatCode, cryptoCode)
|
|
}
|
|
|
|
function trade (account, type, cryptoAtoms, fiatCode, cryptoCode) {
|
|
const kraken = new Kraken(account.apiKey, account.privateKey)
|
|
const amount = common.toUnit(cryptoAtoms, cryptoCode)
|
|
|
|
// if (amount.lte('0.01')) {
|
|
// const err = new Error('Order size too small')
|
|
// err.name = 'orderTooSmall'
|
|
// return Promise.reject(err)
|
|
// }
|
|
|
|
const amountStr = amount.toFixed(6)
|
|
const pair = PAIRS[cryptoCode][fiatCode]
|
|
|
|
var orderInfo = {
|
|
pair: pair,
|
|
type: type,
|
|
ordertype: 'market',
|
|
volume: amountStr,
|
|
expiretm: '+60'
|
|
}
|
|
|
|
kraken.api('AddOrder', orderInfo, function (error, response) {
|
|
if (error) {
|
|
// TODO: handle: EOrder:Order minimum not met (volume too low)
|
|
return Promise.reject(error)
|
|
} else {
|
|
return Promise.resolve()
|
|
}
|
|
})
|
|
}
|