Exemple #1
0
 def test_is_close_up(self):
     df = pdDF(data={
         'open': [1., 2., 3., 4.],
         'close': [1.1, 2.1, 0.1, 4.1]
     })
     val = KlineFeatures.is_close_up(df)
     assert np.allclose(val, [True, True, False, True])
Exemple #2
0
 def test_ochl_features(self):
     df = pdDF(
         data={
             'open': [1., 2., 3., 4.],
             'close': [1.1, 2.1, 3.1, 4.1],
             'high': [1.2, 2.2, 3.3, 4.4],
             'low': [0.1, 0.2, 0.3, 0.4]
         })
     o, c, h, l = KlineFeatures.ochl_features(df)
     assert o[0] == 1.
     assert c[0] == 1.1
     assert h[0] == 1.2
     assert l[0] == 0.1
Exemple #3
0
    def update_realtime_stock_info(self) -> pdDF:
        stock_list = []
        for k, v in self._monitored_stock_map.items():
            stock_list.extend(v)

        if not stock_list:
            return pdDF()
        try:
            self._df_realtime_stock_info = sina_api.get_realtime_stock_infos(
                stock_list)
        except:
            mylog.warn(f'Can not query realtime info from sina api')
        return self._df_realtime_stock_info
Exemple #4
0
 def extract_result(content_list: str):
     find_results = re.finditer(r'var hq_str_(..\d{6})="(.*)";',
                                content_list)
     stock_codes = []
     attrs = []
     for v in find_results:
         stock_codes.append(CodeTools.to_pcode(v[1]))
         content = v[2].split(',')
         content = content[0:6]
         content.append(content.pop(0))
         attrs.append(content)
     df = pdDF(attrs, index=stock_codes, columns=_column_names, dtype=float)
     df['name'] = df['name'].astype(str)
     return df
Exemple #5
0
    def test_day_compare_features(self):
        df = pdDF(
            data={
                'open': [1., 2., 3., 4.],
                'close': [1.1, 2.1, 3.1, 4.1],
                'high': [1., 2.1, 3.2, 4.3],
                'low': [0.1, 0.2, 0.3, 0.4]
            })
        fs = KlineFeatures.day_compare_features(df)
        result = np.asarray([*fs])
        test_result = np.asarray([[
            1.,
            0.95,
            0.93333333,
            0.925,
        ], [
            1.1,
            1.,
            0.96666667,
            0.95,
        ], [0., 0.45, 0.6, 0.675], [
            0.,
            0.5,
            0.63333333,
            0.7,
        ], [1., 1., 1., 1.], [
            0.1,
            0.05,
            0.03333333,
            0.025,
        ], [
            0.,
            0.45,
            0.63333333,
            0.725,
        ], [0., 0., 0., 0.]])

        assert np.all(result - test_result < 0.0001)
Exemple #6
0
def _np_compound_arr_to_df(arr):
    val = pdDF(arr)
    val['datetime'] = (val['datetime'] / 1000000).astype(numpy.int64)
    val.set_index('datetime', inplace=True)
    return val
Exemple #7
0
 def test_up_day_count_of_previous_days(self):
     df = pdDF(data={'close': np.asarray([0, 1, 2, 1, 0, 1, 0])})
     val = KlineFeatures.up_count_of_previous_days(df)
     np.array_equal(val, [0, 0, 1, 2, 0, 0, 1])
Exemple #8
0
 def test_jump_value(self):
     df = pdDF(data={'high': [2, 4, 1.3, 1.4], 'low': [0.1, 2.2, 0.3, 0.4]})
     jump_values = KlineFeatures.jump_value(df)
     assert np.allclose(jump_values, [0.1, 0.2, -0.9, 0.])
Exemple #9
0
 def test_is_up_inday(self):
     df = pdDF(data={'open': [1, 2, 0], 'close': [2, 1, 0]})
     val = KlineFeatures.is_up_inday(df)
     np.array_equal(val, [True, False, False])