Merge pull request #13 from gcarq/develop

Update from upstream repo gcarq/freqtrade@develop
This commit is contained in:
Gert Wohlgemuth 2018-06-01 20:31:41 -07:00 committed by GitHub
commit 770b05eb42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 79 additions and 32 deletions

View File

@ -317,8 +317,10 @@ class RPC(object):
and order['side'] == 'buy':
exchange.cancel_order(trade.open_order_id, trade.pair)
trade.close(order.get('price') or trade.open_rate)
# TODO: sell amount which has been bought already
# Do the best effort, if we don't know 'filled' amount, don't try selling
if order['filled'] is None:
return
trade.amount = order['filled']
# Ignore trades with an attached LIMIT_SELL order
if order and order['status'] == 'open' \

View File

@ -450,20 +450,44 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None:
freqtradebot.state = State.RUNNING
assert cancel_order_mock.call_count == 0
# make an limit-buy open trade
trade = Trade.query.filter(Trade.id == '1').first()
filled_amount = trade.amount / 2
mocker.patch(
'freqtrade.freqtradebot.exchange.get_order',
return_value={
'status': 'open',
'type': 'limit',
'side': 'buy'
'side': 'buy',
'filled': filled_amount
}
)
# check that the trade is called, which is done
# by ensuring exchange.cancel_order is called
# check that the trade is called, which is done by ensuring exchange.cancel_order is called
# and trade amount is updated
(error, res) = rpc.rpc_forcesell('1')
assert not error
assert res == ''
assert cancel_order_mock.call_count == 1
assert trade.amount == filled_amount
freqtradebot.create_trade()
trade = Trade.query.filter(Trade.id == '2').first()
amount = trade.amount
# make an limit-buy open trade, if there is no 'filled', don't sell it
mocker.patch(
'freqtrade.freqtradebot.exchange.get_order',
return_value={
'status': 'open',
'type': 'limit',
'side': 'buy',
'filled': None
}
)
# check that the trade is called, which is done by ensuring exchange.cancel_order is called
(error, res) = rpc.rpc_forcesell('2')
assert not error
assert res == ''
assert cancel_order_mock.call_count == 2
assert trade.amount == amount
freqtradebot.create_trade()
# make an limit-sell open trade
@ -475,11 +499,11 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None:
'side': 'sell'
}
)
(error, res) = rpc.rpc_forcesell('2')
(error, res) = rpc.rpc_forcesell('3')
assert not error
assert res == ''
# status quo, no exchange calls
assert cancel_order_mock.call_count == 1
assert cancel_order_mock.call_count == 2
def test_performance_handle(default_conf, ticker, limit_buy_order, fee,

View File

@ -2,16 +2,17 @@
#encoding=utf8
function updateenv () {
echo "
-------------------------
Update your virtual env
-------------------------
"
echo "-------------------------"
echo "Update your virtual env"
echo "-------------------------"
source .env/bin/activate
pip3.6 install --upgrade pip
pip3 install -r requirements.txt --upgrade
pip3 install -r requirements.txt
pip3 install -e .
echo "pip3 install in-progress. Please wait..."
pip3.6 install --quiet --upgrade pip
pip3 install --quiet -r requirements.txt --upgrade
pip3 install --quiet -r requirements.txt
pip3 install --quiet -e .
echo "pip3 install completed"
echo
}
# Install tab lib
@ -29,10 +30,11 @@ function install_macos () {
echo "-------------------------"
echo "Install Brew"
echo "-------------------------"
echo
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
brew install python3 wget ta-lib
test_and_fix_python_on_mac
}
# Install bot Debian_ubuntu
@ -54,7 +56,6 @@ function reset () {
echo "----------------------------"
echo "Reset branch and virtual env"
echo "----------------------------"
echo
if [ "1" == $(git branch -vv |grep -cE "\* develop|\* master") ]
then
if [ -d ".env" ]; then
@ -77,18 +78,30 @@ function reset () {
echo "Reset ignored because you are not on 'master' or 'develop'."
fi
echo
python3.6 -m venv .env
updateenv
}
function test_and_fix_python_on_mac() {
if ! [ -x "$(command -v python3.6)" ]
then
echo "-------------------------"
echo "Fixing Python"
echo "-------------------------"
echo "Python 3.6 is not linked in your system. Fixing it..."
brew link --overwrite python
echo
fi
}
function config_generator () {
echo "Starting to generate config.json"
echo "-------------------------"
echo
echo "General configuration"
echo "-------------------------"
echo
default_max_trades=3
read -p "Max open trades: (Default: $default_max_trades) " max_trades
max_trades=${max_trades:-$default_max_trades}
@ -105,14 +118,13 @@ function config_generator () {
read -p "Fiat currency: (Default: $default_fiat_currency) " fiat_currency
fiat_currency=${fiat_currency:-$default_fiat_currency}
echo "------------------------"
echo "Bittrex config generator"
echo "------------------------"
echo
echo "Exchange config generator"
echo "------------------------"
read -p "Exchange API key: " api_key
read -p "Exchange API Secret: " api_secret
echo "-------------------------"
echo
echo "Telegram config generator"
echo "-------------------------"
read -p "Telegram Token: " token
@ -131,6 +143,10 @@ function config_generator () {
}
function config () {
echo "-------------------------"
echo "Config file generator"
echo "-------------------------"
if [ -f config.json ]
then
read -p "A config file already exist, do you want to override it [Y/N]? "
@ -144,22 +160,26 @@ function config () {
config_generator
fi
echo
echo "-------------------------"
echo "Config file generated"
echo "-------------------------"
echo "Edit ./config.json to modify Pair and other configurations."
echo
}
function install () {
echo "-------------------------"
echo "Install mandatory dependencies"
echo "-------------------------"
echo
if [ "$(uname -s)" == "Darwin" ]
then
echo "- You are on macOS"
echo "macOS detected. Setup for this system in-progress"
install_macos
elif [ -x "$(command -v apt-get)" ]
then
echo "- You are on Debian/Ubuntu"
echo "Debian/Ubuntu detected. Setup for this system in-progress"
install_debian
else
echo "This script does not support your OS."
@ -167,12 +187,13 @@ function install () {
echo "Wait 10 seconds to continue the next install steps or use ctrl+c to interrupt this shell."
sleep 10
fi
echo
reset
echo "
- Install complete.
"
config
echo "You can now use the bot by executing 'source .env/bin/activate; python3 freqtrade/main.py'."
echo "-------------------------"
echo "Run the bot"
echo "-------------------------"
echo "You can now use the bot by executing 'source .env/bin/activate; python3.6 freqtrade/main.py'."
}
function plot () {