Merge pull request #913 from freqtrade/apply-qtpylib-updates
Apply qtpylib upstream changes
This commit is contained in:
commit
d7e7ef11f9
61
freqtrade/vendor/qtpylib/indicators.py
vendored
61
freqtrade/vendor/qtpylib/indicators.py
vendored
@ -110,10 +110,13 @@ def heikinashi(bars):
|
|||||||
bars = bars.copy()
|
bars = bars.copy()
|
||||||
bars['ha_close'] = (bars['open'] + bars['high'] +
|
bars['ha_close'] = (bars['open'] + bars['high'] +
|
||||||
bars['low'] + bars['close']) / 4
|
bars['low'] + bars['close']) / 4
|
||||||
|
|
||||||
bars['ha_open'] = (bars['open'].shift(1) + bars['close'].shift(1)) / 2
|
bars['ha_open'] = (bars['open'].shift(1) + bars['close'].shift(1)) / 2
|
||||||
bars.loc[:1, 'ha_open'] = bars['open'].values[0]
|
bars.loc[:1, 'ha_open'] = bars['open'].values[0]
|
||||||
bars.loc[1:, 'ha_open'] = (
|
for x in range(2):
|
||||||
(bars['ha_open'].shift(1) + bars['ha_close'].shift(1)) / 2)[1:]
|
bars.loc[1:, 'ha_open'] = (
|
||||||
|
(bars['ha_open'].shift(1) + bars['ha_close'].shift(1)) / 2)[1:]
|
||||||
|
|
||||||
bars['ha_high'] = bars.loc[:, ['high', 'ha_open', 'ha_close']].max(axis=1)
|
bars['ha_high'] = bars.loc[:, ['high', 'ha_open', 'ha_close']].max(axis=1)
|
||||||
bars['ha_low'] = bars.loc[:, ['low', 'ha_open', 'ha_close']].min(axis=1)
|
bars['ha_low'] = bars.loc[:, ['low', 'ha_open', 'ha_close']].min(axis=1)
|
||||||
|
|
||||||
@ -248,45 +251,36 @@ def crossed_below(series1, series2):
|
|||||||
|
|
||||||
def rolling_std(series, window=200, min_periods=None):
|
def rolling_std(series, window=200, min_periods=None):
|
||||||
min_periods = window if min_periods is None else min_periods
|
min_periods = window if min_periods is None else min_periods
|
||||||
try:
|
if min_periods == window and len(series) > window:
|
||||||
if min_periods == window:
|
return numpy_rolling_std(series, window, True)
|
||||||
return numpy_rolling_std(series, window, True)
|
else:
|
||||||
else:
|
try:
|
||||||
try:
|
return series.rolling(window=window, min_periods=min_periods).std()
|
||||||
return series.rolling(window=window, min_periods=min_periods).std()
|
except BaseException:
|
||||||
except BaseException:
|
return pd.Series(series).rolling(window=window, min_periods=min_periods).std()
|
||||||
return pd.Series(series).rolling(window=window, min_periods=min_periods).std()
|
|
||||||
except BaseException:
|
|
||||||
return pd.rolling_std(series, window=window, min_periods=min_periods)
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
def rolling_mean(series, window=200, min_periods=None):
|
def rolling_mean(series, window=200, min_periods=None):
|
||||||
min_periods = window if min_periods is None else min_periods
|
min_periods = window if min_periods is None else min_periods
|
||||||
try:
|
if min_periods == window and len(series) > window:
|
||||||
if min_periods == window:
|
return numpy_rolling_mean(series, window, True)
|
||||||
return numpy_rolling_mean(series, window, True)
|
else:
|
||||||
else:
|
try:
|
||||||
try:
|
return series.rolling(window=window, min_periods=min_periods).mean()
|
||||||
return series.rolling(window=window, min_periods=min_periods).mean()
|
except BaseException:
|
||||||
except BaseException:
|
return pd.Series(series).rolling(window=window, min_periods=min_periods).mean()
|
||||||
return pd.Series(series).rolling(window=window, min_periods=min_periods).mean()
|
|
||||||
except BaseException:
|
|
||||||
return pd.rolling_mean(series, window=window, min_periods=min_periods)
|
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
def rolling_min(series, window=14, min_periods=None):
|
def rolling_min(series, window=14, min_periods=None):
|
||||||
min_periods = window if min_periods is None else min_periods
|
min_periods = window if min_periods is None else min_periods
|
||||||
try:
|
try:
|
||||||
try:
|
return series.rolling(window=window, min_periods=min_periods).min()
|
||||||
return series.rolling(window=window, min_periods=min_periods).min()
|
|
||||||
except BaseException:
|
|
||||||
return pd.Series(series).rolling(window=window, min_periods=min_periods).min()
|
|
||||||
except BaseException:
|
except BaseException:
|
||||||
return pd.rolling_min(series, window=window, min_periods=min_periods)
|
return pd.Series(series).rolling(window=window, min_periods=min_periods).min()
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
@ -294,12 +288,9 @@ def rolling_min(series, window=14, min_periods=None):
|
|||||||
def rolling_max(series, window=14, min_periods=None):
|
def rolling_max(series, window=14, min_periods=None):
|
||||||
min_periods = window if min_periods is None else min_periods
|
min_periods = window if min_periods is None else min_periods
|
||||||
try:
|
try:
|
||||||
try:
|
return series.rolling(window=window, min_periods=min_periods).min()
|
||||||
return series.rolling(window=window, min_periods=min_periods).min()
|
|
||||||
except BaseException:
|
|
||||||
return pd.Series(series).rolling(window=window, min_periods=min_periods).min()
|
|
||||||
except BaseException:
|
except BaseException:
|
||||||
return pd.rolling_min(series, window=window, min_periods=min_periods)
|
return pd.Series(series).rolling(window=window, min_periods=min_periods).min()
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
@ -566,9 +557,9 @@ def stoch(df, window=14, d=3, k=3, fast=False):
|
|||||||
|
|
||||||
return pd.DataFrame(index=df.index, data=data)
|
return pd.DataFrame(index=df.index, data=data)
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
def zscore(bars, window=20, stds=1, col='close'):
|
def zscore(bars, window=20, stds=1, col='close'):
|
||||||
""" get zscore of price """
|
""" get zscore of price """
|
||||||
std = numpy_rolling_std(bars[col], window)
|
std = numpy_rolling_std(bars[col], window)
|
||||||
|
Loading…
Reference in New Issue
Block a user