From cbe78ea62a0055fa2df15d904901205b2cb2b2b1 Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Tue, 15 Dec 2020 01:00:57 +0800 Subject: [PATCH 1/9] Update strategy.py --- finlab_crypto/strategy.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/finlab_crypto/strategy.py b/finlab_crypto/strategy.py index 37aeb18..468f4e1 100755 --- a/finlab_crypto/strategy.py +++ b/finlab_crypto/strategy.py @@ -48,7 +48,9 @@ def __init__(self, **default_parameters): """inits filter.""" self.func = None self._variables = None + self._default_parameters = None self.filters = {} + self.set_parameters(default_parameters) self._default_parameters = default_parameters @@ -143,6 +145,8 @@ def __init__(self, **default_parameters): """inits strategy.""" self.filters = {} self._variables = None + self._default_parameters = None + self.set_parameters(default_parameters) self._default_parameters = default_parameters From 0bb2bf2ba85048b4b56784abd44bd0bd1ced950f Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 13:16:46 +0800 Subject: [PATCH 2/9] Update utility.py fix : expect int but got int64 problem --- finlab_crypto/utility.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 From b2c937e54125646c3d56d9dacebbb00b62b8861a Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 13:18:55 +0800 Subject: [PATCH 3/9] Update chart.py support pyecharts == 1.9.0 --- finlab_crypto/chart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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), From bb0573c6ac3f6355ced5cea4793eb03d6686169f Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 13:38:35 +0800 Subject: [PATCH 4/9] Revert "Update chart.py" This reverts commit b2c937e54125646c3d56d9dacebbb00b62b8861a. --- finlab_crypto/chart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/finlab_crypto/chart.py b/finlab_crypto/chart.py index 8c27d77..69ef3dd 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", - y_axis=dfstock.volume.loc[start_date:end_date].to_list(), + yaxis_data=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, - y_axis=values, + yaxis_data=values, #xaxis_index=1, #yaxis_index=1, label_opts=opts.LabelOpts(is_show=False), From 2ae6bd89c934897f4c419abed273040f3c007a24 Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 13:42:12 +0800 Subject: [PATCH 5/9] Revert "Update utility.py" This reverts commit 0bb2bf2ba85048b4b56784abd44bd0bd1ced950f. --- finlab_crypto/utility.py | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/finlab_crypto/utility.py b/finlab_crypto/utility.py index 3ba779b..93878b3 100644 --- a/finlab_crypto/utility.py +++ b/finlab_crypto/utility.py @@ -8,7 +8,6 @@ import seaborn as sns import pandas as pd import numpy as np -import numbers import copy import os @@ -16,16 +15,6 @@ 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)) @@ -57,10 +46,7 @@ def enumerate_variables(variables): and not isinstance(v, pd.DataFrame)): enumeration_name.append(name) - if (isinstance(v, np.ndarray)): - enumeration_vars.append(v.tolist()) - else: - enumeration_vars.append(v) + enumeration_vars.append(v) else: constant_d[name] = v From 9adaba5c7b55ff2ba36acf49032396d6c698daa2 Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 13:49:03 +0800 Subject: [PATCH 6/9] Update utility.py fix : expect int but got int64 problem --- finlab_crypto/utility.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 From 81a05e3a72d63c59eaead212522b9cfd1fa6f98a Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 14:09:07 +0800 Subject: [PATCH 7/9] Update strategy.py set default parameter --- finlab_crypto/strategy.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/finlab_crypto/strategy.py b/finlab_crypto/strategy.py index 7622896..7269d66 100755 --- a/finlab_crypto/strategy.py +++ b/finlab_crypto/strategy.py @@ -50,8 +50,8 @@ def __init__(self, **default_parameters): 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 @@ -144,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 From 366bc61889bdc41863634515bc05e57a98312c83 Mon Sep 17 00:00:00 2001 From: yaotechuang Date: Wed, 16 Dec 2020 14:11:03 +0800 Subject: [PATCH 8/9] Update chart.py support pyecharts == 1.9.0 --- finlab_crypto/chart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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), From b712a6ec5f1ede9ae0f37cadfaaa2d4cf7a3b6a7 Mon Sep 17 00:00:00 2001 From: yaotechuang <47166098+yaotechuang@users.noreply.github.com> Date: Fri, 18 Dec 2020 11:38:34 +0800 Subject: [PATCH 9/9] Update indicators.py add highpass to trends dict --- finlab_crypto/indicators.py | 1 + 1 file changed, 1 insertion(+) 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,