Add market buy option

This commit is contained in:
Dennis Reimann
2021-03-02 19:26:31 +01:00
parent e50c80cdbf
commit 4517af870a
4 changed files with 12 additions and 4 deletions

View File

@@ -33,6 +33,7 @@ KRAKEN_API_KEY="apiKeyFromTheKrakenSettings"
KRAKEN_API_SECRET="privateKeyFromTheKrakenSettings" KRAKEN_API_SECRET="privateKeyFromTheKrakenSettings"
# used for buying # used for buying
KRAKEN_ORDER_TYPE="market" # "limit" (default) or "market"
KRAKEN_API_FIAT="USD" # the governmental shitcoin you are selling KRAKEN_API_FIAT="USD" # the governmental shitcoin you are selling
KRAKEN_BUY_AMOUNT=21 # fiat amount you trade for the future of money KRAKEN_BUY_AMOUNT=21 # fiat amount you trade for the future of money
@@ -138,6 +139,7 @@ set -e
export KRAKEN_API_KEY="apiKeyFromTheKrakenSettings" export KRAKEN_API_KEY="apiKeyFromTheKrakenSettings"
export KRAKEN_API_SECRET="privateKeyFromTheKrakenSettings" export KRAKEN_API_SECRET="privateKeyFromTheKrakenSettings"
export KRAKEN_ORDER_TYPE="market"
export KRAKEN_API_FIAT="USD" export KRAKEN_API_FIAT="USD"
export KRAKEN_BUY_AMOUNT=21 export KRAKEN_BUY_AMOUNT=21
export KRAKEN_MAX_REL_FEE=0.5 export KRAKEN_MAX_REL_FEE=0.5

View File

@@ -1,5 +1,6 @@
module.exports = async (kraken, validate, getEnv) => { module.exports = async (kraken, validate, { getEnv, getEnvOpt }) => {
const [fiat, amount] = getEnv('KRAKEN_API_FIAT', 'KRAKEN_BUY_AMOUNT') const [fiat, amount] = getEnv('KRAKEN_API_FIAT', 'KRAKEN_BUY_AMOUNT')
const ordertype = getEnvOpt('KRAKEN_ORDER_TYPE', 'limit', ['limit', 'market'])
// https://www.kraken.com/features/api // https://www.kraken.com/features/api
const crypto = 'XBT' const crypto = 'XBT'
@@ -24,7 +25,7 @@ module.exports = async (kraken, validate, getEnv) => {
console.log('📉 Bid:', bid, fiat, '\n') console.log('📉 Bid:', bid, fiat, '\n')
// Place order // Place order
const details = { pair, type: 'buy', ordertype: 'limit', price, volume } const details = { pair, type: 'buy', ordertype, price, volume }
if (validate) details.validate = true if (validate) details.validate = true
const { result: { descr: { order }, txid } } = await kraken.api('AddOrder', details) const { result: { descr: { order }, txid } } = await kraken.api('AddOrder', details)

View File

@@ -1,4 +1,4 @@
module.exports = async (kraken, validate, getEnv) => { module.exports = async (kraken, validate, { getEnv }) => {
const [maxFee, key] = getEnv('KRAKEN_MAX_REL_FEE', 'KRAKEN_WITHDRAW_KEY') const [maxFee, key] = getEnv('KRAKEN_MAX_REL_FEE', 'KRAKEN_WITHDRAW_KEY')
// https://api.kraken.com/0/private/WithdrawInfo // https://api.kraken.com/0/private/WithdrawInfo

View File

@@ -6,6 +6,11 @@ const getEnv = (...vars) => vars.map(name => {
assert(value, `Provide the ${name} environment variable.`) assert(value, `Provide the ${name} environment variable.`)
return value return value
}) })
const getEnvOpt = (varname, defaultValue, allowedValues) => {
const value = process.env[varname] || defaultValue
if (allowedValues) assert(allowedValues.includes(value), `The ${varname} environment variable must be one of ${allowedValues.map(v => `"${v}"`).join(", ")}.`)
return value
}
const command = process.argv[2].replace('--cmd=', '') const command = process.argv[2].replace('--cmd=', '')
const validate = process.argv.includes('--validate') || process.env['KRAKEN_DRY_RUN_PLACE_NO_ORDER'] const validate = process.argv.includes('--validate') || process.env['KRAKEN_DRY_RUN_PLACE_NO_ORDER']
@@ -15,7 +20,7 @@ const validate = process.argv.includes('--validate') || process.env['KRAKEN_DRY_
const kraken = new Kraken(apiKey, secret) const kraken = new Kraken(apiKey, secret)
const cmd = require(`./commands/${command}`) const cmd = require(`./commands/${command}`)
await cmd(kraken, validate, getEnv) await cmd(kraken, validate, { getEnv, getEnvOpt })
if (validate) console.log('\n🚨 THIS WAS JUST A VALIDATION RUN!') if (validate) console.log('\n🚨 THIS WAS JUST A VALIDATION RUN!')
} catch (err) { } catch (err) {