From 1db0a7d4cefc8f4641c0b320e0a39f38acb0bc87 Mon Sep 17 00:00:00 2001 From: Janne Sinivirta Date: Tue, 14 Nov 2017 20:28:31 +0200 Subject: [PATCH] populate sell signal --- freqtrade/analyze.py | 18 ++++++++++++++++-- freqtrade/tests/test_analyze.py | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/freqtrade/analyze.py b/freqtrade/analyze.py index 3fdfa4ff2..b1279071e 100644 --- a/freqtrade/analyze.py +++ b/freqtrade/analyze.py @@ -7,7 +7,7 @@ import talib.abstract as ta from pandas import DataFrame, to_datetime from freqtrade.exchange import get_ticker_history -from freqtrade.vendor.qtpylib.indicators import awesome_oscillator +from freqtrade.vendor.qtpylib.indicators import awesome_oscillator, crossed_above, crossed_below logger = logging.getLogger(__name__) @@ -62,7 +62,7 @@ def populate_indicators(dataframe: DataFrame) -> DataFrame: def populate_buy_trend(dataframe: DataFrame) -> DataFrame: """ - Based on TA indicators, populates the buy trend for the given dataframe + Based on TA indicators, populates the buy signal for the given dataframe :param dataframe: DataFrame :return: DataFrame with buy column """ @@ -77,6 +77,19 @@ def populate_buy_trend(dataframe: DataFrame) -> DataFrame: return dataframe +def populate_sell_trend(dataframe: DataFrame) -> DataFrame: + """ + Based on TA indicators, populates the sell signal for the given dataframe + :param dataframe: DataFrame + :return: DataFrame with buy column + """ + dataframe.ix[ + (crossed_above(dataframe['rsi'], 70)), + 'sell'] = 1 + dataframe.ix[dataframe['sell'] == 1, 'sell_price'] = dataframe['close'] + + return dataframe + def analyze_ticker(pair: str) -> DataFrame: """ @@ -92,6 +105,7 @@ def analyze_ticker(pair: str) -> DataFrame: dataframe = parse_ticker_dataframe(ticker_hist) dataframe = populate_indicators(dataframe) dataframe = populate_buy_trend(dataframe) + dataframe = populate_sell_trend(dataframe) return dataframe diff --git a/freqtrade/tests/test_analyze.py b/freqtrade/tests/test_analyze.py index 741e72191..7b8c07490 100644 --- a/freqtrade/tests/test_analyze.py +++ b/freqtrade/tests/test_analyze.py @@ -37,3 +37,13 @@ def test_returns_latest_buy_signal(mocker): buydf = DataFrame([{'buy': 0, 'date': datetime.today()}]) mocker.patch('freqtrade.analyze.analyze_ticker', return_value=buydf) assert not get_signal('BTC-ETH', SignalType.BUY) + + +def test_returns_latest_sell_signal(mocker): + selldf = DataFrame([{'sell': 1, 'date': datetime.today()}]) + mocker.patch('freqtrade.analyze.analyze_ticker', return_value=selldf) + assert get_signal('BTC-ETH', SignalType.SELL) + + selldf = DataFrame([{'sell': 0, 'date': datetime.today()}]) + mocker.patch('freqtrade.analyze.analyze_ticker', return_value=selldf) + assert not get_signal('BTC-ETH', SignalType.SELL)