Giter VIP home page Giter VIP logo

hummingbot / hummingbot Goto Github PK

View Code? Open in Web Editor NEW
7.3K 144.0 2.6K 538.45 MB

Open source software that helps you create and deploy high-frequency crypto trading bots

Home Page: https://hummingbot.org

License: Apache License 2.0

Python 95.15% Shell 0.03% Batchfile 0.01% Dockerfile 0.02% C++ 0.14% Makefile 0.01% Cython 4.65%
trading-bot cryptocurrency algo-trading arbitrage open-source crypto trading dex high-frequency-trading

hummingbot's Introduction

Hummingbot


License Twitter Youtube Discord

Hummingbot is an open source framework that helps you build automated trading strategies, or bots that run on cryptocurrency exchanges.

This code is free and publicly available under the Apache 2.0 open source license!

Why Hummingbot?

  • Both CEX and DEX connectors: Hummingbot supports connectors to centralized exchanges like Binance and KuCoin, as well as decentralized exchanges like Uniswap and PancakeSwap on various blockchains (Ethereum, BNB Chain, etc).
  • Cutting edge strategy framework: Our new V2 Strategies framework allows you to compose powerful, backtestable, multi-venue, multi-timeframe stategies of any type
  • Secure local client: Hummingbot is a local client software that you install and run on your own devices or cloud virtual machines. It encrypts your API keys and private keys and never exposes them to any third parties.
  • Community focus: Hummingbot is driven by a global community of quant traders and developers who maintain the connectors and contribute strategies to the codebase.

Help us democratize high-frequency trading and make powerful trading algorithms accessible to everyone in the world!

Quick Links

  • Website and Docs: Official Hummingbot website and documentation
  • Installation: Install Hummingbot on various platforms
  • FAQs: Answers to all your burning questions
  • Botcamp: Learn how build your own custom HFT strategy in Hummingbot with our hands-on bootcamp!
  • Newsletter: Get our monthly newletter whenever we ship a new release
  • Discord: The main gathering spot for the global Hummingbot community
  • YouTube: Videos that teach you how to get the most of of Hummingbot
  • Twitter: Get the latest announcements about Hummingbot
  • Snapshot: Participate in monthly polls that decide which components should be prioritized

Getting Started

Install with Docker

We recommend installing Hummingbot using Docker if you want the simplest, easiest installation method and don't need to modify the Hummingbot codebase.

Prerequisites:

  • MacOS 10.12.6+ / Linux (Ubuntu 20.04+, Debian 10+) / Windows 10+
  • Memory: 4 GB RAM per instance
  • Storage: 5 GB HDD space per instance
  • Install Docker Compose
git clone https://github.com/hummingbot/hummingbot
cd hummingbot
docker compose up -d
docker attach hummingbot

Install from Source

We recommend installing Hummingbot from source if you want to customize or extend the Hummingbot codebase, build new components like connectors or strategies, and/or learn how Hummingbot works at a deeper, technical level.

Prerequisites:

  • MacOS 10.12.6+ / Linux (Ubuntu 20.04+, Debian 10+)
  • Memory: 4 GB RAM per instance
  • Storage: 3 GB HDD space per instance
  • Install Anaconda or Miniconda
git clone https://github.com/hummingbot/hummingbot
cd hummingbot
./install
conda activate hummingbot
./compile
./start

See Installation for detailed guides for each OS.

Architecture

Hummingbot architecture features modular components that can be maintained and extended by individual community members.

Strategies and Scripts

A Hummingbot strategy is an ongoing process that executes an algorithmic trading strategy. It is constructed as a user-defined program that uses an underlying framework to abstracts low-level operations:

V2 Strategies: The latest and most advanced way to create strategies in Hummingbot, V2 strategies are built using composable elements known as Controllers and PositionExecutors. These elements can be mixed and matched, offering a modular approach to strategy creation and making the development process faster and more efficient.

Scripts: For those who are looking for a lightweight solution, Hummingbot provides scripting support. These are single-file strategies that are quick to implement and can be an excellent starting point for those new to algorithmic trading. Check out the /scripts folder for all Script examples included in the codebase.

V1 Strategies: Templatized programs templates for various algorithmic trading strategies that expose a set of user-defined parameters, allowing you to customize the strategy's behavior. While these V1 strategies were Hummingbot's original method of defining strategies and have been superceded by V2 Strategies and Scripts, the strategies below are still often used:

Connectors

Hummingbot connectors standardize trading logic and order types across different types of exchanges and blockchain networks. Each connector's code is contained in modularized folders in the Hummingbot and/or Gateway codebases.

Currently, the Hummingbot codebase contains 50+ connectors of the following types:

  • CEX: Centralized exchanges take custody of user assets, i.e. Binance, Kucoin, etc.
  • DEX: Decentralized exchanges are platforms in which user assets are stored non-custodially in smart contracts, i.e. dYdX, Uniswap, etc.
  • Chain: Layer 1 blockchain ecosystems such as Ethereum, BNB Chain, Avalanche, etc.

Each exchange has one or more connectors in the Hummingbot codebase that supports a specific market type that the exchange supports:

  • spot: Connectors to central limit order book (CLOB) exchanges that trade spot markets
  • perp: Connectors to central limit order book (CLOB) exchanges that trade perpetual swap markets
  • amm: Connectors to decentralized exchanges that use the Automatic Market Maker (AMM) methodology

Quarterly Polls allow HBOT holders decide how maintenance bandwidth and development bounties are allocated toward the connectors in the codebase.

Sponsors & Partners

The Hummingbot Foundation, supported by its sponsors, partners and backers, is dedicated to fostering a robust, community-driven ecosystem for algorithmic crypto trading.

Sponsors

Exchange Partners

For more information about the support provided by these partners, see the financial reports provided in HBOT Tracker.

Other Hummingbot Repos

  • Dashboard: Community pages that help you create, backtest, deploy, and manage Hummingbot instances
  • Gateway: API middleware for DEX connectors
  • Deploy Examples: Deploy Hummingbot in various configurations with Docker
  • Hummingbot Site: Official documentation for Hummingbot - we welcome contributions here too!
  • Awesome Hummingbot: All the Hummingbot links
  • Brokers: Different brokers that can be used to communicate with multiple instances of Hummingbot

Contributions

Hummingbot belongs to its community, so we welcome contributions! Please review these guidelines first.

To have your exchange connector or other pull request merged into the codebase, please submit a New Connector Proposal or Pull Request Proposal, following these guidelines. Note that you will need some amount of HBOT tokens in your Ethereum wallet to submit a proposal.

Legal

hummingbot's People

Contributors

aarmoa avatar cardosofede avatar carlolm avatar chowryan avatar crimsonjacket avatar danilo-araujo-silva avatar dennisocana avatar fengtality avatar isreallee82 avatar jeremykono avatar keithbaum avatar klpanagi avatar kmcgowan2000 avatar leastchaos avatar martinkou avatar mementorc avatar mhrvth avatar michaelc9 avatar navijation avatar nikspz avatar nullably avatar petioptrv avatar ptrckm avatar rapcmia avatar theholyroger avatar tomasgaudino avatar veecos2 avatar vic-en avatar willapa avatar yzhang1994 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hummingbot's Issues

[BUG] Error Sending Transaction-Replacement Transaction Underpriced

Describe the bug
Tried to do cross-exchange market making between RadarRelay and Binance. It is showing error as shown in the screenshot.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: Cross Exchange MM, Maker: RadarRelay, Taker: Binance
  2. Start the bot using this command: Conf, Start

Screenshots
1

Release version
Version 0.5.0

Attachments
N/A

ValueError: Maker order size (0.0) must be greater than 0.

Describe the bug
In GUI log we see error message "ValueError: Maker order size (0.0) must be greater than 0."

Release is latest compiled from source and is working fine on Radar-Relay with BAT-WETH and DNT-ETH
Running on Ubuntoo 18.04 emulator in VirtualBox on Windows host.

Steps To Reproduce
Set up for cross exchange arbitrage between DDEX and Binance with pairs BNB-WETH and BNBETH repectively. Set maximum order size =0.04 ETH which is below the balance on both exchanges. Start.
See screen shot of console below:

DDEX_BNB-ETH_cross-exchange_value-error.txt

Is this to do with a minimum order value on DDEX?

[BUG] Order failed (rejected) on Coinbase - precision issue

When attempting arbitrage, one side of the order is failing on Coinbase

Failed on XLMBTC market, whenever HB attempted an order. Configured for arbitrage Binance <-> Coinbase XLM-BTC. Order is not posted to Coinbase, it is rejected by the API - order size is too precise.

hb

Version 0.4.0

Bad Ethereum RPC URL

Tried using an Infura url with an api key:

https://mainnet.infura.io/v3/XXXXXX

But this resulted in the "Bad Ethereum RPC URL" error.

Also tried null value which also didn't work -- I thought I remember reading if you put nothing it would connect to a coinalpha node.

UI Suggestion: Enforce valid values

It is very cool that the UI shows valid values as you type them. However, it is problematic that the UI allows a user to enter invalid values and override these valid values. For example, a user can enter an invalid trading pair, which wreaks havoc on the tool. Perhaps do something such that invalid values can't be entered.

[BUG] No stack trace is recorded to Datadog for errors

Describe the bug
The current telemetry logic is supposed to send error logs to Datadog for further diagnosis. However, stack traces are not found in the Datadog records.

Steps To Reproduce
Just search for any existing error logs in Datadog and inspect the contents. There should normally be stack trace for our error logs, but no stack trace exists in our Datadog records.

Release version
0.6.0

GUI price reporting precision linked to exchange precision

Feature Suggestion
Presently the GUI reports coin prices to 6 decimal places for all coins. For coins with low prices (relative to their counterpart in the pair) this can yield odd results due to excessive rounding.
For example, the DNT-ETH pair is quoted to 7 decimals in Radar Relay and to 8 on Binance.
I suggest that the reporting precision be set to the finer of the two exhanges.

Impact
Provide more realistic information upon which traders might tune their profit margin targets.

Additional context
https://drive.google.com/file/d/1QesHhLfUIm_oRYWmpWfJmLyYXx8Dz6hh/view?usp=sharing
https://drive.google.com/file/d/19ZtPKheugeD4XsaDMaSgDDMSsHz80rzS/view?usp=sharing
https://drive.google.com/file/d/1l3DUOwtccFTWiLN6QIFkcAibf6_8x8zY/view?usp=sharing

[wings.watcher.new_blocks_watcher] Timed out fetching new block from node

Describe the bug
Error message as follows:

2019-04-18 16:04:12,002 - wings.watcher.new_blocks_watcher - ERROR - Timed out fetching new block from node.
Traceback (most recent call last):
  File "/Users/carlol/tutorial/hummingbot/wings/watcher/new_blocks_watcher.py", line 97, in fetch_new_blocks_loop
    full_transactions=True))
concurrent.futures._base.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/carlol/tutorial/hummingbot/wings/watcher/new_blocks_watcher.py", line 119, in fetch_new_blocks_loop
    del self._blocks_window[block_hash]
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/async_timeout/__init__.py", line 55, in __aexit__
    self._do_exit(exc_type)
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/async_timeout/__init__.py", line 92, in _do_exit
    raise asyncio.TimeoutError
concurrent.futures._base.TimeoutError
2019-04-18 16:04:43,004 - wings.watcher.new_blocks_watcher - ERROR - Timed out fetching new block from node.
Traceback (most recent call last):
  File "/Users/carlol/tutorial/hummingbot/wings/watcher/new_blocks_watcher.py", line 97, in fetch_new_blocks_loop
    full_transactions=True))
concurrent.futures._base.CancelledError

Steps To Reproduce

  • Arbitrage strategy for BAT-ETH between Binance and DDEX

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with the attached parameters.
  2. Start the bot using this command: config, start

Screenshots
N/A

Release version
0.4.0

Attachments

  1. configuration files
  2. log file

config.zip
hummingbot_logs_2019-04-18-15-49-30.log

[BUG] Bot creating many transaction errors when making a market on Radar Relay

Describe the bug
Running the bot results in many transaction errors on Ethereum.
https://etherscan.io/address/0xefb722c5960c37e5f20295012f274a56625e1912

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: ...
###   Cross exchange market making strategy config   ###
########################################################

# The following configuations are only required for the
# cross exchange market making strategy

# Exchange and token parameters
maker_market: radar_relay
taker_market: ddex
maker_market_symbol: BAT-WETH
taker_market_symbol: BAT-WETH

# Minimum profitability target required to place an order
# Expressed in decimals: 0.01 = 1% target profit
min_profitability: 0.005

# Maximum order size in terms of quote currency
trade_size_override: 0.0

# Maximum aggregate amount of orders in quote currency
# that are allowed at a better price than Hummingbot's
# order before Hummingbot adjusts its order and pricing
top_depth_tolerance:

- - ^.+(USDT|USDC|USDS|DAI|PAX|TUSD)$
  - 1000
- - ^.+ETH$
  - 10
- - ^.+BTC$
  - 0.5
# Have Hummingbot actively adjust/cancel orders if necessary.
# If set to true, outstanding orders are adjusted if
# profitability falls below min_profitability.
# If set to false, outstanding orders are adjusted if
# profitability falls below cancel_order_threshold.
active_order_canceling: false

# If active_order_canceling = false, this is the profitability/
# loss threshold at which to cancel the order.
# Expressed in decimals: 0.01 = 1% target profit
cancel_order_threshold: 0.0

# An amount in seconds, which is the minimum duration for any
# placed limit orders. Default value = 130 seconds.
limit_order_min_expiration: 130.0
  1. Start the bot using this command: ...
    Run bot as per Hummingbot document

Screenshots
// If applicable, add screenshots to help explain your problem.

Release version
0.4.0

Attachments
Example warning from log file:
wings.wallet.web3_wallet_backend - WARNING - The transaction 0xf9cb1e6c728f6895df09ec803c7b7003d52c0fd46dd18a71bf4e26ec39e52a0c has failed.

// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.
// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

[BUG]float division by zero on Binance

Describe the bug
Show error float division by zero on Binance when tracing

Steps To Reproduce

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: Please refer attached file
  2. Start the bot using this command: start
    ...

Screenshots
N/A

Release version
dev-0.7.0

Attachments
Log, config files
hummingbot_logs_2019-05-13-13-54-33.log
conf_global.txt
conf_cross_exchange_market_making_strategy_0.txt

// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

[Feature]GUI ease of use

Feature Suggestion
The stability of the GUI has now improved markedly. Thank you for team brilliant responsiveness.

Apart from the obvious imperative to widen the range of exchanges covered, I enclose some suggestions for ease of use - most of which I suspect would require only modest effort to realize.

Suggested ergonomic improvements to the GUI.

1 - "config"
a) Pop up valid entries for "create" and "import" following entry of initial letter from keyboard.
b) Consider offering default of "import" on "enter" with no input.

2 - "strategy"
This suggestion is predicated on the assumption that the vast majority of users will keep their strategy files in the conf/ folder.
Presently the user must type "conf/" before the valid entries within "conf/" folder are displayed.
Alternatively :
a) Offer default of "conf/" folder contents pop-up upon "enter" with no input.
b) Pre-enter "conf/" in the keyboard input buffer - (which the user may edit or usually retain) as the default folder from which valid entries will be displayed.

3 - "unlock saved wallet?"
a) Consider offering default option of "y" on "enter" with no input.

4 - "wallet credentials"
a) IF password is entered correctly, then follow with && the offer of the "start" command as a pop-up. What else would I do apart from control-C?

5 - "start/status/stop"
a) After entry of "start" follow with && "status" entry after a "short" delay.
b) Consider offering single key entry options for 1-start, 2-status, 3-stop.
c) Offer "2-status" as default on "enter" with no input.

Impact
The desired features will reduce keyboard entry requirements by intelligent offer of default options for most frequent user action paths. They also extend the (excellent) existing usage of valid choice pop-ups to present a more consistent style of user interaction.

Additional context
Justification by example:
Arguably, ease of use (within a consistent style) has historically represented Apple's only sustained competitive advantage - but it has sustained premium pricing over the long haul, despite many other competitive disadvantages (lack of choice in applications and functionality, proprietory hardware of modest choice and power, lack of peripherals etc etc.

Coin flagged erroneously as zero balance on radar_relay

During trading (arbitrage) on radar_relay, Hummingbot 4.0 says zero DNT coin balance but Radar_Relay exchange console shows 900 DNT enabled for trading.

See hummingbot terminal log at https://photos.app.goo.gl/cmrvVpWpEBNqDpr3A 

https://photos.app.goo.gl/cmrvVpWpEBNqDpr3A

plus Radar_relay screenshot :
https://user-images.githubusercontent.com/2613649/56614841-3ff95b00-661a-11e9-94dc-df7c51ef9600.jpg

The fault seems confined to radar_relay - I have not replicated the fault in either DDEX or Binance.

This error manifested in Windows bash (Ubuntoo 18.04) with HB compiled from HBv4.0 source.  
I have replicated the fault identically in VirtualBox emulating Ubuntoo 18.04 with HBv4.0, likewise compiled from source.

I have replicated the fault also with another coin (BAT) in both software environments.
NB other coins work fine e.g. BNB and ETH/WETH.

All tests employed the same Metamask wallet  <0xf452895f879CB78A60af303BCF7B34E56A934Da8>
which confirms the 900 DNT balance available.

So the fault seems to be exchange and coin specific and independent of the host platform.

Steve Henderson
[email protected]

Attachments
// Attach any relevant configuration files, logs, tx hashes, etc. here.
Firefox_Screenshot_2019-04-23T19-43-08 318Z
// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.

problem in compiling hummingbot 0.5.0 and dev-0.6.0 in windows bash (WSL)

Describe the bug
problem in compiling hummingbot v5 in windows bash

Steps To Reproduce
download current master to github local repository c/users/steven/github
in WLS bash cd /c/users/steven/github && sudo cp -r * ~/hummingbot
cd ~/hummingbot && conda deactivate && ./uninstall && ./install && conda activate hummingbot && ./compile

Screenshots
Error compiling Cython file:

...

from wings.event_listener cimport EventListener

er_logger = None

cdef class EventReporter(EventListener):
^

hummingbot/wings/event_reporter.pyx:9:5: Base type does not match previous declaration
Traceback (most recent call last):
File "setup.py", line 126, in
main()
File "setup.py", line 115, in main
], language="c++", language_level=3),
File "/home/steven/anaconda3/envs/hummingbot/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 1097, in cythonize
cythonize_one(*args)
File "/home/steven/anaconda3/envs/hummingbot/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 1220, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: hummingbot/wings/event_reporter.pyx

Release version
5.0 (on WSL Ubuntu 18.04) where Github clone executed in Windows10(HE)

replicates also in dev-0.6.0 (on WSL Ubuntu 18.04) where Github clone executed in Windows10(HE)

does NOT replicate on 5.0 or dev-0.6.0 (on VirtualBox Ubuntu 18.04) where the Github clone was executed in Linux.

Conclusion - fault likely derives from transfer of files from Windows (native) to Windows WSL (linux).
Possibly a permissions issue - or maybe EOL symbol translation?

[BUG] Bot won't trade even when both bid and ask profitabilities are true

Describe the bug
Tried to do cross-exchange MM between Binance and DDEX, with TRUE bid and ask profitabilities and enough balances on both sides, the bot wouldn't place any orders.

Steps To Reproduce
Just run the bot

Screenshots
screenshot

Release version
The latest

Attachments
Configs as below -

########################################################
###   Cross exchange market making strategy config   ###
########################################################

The following configuations are only required for the
cross exchange market making strategy

### Exchange and token parameters
maker_market: ddex
taker_market: binance
maker_market_symbol: WETH-TUSD
taker_market_symbol: ETHUSDC

### Minimum profitability target required to place an order
### Expressed in decimals: 0.01 = 1% target profit
min_profitability: 0.0005

### Maximum order size in terms of quote currency
trade_size_override: 0.0

### Maximum aggregate amount of orders in quote currency
### that are allowed at a better price than Hummingbot's
### order before Hummingbot adjusts its order and pricing
top_depth_tolerance:
- - ^.+(USDT|USDC|USDS|DAI|PAX|TUSD)$
  - 1000
- - ^.+ETH$
  - 10
- - ^.+BTC$
  - 0.5
active_order_canceling: true

### If active_order_canceling = false, this is the profitability/
### loss threshold at which to cancel the order.
### Expressed in decimals: 0.01 = 1% target profit
cancel_order_threshold: -0.5

### An amount in seconds, which is the minimum duration for any
### placed limit orders. Default value = 130 seconds.
limit_order_min_expiration: 130.0

// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.
// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

[BUG] `discovery` strategy issues

Describe the bug
Some issues with the discovery strategy hinder the user experience:

1. Nomenclature consolidation

Screen Shot 2019-05-14 at 11 05 52 AM

Change text to:
Enter a list of trading pairs on [exchange] (e.g. [ZRX-WETH, BAT-WETH]) or press ENTER or all trading pairs

2. Allow users to press ENTER

It's not obvious that users have to enter [] for all pairs. Most users will want to scan for all pairs, so we should optimize for that scenario.

3. ETH balance check not working

Screen Shot 2019-05-14 at 11 14 27 AM

I have enough ETH in wallet, and when I run other strategies, this check passes.

4. Update users about status when fetching market data

It takes 5-10 minutes to get data from all pairs. From the status output above, it's not clear if bot is working or not. Can we keep a tally of how many pairs we currently have fetched, so that we can display a status message like Fetching market data: 10/1000 trading pairs processed?

Release version
master

[BUG] Error Sending Transaction- The limit order buy has expired.

Describe the bug
Error Sending Transaction. The limit order sell has expired according to order status API. The limit order buy has expired according to order status API.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: Cross Exchange MM, Maker: RadarRelay, Taker: Binance
  2. Start the bot using this command: Config, Start

Screenshots
hummingbot_bug_3

Release version
Version: 0.5.0

Attachments
N/A

Default Ethereum RPC URL

What is the default Hummingbot ETH RPC URL? Is there a public provider for that?

In docs, https://www.hummingbot.io/docs/configuration/ (point 8), I can leave this field blank.

When I leave it blank, the value is set to None in the conf_global:

ethereum_rpc_url: None

And then I cannot start the script because the value is invalid.

Still in the same docs, there's an example:

image

The value here is start for ETH RPC URL. So I'm a bit confused.

[BUG] DDEX buy Market orders are being incorrectly submitted in terms of AMOUNT

Describe the bug
// A clear and concise description of what the bug is.
When hummingbot sends Buy Market orders to DDEX, the amount is being incorrectly submitted. We currently submit amount in BASE token. So for example, if we see we want to buy MARKET 0.9 WETH-DAI on DDEX, we should not be sending them an amount in WETH terms but in DAI terms, (approximately 0.9*160 = 144). We need to be submitting amount in quote token so 144 in above case. Note this information is after talking to DDEX about why orders were being instantly canceled back.

Steps To Reproduce
// A concise description of the steps to reproduce the buggy behavior along with screenshots:
Basically, I have been running hummingbot with following setting. In my test wallet, I have
0.5 ETH for gas
0.9 WETH
160 DAI

Here are the steps to reproduce the issue (see attachments in the section below):
my conf_arbitrage_strategy_1.yml contains following:
**# arbitrage strategy

**# Exchange and token parameters
primary_market: ddex
secondary_market: radar_relay
primary_market_symbol: WETH-DAI
secondary_market_symbol: WETH-DAI

**# Minimum profitability target required to place an order
**# Expressed in decimals: 0.01 = 1% target profit
min_profitability: 0.001

Screenshots
// If applicable, add screenshots to help explain your problem.

Release version
// Include your bot's version number (Can be found at the bottom left corner of your CLI).
I have tested this "from source" and latest from docker 0.40 version.
Attachments
// Attach any relevant configuration files, logs, tx hashes, etc. here.

2019-04-29 13:53:22,023 - hummingbot.strategy.arbitrage.arbitrage - INFO - DDEXMarket:WETH-DAI vs. RadarRelayMarket:WETH-DAI:
WETH-DAI bid/ask: 152.36/152.86
WETH-DAI bid/ask: 153.067356023925/155.1520111751701
Max profitability: 0.13565093806422457 %
Profitable: True
WETH/DAI balance: 0.904277676435557/170.42023396970873
WETH/DAI balance: 0.904277676435557/170.42023396970873
Stable Coin Exchange Rate Conversion:
DAI: 1.0065889839953348
DAI: 1.0065889839953348

Pending market orders:
market symbol order_id quantity timestamp
0 DDEXMarket WETH-DAI buy-WETH-DAI-1556546002007426 0.9 2019-04-29 13:53:22
1 RadarRelayMarket WETH-DAI sell-WETH-DAI-1556546002007485 0.9 2019-04-29 13:53:22

*** WARNINGS ***
Primary market WETH balance is 0. Cannot place order.
Primary market DAI balance is 0. Cannot place order.
Secondary market WETH balance is 0. Cannot place order.
Secondary market DAI balance is 0.Cannot place order.
2019-04-29 13:53:23,593 - wings.event_reporter - EVENT_LOG - {"timestamp": 1556546002.0, "type": "OrderType.MARKET", "symbol": "WETH-DAI", "amount": "0.90000000", "price": "152.15475", "order_id": "sell-WETH-DAI-1556546002007485", "event_name": "SellOrderCreatedEvent", "event_source": "RadarRelayMarket"}
2019-04-29 13:53:24,931 - wings.event_reporter - EVENT_LOG - {"timestamp": 1556546004.0, "type": "OrderType.MARKET", "symbol": "WETH-DAI", "amount": "0.90", "price": "0.00", "order_id": "buy-WETH-DAI-1556546002007426", "event_name": "BuyOrderCreatedEvent", "event_source": "DDEXMarket"}
2019-04-29 13:53:24,932 - wings.market.ddex_market - INFO - Created OrderType.MARKET buy order 0xe402666bf5869fae7a12b98f305187f0e7d40d0d36af6f9863c94fe076e62c64 for 0.90 WETH-DAI.
2019-04-29 13:53:25,263 - wings.market.ddex_market - INFO - The market buy order buy-WETH-DAI-1556546002007426 has been cancelled.
2019-04-29 13:53:25,265 - hummingbot.strategy.arbitrage.arbitrage - INFO - Market order canceled on DDEXMarket: buy-WETH-DAI-1556546002007426 [clock=2019-04-29 13:53:25+00:00]
2019-04-29 13:53:25,265 - wings.event_reporter - EVENT_LOG - {"timestamp": 1556546005.0, "order_id": "buy-WETH-DAI-1556546002007426", "event_name": "OrderCancelledEvent", "event_source": "DDEXMarket"}
2019-04-29 13:53:55,291 - wings.wallet.web3_wallet_backend - INFO - Received 136.93927646022453 DAI at transaction 0x0cd4e2ed34503b299ccb28661d8799b72e86c35925cb75566f56e40cd3c48874.

// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.
// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

Hummingbot installation for Windows is hard to find

This is Ellie.

I find the windows installation instructions for Hummingbot to be hard to find. I am using a very low resolution screen so it's not clear where to click. Please triage.

b1-screen

Repro steps:

  1. Go to https://www.hummingbot.io/
  2. Click "Installation Guide"
  3. Look for the text "Windows 10 or later (see Windows section below)"

Expected:

  • Clickable link to a dedicated page for installing Hummingbot on Windows
  • OR below where there is a clear link to Windows section

Actual:

  • Link is not clickable and is hidden in the upper left hamburger menu

[BUG] Arbitrage Price is wrong and profitability math is wrong

Describe the bug
The profit margin shown is wrong and price data is actually wrong.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Checking live price on Binance via Trading view BAT-ETH 0.00217444
  2. Actual price on Radar Relay for BAT-WETH 0.0021578
  3. Screen shot below shows bot prices and math do not match up. Radar relay isn't even in the same bid/ask range.
  4. Real profit would of been: % .007 taking ask bid
    Bot based on #'s it was grabbing %.001 (if you do the math on the screenshot below)
    Odd # bot came up with is negative
    ...

Screenshots
Binance actual price
image
Radar Relay actual price
image
Humming bot
image

Release version
0.4.0

[BUG]CXMM Radar Order book is empty when it's not

Describe the bug
// Tried CXMM between Radar and binance, it showed the below error:

2019-04-25 11:17:53,016 - wings.clock - ERROR - Unexpected error running clock tick.
Traceback (most recent call last):
  File "wings/clock.pyx", line 95, in wings.clock.Clock.run_til
    child_iterator.c_tick(self._current_tick)
  File "hummingbot/strategy/cross_exchange_market_making/cross_exchange_market_making.pyx", line 422, in hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making.CrossExchangeMarketMakingStrategy.c_tick
    self.c_process_market_pair(market_pair, market_pair_to_active_orders[market_pair])
  File "hummingbot/strategy/cross_exchange_market_making/cross_exchange_market_making.pyx", line 496, in hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making.CrossExchangeMarketMakingStrategy.c_process_market_pair
    self.c_check_and_create_new_orders(market_pair, has_active_bid, has_active_ask)
  File "hummingbot/strategy/cross_exchange_market_making/cross_exchange_market_making.pyx", line 1107, in hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making.CrossExchangeMarketMakingStrategy.c_check_and_create_new_orders
    bid_profitable, ask_profitable = self.c_has_market_making_profit_potential(
  File "hummingbot/strategy/cross_exchange_market_making/cross_exchange_market_making.pyx", line 743, in hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making.CrossExchangeMarketMakingStrategy.c_has_market_making_profit_potential
    double maker_ask_price = maker_order_book.c_get_price_for_quote_volume(
  File "wings/order_book.pyx", line 322, in wings.order_book.OrderBook.c_get_price_for_quote_volume
    raise EnvironmentError(f"Requested quote volume {quote_volume} is beyond order book depth - no price quote is "
OSError: Requested quote volume 1000.0 is beyond order book depth - no price quote is possible

Steps To Reproduce
On Radar, use WETH-DAI. On binance, use ETHUSDC. Both sides have enough inventory. Then run the bot.

Screenshots
NA

Release version
0.4.0 with Ryan's Radar fix

Attachments
My configs as below:

########################################################
###   Cross exchange market making strategy config   ###
########################################################

# The following configuations are only required for the
# cross exchange market making strategy

# Exchange and token parameters
maker_market: radar_relay
taker_market: binance
maker_market_symbol: WETH-DAI
taker_market_symbol: ETHUSDC

# Minimum profitability target required to place an order
# Expressed in decimals: 0.01 = 1% target profit
min_profitability: 0.0005

# Maximum order size in terms of quote currency
trade_size_override: 0.0

# Maximum aggregate amount of orders in quote currency
# that are allowed at a better price than Hummingbot's
# order before Hummingbot adjusts its order and pricing
top_depth_tolerance:

- -
    ^.+(USDT|USDC|USDS|DAI|PAX|TUSD)$
  - 1000
- - ^.+ETH$
  - 10
- - ^.+BTC$
  - 0.5
# Have Hummingbot actively adjust/cancel orders if necessary.
# If set to true, outstanding orders are adjusted if
# profitability falls below min_profitability.
# If set to false, outstanding orders are adjusted if
# profitability falls below cancel_order_threshold.
active_order_canceling: true

# If active_order_canceling = false, this is the profitability/
# loss threshold at which to cancel the order.
# Expressed in decimals: 0.01 = 1% target profit
cancel_order_threshold: -0.05

# An amount in seconds, which is the minimum duration for any
# placed limit orders. Default value = 130 seconds.
limit_order_min_expiration: 130.0

// Attach any relevant configuration files, logs, tx hashes, etc. here.

// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.
// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

.idea folder to be git ignored

Feature Suggestion
Add .idea folder that contains configs for PyCharm should be put in the .gitignore file.

Impact
This will make it easier to import a project, collaborate with others by eliminating the issue of config difference when importing in PyCharm.

Additional context
NA

[Feature]*Nice to have* Remember last config

Feature Suggestion
// A succinct description of how you want to achieve the desired behavior.
When a user re-starts the bot, the bot automatically runs the config s/he uses last time. Only in case that s/he wants to choose or create a new config does s/he need to enter config before starting.

Impact
// A succinct description of why you want the desired behavior specified above.
The desired behavior will allow me to start the bot without re-entering config if I want to use the same config used for the last time.

Additional context
Add any other context or screenshots about the feature request here.
To make the bot more intuitive and save users' time.

[BUG] Arbitrage strategy: object has no attribute 'c_find_profitable_arbitrage_orders'

Describe the bug

After about 1.5 hrs of running the arbitrage strategy, the follow message appeared and persisted for hours until restarting the bot:

2019-05-08 00:12:17,008 - wings.clock - ERROR - Unexpected error running clock tick.
Traceback (most recent call last):
  File "wings/clock.pyx", line 95, in wings.clock.Clock.run_til
    child_iterator.c_tick(self._current_tick)
  File "hummingbot/strategy/arbitrage/arbitrage.pyx", line 272, in hummingbot.strategy.arbitrage.arbitrage.ArbitrageStrategy.c_tick
    self.c_process_market_pair(market_pair)
  File "hummingbot/strategy/arbitrage/arbitrage.pyx", line 390, in hummingbot.strategy.arbitrage.arbitrage.ArbitrageStrategy.c_process_market_pair
    self.c_process_market_pair_inner(
  File "hummingbot/strategy/arbitrage/arbitrage.pyx", line 507, in hummingbot.strategy.arbitrage.arbitrage.ArbitrageStrategy.c_process_market_pair_inner
    profitable_orders = self.c_find_profitable_arbitrage_orders(self._min_profitability,
AttributeError: 'hummingbot.strategy.arbitrage.arbitrage.ArbitrageS' object has no attribute 'c_find_profitable_arbitrage_orders'

There were no other errors in the log file apart from this repeated one, every minute.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: arbitrage: binance + ddex

Screenshots
N/A

Release version
dev.0.6.0, pulled overnight Monday / morning Tuesday Pacific time.

Attachments
N/A

[BUG] wings.async_call_scheduler - ERROR - API call error.

Describe the bug

After starting the bot, the error was logged. It does not appear that this error has prevented the bot from continuing to run.

2019-05-10 22:32:09,650 - wings.async_call_scheduler - ERROR - API call error.
Traceback (most recent call last):
  File "/Users/carlol/Github/coinalpha/hummingbot/wings/async_call_scheduler.py", line 76, in _coro_scheduler
    fut.set_result(await coro)
asyncio.base_futures.InvalidStateError: invalid state

Full log:

2019-05-10 22:32:02,721 - wings.market.binance_market - INFO - Network status has changed to NetworkStatus.CONNECTED. Starting networking...
2019-05-10 22:32:03,009 - hummingbot.strategy.arbitrage.arbitrage - WARNING - Markets are not ready. No arbitrage trading is permitted.
2019-05-10 22:32:09,650 - wings.async_call_scheduler - ERROR - API call error.
Traceback (most recent call last):
  File "/Users/carlol/Github/coinalpha/hummingbot/wings/async_call_scheduler.py", line 76, in _coro_scheduler
    fut.set_result(await coro)
asyncio.base_futures.InvalidStateError: invalid state
2019-05-10 22:32:11,629 - wings.wallet.web3_wallet - INFO - Network status has changed to NetworkStatus.CONNECTED. Starting networking...
2019-05-10 22:32:13,339 - wings.market.ddex_market - INFO - Network status has changed to NetworkStatus.CONNECTED. Starting networking...
2019-05-10 22:32:13,617 - wings.wallet.web3_wallet_backend - INFO - Approval already exists for Dai Stablecoin v1.0 from wallet address <****WALLET****>.
2019-05-10 22:32:13,617 - wings.wallet.web3_wallet_backend - INFO - Approval already exists for Tether USD from wallet address <****WALLET****>.
2019-05-10 22:32:13,617 - wings.wallet.web3_wallet_backend - INFO - Approval already exists for Wrapped Ether from wallet address <****WALLET****>.

Steps To Reproduce

Started arbitrage strategy with binance and ddex.

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: ...
  2. Start the bot using this command: ...
    ...

Screenshots
n/a

Release version

dev/0.6.0 last commit: 0d23b5f May 10, 2019

Attachments

[BUG] Hummingbot hanging after timeout

Describe the bug
Following a timeout "concurrent.futures._base.TimeoutError" the bot apparently freezes internally, although the GUI continues to function.

However the continued user interaction with the GUI is a misleading because the bot remains stuck internally until restarted manually.

The "stop" command followed by the "start" command appears to restore normal operation - but this hang repeats subsequently.

Steps To Reproduce
The exchange/coin pair in the example is DDEX-Binance for BNB-ETH with strategy cross-exchange-market-making. But I have seen similar in other exchange/pair combos.

Screenshots
DDEX_hanging.txt

Release version
dev-0.6.0

[BUG] OSError-Error Fetching Data

Describe the bug
OSError- During handling of the above exception, another exception occurred. Error fetching data, too many requests, please try again later.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: Cross Exchange MM, Maker: RadarRelay, Taker: Binance
  2. Start the bot using this command: Config, Start

Screenshots
hummingbot_bug_2

Release version
Version: 0.5.0

Attachments
N/A

[BUG] Install script fails in Bash for Windows

Describe the bug
When installing Hummingbot in Bash for Windows, the ./install script fails with errors like:

CondaVerificationError: The package for pandas located at /home/feng/anaconda3/pkgs/pandas-0.24.1-py36he6710b0_0        appears to be corrupted. The path 'lib/python3.6/site-packages/pandas/util/testing.py'                                  specified in the package manifest cannot be found.  

No packages are installed.

Steps To Reproduce

  1. Install Windows Subsystem for Linux
  2. Install Ubuntu 18.04
  3. Install Anaconda for Linux in Ubuntu bash
  4. Download Hummingbot client
  5. Run ./install

Release version
0.4.0

[BUG] Crazy order cancellation bug isn't fixed yet on the ask side

Describe the bug
I've found out the crazy order cancellation bug is still not fully fixed for ask orders while writing test cases for it tonight.

If you look carefully at the original fix (https://github.com/CoinAlpha/hummingbot/pull/136/files)... you'll find that the change to cross_exchange_market_making.pyx is missing a critical line towards the end. In particular... profitable_hedge_price is not used in the calculation of ask market making orders. See below

            # Calculate the order size limit from the minimal profitable hedge on the taker market.
            profitable_hedge_price = adjusted_taker_price / (1 + self._min_profitability)
            taker_order_book_size_limit = (taker_order_book.c_get_volume_for_price(True, float(next_price)) *
                                           self._order_size_taker_volume_factor)

That means the bug remains unfixed for ask orders at the moment.

Steps To Reproduce
N/A

[BUG] Error Sending Transaction- The limit order sell has expired.

Describe the bug
Error Sending Transaction. The limit order sell has expired according to order status API.

Steps To Reproduce
Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: Cross Exchange MM, Maker: RadarRelay, Taker: Binance
  2. Start the bot using this command: Config, Start

Screenshots
hummingbot_bug_4

Release version
Version: 0.5.0

Attachments
N/A

[Feature] Add Volume to Dockerfile.

Feature Suggestion
The Dockerfile currently doesn't have any VOLUME references, yet according to the documentation there are two mount points. Consider adding VOLUME lines to the Dockerfile so users looking at the Dockerfile can easily identify what volume mounts they need.

Impact
When looking at a dockerfile, it is valuable to be able to easily identify what parameters are needed to correctly run the resulting Dockerimage. VOLUME lines provide a mechanism for documenting this in a standardized way.

[Question] minimum profitability and order prices irreconcilable

Need an explanation of how order prices are calculated based on available taker prices/order book and minimum profitability.

For example, for XEMM, bid side (make bid order on ddex, take bid order on Binance).
Would assume that the bid price is the cost of hedging x (1 - min_profitability).

expected ddex_bid_price = binance_cost_of_purchase * (1 - min_profitability)

binance_cost_of_purchase = ∑ (binance_bid_price_i x binance_bid_size_i)
where i = 1 to n, such that ∑ binance_bid_size_i = trade_size
  1. What happens if your pricing is the best bid/ask? (seems like the prices are widened to try to capture additional profit), i.e. min_profit_bid_price > actual_bid_price >
  2. What happens if your pricing is not the best bid/ask? (assume it just uses the min_profitability_price).

Screenshots
Image 2019-04-28 at 10 37 10 pm
Image 2019-04-28 at 10 36 58 pm
0a67e9803b6bcf0ab03dca04fc8ca206 _Image 2019-04-28 at 10 36 50 pm

Release version
0.4.0 as of April 28, 2019

[BUG] xemm profitability calculation error

Describe the bug

Bid side of xemm strategy on WETH-DAI / ETH-USDT is reported at -100%, which is not right.

Steps To Reproduce

xemm | binance/ddex | weth-dai | eth-usdt

Screenshots
image

Release version

dev/0.6.0 last commit: 0d23b5f May 10, 2019

Attachments

[BUG] Error fetching data from RadarRelay Orders and Error submitting trade order wings/radar_relay_market

Describe the bug
// A clear and concise description of what the bug is.
Error fetching data from RadarRelay Orders and Error submitting trade order
Steps To Reproduce
// A concise description of the steps to reproduce the buggy behavior along with screenshots:
When trying to put an order in RadarRelay, using cross_exchange_market_making strategy, using RadarRelay (BAT-WETH) as Maker and Binance (BATETH) as Taker with default fees and profitability

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with these parameters: ...
  2. Start the bot using this command: ...
    ...

Screenshots
// If applicable, add screenshots to help explain your problem.
Captura de pantalla 2019-04-24 16 43 51

Release version
// Include your bot's version number (Can be found at the bottom left corner of your CLI).
0.3.1

Attachments
// Attach any relevant configuration files, logs, tx hashes, etc. here.

// NOTE: We understand If you do not want to publish your config/log files. You can instead send them privately to [email protected] and drop a link of this issue in the email.
// WARNING: Do NOT publish any exchange API keys or your wallet's private key. Whoever has access to them may steal your assets!

File Too Short

Describe the bug
Getting error "file too short" import error after command "bin/hummingbot.py". Linux running in Virtual Box on Windows. Anaconda is fully installed, ./install and ./compile commands done with 0 errors, and "conda activate hummingbot" done with 0 errors.

Steps To Reproduce
type "bin/hummingbot.py" in terminal

Screenshots
https://prnt.sc/nerriw

Release version
0.4.0

[wings.market.binance_market] Unexpected error while fetching account updates

Describe the bug
Error message as follows:

wings.market.binance_market - ERROR - Unexpected error while fetching account updates.
Traceback (most recent call last):
  File "wings/market/binance_market.pyx", line 429, in wings.market.binance_market.BinanceMarket.query_api
    return await self.schedule_async_call(coro, self.API_CALL_TIMEOUT)
  File "wings/market/binance_market.pyx", line 424, in schedule_async_call
    return await fut
concurrent.futures._base.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "wings/market/binance_market.pyx", line 704, in wings.market.binance_market.BinanceMarket._status_polling_loop
    await asyncio.gather(
  File "wings/market/binance_market.pyx", line 448, in _update_balances
    account_info = await self.query_api(self._binance_client.get_account)
  File "wings/market/binance_market.pyx", line 427, in query_api
    async with timeout(self.API_CALL_TIMEOUT):
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/async_timeout/__init__.py", line 55, in __aexit__
    self._do_exit(exc_type)
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/async_timeout/__init__.py", line 92, in _do_exit
    raise asyncio.TimeoutError
concurrent.futures._base.TimeoutError

Steps To Reproduce

  • Arbitrage strategy for BAT-ETH between Binance and DDEX

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with the attached parameters.
  2. Start the bot using this command: config, start
    ...

Screenshots
N/A

Release version
0.4.0

Attachments

  1. configuration files
  2. log file

config.zip
hummingbot_logs_2019-04-18-12-05-50 2.log

get_wallet -e and get_wallet c does not work

Describe the bug
'get_wallet -e' and 'get_wallet -c does not show balance or currency
Says -e/--exchange: expects one argument
When typed in
"get_balance -e/--exchange" it says the exchange has not been initialised.
I tried just the get_balance -e it says it expects one argument.
get_balance -w works
Steps To Reproduce

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Configure Binance for USDT/ETH through the Configuration when first statted
  2. Edit Config file for API KEY and secret
  3. Start bot
  4. Ask for the get_wallet throws error about exchange not being initialised
  5. Look up status and bot seems to be running with no orders

Screenshots
Binance get_ balance
Screen Shot 2019-04-22 at 9 29 09 pm
status
Screen Shot 2019-04-22 at 9 30 54 pm

Release version
Version 0.4.0

Failed to install Hummingbot by following installation instructions for Windows

This is Ellie.

I am trying to follow the installation instructions for Hummingbot on Windows. So far I have not been successful in installation so I'll describe what happened. Instructions are taken from here: https://docs.hummingbot.io/installation/docker/ .

I use cmd.exe, but installing I use the bash on Windows, which is not clear to me I'll need to install docker from Docker as an exe, and then the bash system still doesn't able to use Docker, so I realized I have to use cmd.exe.

The command provided on the installation guide is not platform agnostic too:

docker run -it \
--name $NAME \
-v "$PWD"/conf/:/conf/ \
-v "$PWD"/logs/:/logs/ \
coinalpha/hummingbot:$TAG

I ran the following variations:

First, using PWD doesn't work:

C:\Users\marti>docker run --init --name EllieBot2 -v "$PWD"/conf/:/conf/ -v "$PWD"/logs/:/logs/ coinalpha/hummingbot:latest
docker: Error response from daemon: create $PWD/conf: "$PWD/conf" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.

Then, using an absolute path (most natural guess), complains a 'conf' thing.

C:\Users\marti>docker run -i --name EllieBot3 -v C:\Users\Marti\EllieBot\conf\ -v C:\Users\Marti\EllieBot\logs coinalpha/hummingbot:latest
Traceback (most recent call last):
  File "/opt/conda/envs/hummingbot-dist/bin/hummingbot.py", line 28, in <module>
    from hummingbot.cli.hummingbot_application import HummingbotApplication
  File "/opt/conda/envs/hummingbot-dist/lib/python3.6/site-packages/hummingbot/cli/hummingbot_application.py", line 20, in <module>
    from wings.market.binance_market import BinanceMarket
  File "wings/market/binance_market.pyx", line 27, in init wings.market.binance_market
ModuleNotFoundError: No module named 'conf'

Also, "-it" does not work on Windows:

C:\Users\marti>docker run -i --name EllieBot2 -v "$PWD"/conf/:/conf/ -v "$PWD"/logs/:/logs/ coinalpha/hummingbot:latest
docker: Error response from daemon: create $PWD/conf: "$PWD/conf" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.

This is my specs:

  • Windows 10
  • Docker latest (installed from exe)

Expected:

  • I will be able to install Hummingbot to try.

Actual:

  • Unable to install Hummingbot on Windows to try.

[Feature] Use Docker Hub's automated build system.

Feature Suggestion
Docker Hub has an automated build system that can be configured to build from a GitHub repository anytime a particular branch is updated, or a tag is created. Consider using Docker Hub's automated build system rather than your own CI system for publishing new images.

Impact
Automated builds give confidence to the user that the published Dockerimage is the same as the code in the GitHub repository. When images are pushed as part of other CI systems, the user cannot be confident that the code in the repository matches the code in the docker image.

[wings.market.binance_market] - ERROR - API call error

Describe the bug
Error message as follows:

2019-04-18 15:24:50,115 - wings.market.binance_market - ERROR - API call error.
Traceback (most recent call last):
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "/anaconda3/envs/hummingbot/lib/python3.6/http/client.py", line 1331, in getresponse
    response.begin()
  File "/anaconda3/envs/hummingbot/lib/python3.6/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/anaconda3/envs/hummingbot/lib/python3.6/http/client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/anaconda3/envs/hummingbot/lib/python3.6/socket.py", line 586, in readinto
    return self._sock.recv_into(b)
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 309, in recv_into
    return self.recv_into(*args, **kwargs)
  File "/anaconda3/envs/hummingbot/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 299, in recv_into
    raise SocketError(str(e))
OSError: (54, 'ECONNRESET')

During handling of the above exception, another exception occurred:

Steps To Reproduce

  • Arbitrage strategy for BAT-ETH between Binance and DDEX

Here are the steps to reproduce the issue (see attachments in the section below):

  1. Set up your configuration file with the attached configuration parameters.
  2. Start the bot using this command: config and then start.

Screenshots
N/A

Release version
0.4.0

Attachments

  1. configuration files
  2. log file

config.zip
hummingbot_logs_2019-04-18-15-13-14.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.