diff --git a/finlab_crypto/chart.py b/finlab_crypto/chart.py index 69ef3dd..8c27d77 100755 --- a/finlab_crypto/chart.py +++ b/finlab_crypto/chart.py @@ -127,7 +127,7 @@ def chart(dfstock, overlaps=dict(), figures=dict(), markers=dict(), markerlines= .add_xaxis(xaxis_data=dfstock.index.astype(str).to_list()) .add_yaxis( series_name="volume", - yaxis_data=dfstock.volume.loc[start_date:end_date].to_list(), + y_axis=dfstock.volume.loc[start_date:end_date].to_list(), xaxis_index=1, yaxis_index=1, label_opts=opts.LabelOpts(is_show=False), @@ -187,7 +187,7 @@ def item_to_chart(name, item): chart.add_xaxis(xaxis_data=index) chart.add_yaxis( series_name=name, - yaxis_data=values, + y_axis=values, #xaxis_index=1, #yaxis_index=1, label_opts=opts.LabelOpts(is_show=False), diff --git a/finlab_crypto/indicators.py b/finlab_crypto/indicators.py index f1387d4..a63e73f 100644 --- a/finlab_crypto/indicators.py +++ b/finlab_crypto/indicators.py @@ -71,6 +71,7 @@ def linear_reg(price, n): trends = { 'sma': sma, 'wma': wma, + 'highpass' : highpass, 'lowpass': lowpass, 'hullma': hullma, 'zlma': zlma, diff --git a/finlab_crypto/strategy.py b/finlab_crypto/strategy.py index ab9b60f..7269d66 100755 --- a/finlab_crypto/strategy.py +++ b/finlab_crypto/strategy.py @@ -48,9 +48,10 @@ def __init__(self, **default_parameters): """inits filter.""" self.func = None self._variables = None + self._default_parameters = None self.filters = {} - self._default_parameters = default_parameters self.set_parameters(default_parameters) + self._default_parameters = default_parameters def __call__(self, func): """decorator function @@ -143,8 +144,9 @@ def __init__(self, **default_parameters): """inits strategy.""" self.filters = {} self._variables = None - self._default_parameters = default_parameters + self._default_parameters = None self.set_parameters(default_parameters) + self._default_parameters = default_parameters def __call__(self, func): """decorator function diff --git a/finlab_crypto/utility.py b/finlab_crypto/utility.py index 93878b3..3ba779b 100644 --- a/finlab_crypto/utility.py +++ b/finlab_crypto/utility.py @@ -8,6 +8,7 @@ import seaborn as sns import pandas as pd import numpy as np +import numbers import copy import os @@ -15,6 +16,16 @@ from . import overfitting +def crossover(s1, s2): + if isinstance(s2, numbers.Number): + return (s1 > s2) & (s1.shift() < s2) + return (s1 > s2) & (s1.shift() < s2.shift()) + +def crossunder(s1, s2): + if isinstance(s2, numbers.Number): + return (s1 < s2) & (s1.shift() > s2) + return (s1 < s2) & (s1.shift() > s2.shift()) + def is_evalable(obj): try: eval(str(obj)) @@ -46,7 +57,10 @@ def enumerate_variables(variables): and not isinstance(v, pd.DataFrame)): enumeration_name.append(name) - enumeration_vars.append(v) + if (isinstance(v, np.ndarray)): + enumeration_vars.append(v.tolist()) + else: + enumeration_vars.append(v) else: constant_d[name] = v