Skip to content

Commit

Permalink
Merge pull request freqtrade#79 from gcarq/qtpylib
Browse files Browse the repository at this point in the history
Include new indicators from qtpylib
  • Loading branch information
shusso authored Oct 27, 2017
2 parents e0fde86 + e401a01 commit 0c33e91
Show file tree
Hide file tree
Showing 4 changed files with 633 additions and 19 deletions.
3 changes: 3 additions & 0 deletions freqtrade/analyze.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import arrow
import talib.abstract as ta
from pandas import DataFrame
from qtpylib.indicators import awesome_oscillator, crossed_above

from freqtrade import exchange
from freqtrade.exchange import Bittrex, get_ticker_history
Expand Down Expand Up @@ -41,6 +42,8 @@ def populate_indicators(dataframe: DataFrame) -> DataFrame:
dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
dataframe['mfi'] = ta.MFI(dataframe)
dataframe['cci'] = ta.CCI(dataframe)
dataframe['ao'] = awesome_oscillator(dataframe)

return dataframe


Expand Down
25 changes: 7 additions & 18 deletions freqtrade/tests/test_analyze.py
Original file line number Diff line number Diff line change
@@ -1,36 +1,25 @@
# pragma pylint: disable=missing-docstring
import json
import pytest
import arrow
from pandas import DataFrame

from freqtrade.analyze import parse_ticker_dataframe, populate_buy_trend, populate_indicators, \
get_buy_signal

RESULT_BITTREX = {
'success': True,
'message': '',
'result': [
{'O': 0.00065311, 'H': 0.00065311, 'L': 0.00065311, 'C': 0.00065311, 'V': 22.17210568, 'T': '2017-08-30T10:40:00', 'BV': 0.01448082},
{'O': 0.00066194, 'H': 0.00066195, 'L': 0.00066194, 'C': 0.00066195, 'V': 33.4727437, 'T': '2017-08-30T10:34:00', 'BV': 0.02215696},
{'O': 0.00065311, 'H': 0.00065311, 'L': 0.00065311, 'C': 0.00065311, 'V': 53.85127609, 'T': '2017-08-30T10:37:00', 'BV': 0.0351708},
{'O': 0.00066194, 'H': 0.00066194, 'L': 0.00065311, 'C': 0.00065311, 'V': 46.29210665, 'T': '2017-08-30T10:42:00', 'BV': 0.03063118},
]
}

@pytest.fixture
def result():
return parse_ticker_dataframe(RESULT_BITTREX['result'], arrow.get('2017-08-30T10:00:00'))
with open('freqtrade/tests/testdata/btc-eth.json') as data_file:
data = json.load(data_file)

return parse_ticker_dataframe(data['result'], arrow.get('2017-08-30T10:00:00'))

def test_dataframe_has_correct_columns(result):
assert result.columns.tolist() == \
['close', 'high', 'low', 'open', 'date', 'volume']

def test_orders_by_date(result):
assert result['date'].tolist() == \
['2017-08-30T10:34:00',
'2017-08-30T10:37:00',
'2017-08-30T10:40:00',
'2017-08-30T10:42:00']
def test_dataframe_has_correct_length(result):
assert len(result.index) == 5751

def test_populates_buy_trend(result):
dataframe = populate_buy_trend(populate_indicators(result))
Expand Down
5 changes: 4 additions & 1 deletion freqtrade/tests/test_hyperopt.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import pytest
import arrow
from pandas import DataFrame
from qtpylib.indicators import crossed_above

from hyperopt import fmin, tpe, hp

Expand Down Expand Up @@ -63,6 +64,7 @@ def populate_buy_trend(dataframe: DataFrame) -> DataFrame:
triggers = {
'lower_bb': dataframe['tema'] <= dataframe['blower'],
'faststoch10': (dataframe['fastd'] >= 10) & (prev_fastd < 10),
'ao_cross_zero': (crossed_above(dataframe['ao'], 0.0)),
}
conditions.append(triggers.get(params['trigger']['type']))

Expand Down Expand Up @@ -124,7 +126,8 @@ def optimizer(params):
]),
'trigger': hp.choice('trigger', [
{'type': 'lower_bb'},
{'type': 'faststoch10'}
{'type': 'faststoch10'},
{'type': 'ao_cross_zero'}
]),
}
print('Best parameters {}'.format(fmin(fn=optimizer, space=space, algo=tpe.suggest, max_evals=40)))
Loading

0 comments on commit 0c33e91

Please sign in to comment.