peanuts
v2.0.0
Published
A simple (CLI) tool that automatically trades cryptocurrencies based on a defined threshold
Downloads
4
Readme
Peanuts
A simple (CLI) tool that automatically trades cryptocurrencies based on a defined threshold
Diversification is a common investment technique of spreading investments around to reduce the volatility of a portfolio over time. Peanuts allows building a diversified cryptocurrency portfolio by buying coins you don’t have already and selling those you have based on defined thresholds. It all happens automatically and is supposed to be configured as a cronjob that is executed once per minute/hour/day.
Requirements
- Node.js v8+
Installation
npm install -g peanuts
Usage
$ peanuts {OPTIONS}
Configuration
Peanuts is configured using the following options via a configuration file, environment variables, and/or command-line arguments.
First of all, Peanuts looks for a JSON file called peanuts.json
within the current working directory.
{
"base": "eur",
"currency": "btc",
"top": "10",
"amount": "50",
"threshold": "150",
"order": [
"binance"
],
"blacklist": [
"btc",
"eth",
"ltc"
]
}
Afterwards, Peanuts will take environment variables into account.
base=eur currency=btc top=20 amount=20 threshold=150 peanuts
Concluding, Peanuts will take command-line arguments into account.
peanuts --base=eur --currency=btc --top=20 --amount=20 --threshold=150 --blacklist=BTC --blacklist=ETH --blacklist=LTC
(All options are merged into a single configuration using the hierarchy described above.)
Options
Due to the fact that there is no all-in-one exchange service that offers all currencies, you can add multiple exchanges to Peanuts.
Purchases
Now that Peanuts is able to perform buys for you, you need to specify what kind of buys you want to be performed.
base
The base currency used for specifying the desired amount.
Example: USD
Default: EUR
currency
The cryptocurrency used for actually buying cryptocurrencies (as most exchanges only accept other cryptocurrencies like Bitcoin for buying altcoins).
Example: ETH
Default: BTC
top
The quantity of currencies you want to check starting at #1 of the CoinMarketCap ranking.
Example: 20
(#1—#20)
Default: 10
(#1—#10)
amount
Amount of your base currency to buy currencies for.
Example: 20
Default: 10
threshold
Growth rate to sell currencies at expressed as a percentage based on (and including) the buying price (= 100%). For instance 200
equals 200% and means that your currencies are sold as soon as they doubled in value.
Example: 150
Default: 200
storage
Temporary storage (= JSON file) where your portfolio (currencies held including their buying cost) is stored.
Example: /Users/johndoe/Desktop/portfolio.json
Default: storage.json
(within the current working directory)
blacklist
List of currencies (= their symbols) that shall be ignored/skipped.
Example: ['BTC', 'ETH']
Default: []
whitelist
List of currencies (= their symbols) that shall be traded without exception. Any other currency will be ignored/skipped.
Example: ['XRP', 'XLM']
Default: []
order
Ranking of your preferred exchange services. For instance ['kraken', 'bitfinex']
would always try to buy/sell your portfolio using Kraken but fall back on Bitfinex in case Kraken does not support the respective currency.
Example: ['kraken', 'bitfinex']
Default: []
Exchanges
Peanuts uses ccxt for trades and currently supports the following 101 cryptocurrency exchange markets and trading APIs.
| Exchange | Required Credentials | Documentation |
| --------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1Broker | _1broker_key
| https://1broker.com/?c=en/content/api-documentation |
| 1BTCXE | _1btcxe_key
/ _1btcxe_secret
| https://1btcxe.com/api-docs.php |
| ACX | acx_key
/ acx_secret
| https://acx.io/documents/api_v2 |
| Allcoin | allcoin_key
/ allcoin_secret
| https://www.allcoin.com/About/APIReference |
| ANXPro | anxpro_key
/ anxpro_secret
| http://docs.anxv2.apiary.io |
| Bibox | bibox_key
/ bibox_secret
| https://github.com/Biboxcom/api_reference/wiki/home_en |
| Binance | binance_key
/ binance_secret
| https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md |
| Bit2C | bit2c_key
/ bit2c_secret
| https://www.bit2c.co.il/home/api |
| BitBay | bitbay_key
/ bitbay_secret
| https://bitbay.net/public-api |
| Bitcoin.co.id | bitcoincoid_key
/ bitcoincoid_secret
| https://vip.bitcoin.co.id/downloads/BITCOINCOID-API-DOCUMENTATION.pdf |
| Bitfinex | bitfinex_key
/ bitfinex_secret
| https://bitfinex.readme.io/v1/docs |
| Bitfinex v2 | bitfinex2_key
/ bitfinex2_secret
| https://bitfinex.readme.io/v2/docs |
| bitFlyer | bitflyer_key
/ bitflyer_secret
| https://bitflyer.jp/API |
| Bithumb | bithumb_key
/ bithumb_secret
| https://www.bithumb.com/u1/US127 |
| Bitlish | bitlish_key
| https://bitlish.com/api |
| BitMarket | bitmarket_key
/ bitmarket_secret
| https://www.bitmarket.net/docs.php?file=api_public.html |
| BitMEX | bitmex_key
/ bitmex_secret
| https://www.bitmex.com/app/apiOverview |
| Bitso | bitso_key
/ bitso_secret
| https://bitso.com/api_info |
| Bitstamp | bitstamp_key
/ bitstamp_secret
/ bitstamp_user
| https://www.bitstamp.net/api |
| Bitstamp v1 | bitstamp1_key
/ bitstamp1_secret
/ bitstamp1_user
| https://www.bitstamp.net/api |
| Bittrex | bittrex_key
/ bittrex_secret
| https://bittrex.com/Home/Api |
| Bit-Z | bitz_key
/ bitz_secret
| https://www.bit-z.com/api.html |
| BL3P | bl3p_key
/ bl3p_secret
| https://github.com/BitonicNL/bl3p-api/tree/master/docs |
| Bleutrade | bleutrade_key
/ bleutrade_secret
| https://bleutrade.com/help/API |
| Braziliex | braziliex_key
/ braziliex_secret
| https://braziliex.com/exchange/api.php |
| BtcBox | btcbox_key
/ btcbox_secret
| https://www.btcbox.co.jp/help/asm |
| BTCChina | btcchina_key
/ btcchina_secret
| https://www.btcchina.com/apidocs |
| BTCExchange | btcexchange_key
/ btcexchange_secret
| https://github.com/BTCTrader/broker-api-docs |
| BTC Markets | btcmarkets_key
/ btcmarkets_secret
| https://github.com/BTCMarkets/API |
| BtcTrade.im | btctradeim_key
/ btctradeim_secret
| https://www.btctrade.im/help.api.html |
| BTC Trade UA | btctradeua_key
/ btctradeua_secret
| https://docs.google.com/document/d/1ocYA0yMy_RXd561sfG3qEPZ80kyll36HUxvCRe5GbhE/edit |
| BTCTurk | btcturk_key
/ btcturk_secret
| https://github.com/BTCTrader/broker-api-docs |
| BTCX | btcx_key
/ btcx_secret
| https://btc-x.is/custom/api-document.html |
| BX.in.th | bxinth_key
/ bxinth_secret
| https://bx.in.th/info/api |
| C-CEX | ccex_key
/ ccex_secret
| https://c-cex.com/?id=api |
| CEX.IO | cex_key
/ cex_secret
/ cex_user
| https://cex.io/cex-api |
| CHBTC | chbtc_key
/ chbtc_secret
| https://www.chbtc.com/i/developer |
| ChileBit | chilebit_key
/ chilebit_secret
| https://blinktrade.com/docs |
| COBINHOOD | cobinhood_key
| https://cobinhood.github.io/api-public |
| coincheck | coincheck_key
/ coincheck_secret
| https://coincheck.com/documents/exchange/api |
| CoinEgg | coinegg_key
/ coinegg_secret
| https://www.coinegg.com/explain.api.html |
| CoinExchange | coinexchange_key
/ coinexchange_secret
| https://coinexchangeio.github.io/slate/ |
| coinfloor | coinfloor_key
/ coinfloor_secret
/ coinfloor_user
| https://github.com/coinfloor/api |
| Coingi | coingi_key
/ coingi_secret
| http://docs.coingi.apiary.io/ |
| CoinMate | coinmate_key
/ coinmate_secret
/ coinmate_user
| http://docs.coinmate.apiary.io |
| Coinsecure | coinsecure_key
| https://api.coinsecure.in |
| CoinSpot | coinspot_key
/ coinspot_secret
| https://www.coinspot.com.au/api |
| CoolCoin | coolcoin_key
/ coolcoin_secret
| https://www.coolcoin.com/help.api.html |
| Cryptopia | cryptopia_key
/ cryptopia_secret
| https://www.cryptopia.co.nz/Forum/Category/45 |
| DSX | dsx_key
/ dsx_secret
| https://api.dsx.uk |
| EXMO | exmo_key
/ exmo_secret
| https://exmo.me/en/api_doc |
| flowBTC | flowbtc_key
/ flowbtc_secret
/ flowbtc_user
| http://www.flowbtc.com.br/api/ |
| FoxBit | foxbit_key
/ foxbit_secret
| https://blinktrade.com/docs |
| FYB-SE | fybse_key
/ fybse_secret
| http://docs.fyb.apiary.io |
| FYB-SG | fybsg_key
/ fybsg_secret
| http://docs.fyb.apiary.io |
| Gatecoin | gatecoin_key
/ gatecoin_secret
| https://gatecoin.com/api |
| Gate.io | gateio_key
/ gateio_secret
| https://gate.io/api2 |
| GDAX | gdax_key
/ gdax_secret
/ gdax_password
| https://docs.gdax.com |
| Gemini | gemini_key
/ gemini_secret
| https://docs.gemini.com/rest-api |
| GetBTC | getbtc_key
/ getbtc_secret
| https://getbtc.org/api-docs.php |
| HitBTC | hitbtc_key
/ hitbtc_secret
| https://github.com/hitbtc-com/hitbtc-api/blob/master/APIv1.md |
| HitBTC v2 | hitbtc2_key
/ hitbtc2_secret
| https://api.hitbtc.com |
| Huobi | huobi_key
/ huobi_secret
| https://github.com/huobiapi/API_Docs_en/wiki |
| Huobi CNY | huobicny_key
/ huobicny_secret
| https://github.com/huobiapi/API_Docs/wiki/REST_api_reference |
| Huobi Pro | huobipro_key
/ huobipro_secret
| https://github.com/huobiapi/API_Docs/wiki/REST_api_reference |
| Independent Reserve | independentreserve_key
/ independentreserve_secret
| https://www.independentreserve.com/API |
| itBit | itbit_key
/ itbit_secret
| https://api.itbit.com/docs |
| jubi.com | jubi_key
/ jubi_secret
| https://www.jubi.com/help/api.html |
| Kraken | kraken_key
/ kraken_secret
| https://www.kraken.com/en-us/help/api |
| Kucoin | kucoin_key
/ kucoin_secret
| https://kucoinapidocs.docs.apiary.io |
| Kuna | kuna_key
/ kuna_secret
| https://kuna.io/documents/api |
| LakeBTC | lakebtc_key
/ lakebtc_secret
| https://www.lakebtc.com/s/api_v2 |
| Liqui | liqui_key
/ liqui_secret
| https://liqui.io/api |
| LiveCoin | livecoin_key
/ livecoin_secret
| https://www.livecoin.net/api?lang=en |
| luno | luno_key
/ luno_secret
| https://www.luno.com/en/api |
| Lykke | lykke_key
| https://hft-api.lykke.com/swagger/ui/ |
| Mercado Bitcoin | mercado_key
/ mercado_secret
| https://www.mercadobitcoin.com.br/api-doc |
| MixCoins | mixcoins_key
/ mixcoins_secret
| https://mixcoins.com/help/api/ |
| Novaexchange | nova_key
/ nova_secret
| https://novaexchange.com/remote/faq |
| OKCoin CNY | okcoincny_key
/ okcoincny_secret
| https://www.okcoin.cn/rest_getStarted.html |
| OKCoin USD | okcoinusd_key
/ okcoinusd_secret
| https://www.okcoin.com/rest_getStarted.html |
| OKEX | okex_key
/ okex_secret
| https://www.okex.com/rest_getStarted.html |
| Paymium | paymium_key
/ paymium_secret
| https://github.com/Paymium/api-documentation |
| Poloniex | poloniex_key
/ poloniex_secret
| https://poloniex.com/support/api/ |
| QRYPTOS | qryptos_key
/ qryptos_secret
| https://developers.quoine.com |
| QuadrigaCX | quadrigacx_key
/ quadrigacx_secret
/ quadrigacx_user
| https://www.quadrigacx.com/api_info |
| QUOINEX | quoinex_key
/ quoinex_secret
| https://developers.quoine.com |
| SouthXchange | southxchange_key
/ southxchange_secret
| https://www.southxchange.com/Home/Api |
| SurBitcoin | surbitcoin_key
/ surbitcoin_secret
| https://blinktrade.com/docs |
| TheRockTrading | therock_key
/ therock_secret
| https://api.therocktrading.com/doc/v1/index.html |
| Tidex | tidex_key
/ tidex_secret
| https://tidex.com/exchange/public-api |
| UrduBit | urdubit_key
/ urdubit_secret
| https://blinktrade.com/docs |
| Vaultoro | vaultoro_key
/ vaultoro_secret
| https://api.vaultoro.com |
| VBTC | vbtc_key
/ vbtc_secret
| https://blinktrade.com/docs |
| VirWoX | virwox_key
/ virwox_login
/ virwox_password
| https://www.virwox.com/developers.php |
| WEX | wex_key
/ wex_secret
| https://wex.nz/api/3/docs |
| xBTCe | xbtce_key
/ xbtce_secret
/ xbtce_user
| https://www.xbtce.com/tradeapi |
| YoBit | yobit_key
/ yobit_secret
| https://www.yobit.net/en/api/ |
| YUNBI | yunbi_key
/ yunbi_secret
| https://yunbi.com/documents/api/guide |
| Zaif | zaif_key
/ zaif_secret
| http://techbureau-api-document.readthedocs.io/ja/latest/index.html |
| ZB | zb_key
/ zb_secret
| https://www.zb.com/i/developer |
Changelog
- 2.0.0
- Initial version
Thanks
Special thanks to Robert Kowalski for handing over the peanuts
package name on npm to me. Please check out robertkowalski/peanuts in case you’re looking for the code of versions <2.0.0.
Disclaimer
You use Peanuts at your own risk. I would only recommend trying out Peanuts with small amounts you are willing to lose for educational purposes. Running a bot (and trading in general) requires careful study of the risks and parameters. Wrong settings can cause a major loss. Peanuts relies on 3rd party APIs which may fail at any time and is experimental software which also may fail at any time. Thus never leave Peanuts un-monitored for long periods of time. Be prepared to stop it if too much loss occurs. You alone are responsible for anything that happens when you’re live-trading.
License
Copyright (c) 2018 Thomas Rasshofer
Licensed under the MIT license.
See LICENSE for more info.