示例#1
0
    def get_bool_average(self, average_data):
        self.average_data = average_data
        length = len(average_data)

        ref_al = REF(average_data, 1).series[length - 500 - 1:]
        ref_al_2 = REF(average_data, 2).series[length - 500 - 2:]
        average_line = average_data.series[length - 500:]
        if (len(average_line) != len(ref_al)):
            return None, None

        ref_bool_data_position_2 = np.where(ref_al < ref_al_2)
        ref_bool_data_position = np.where(ref_al < average_line)
        intersect1d_list = np.intersect1d(ref_bool_data_position_2,
                                          ref_bool_data_position)
        self.average_axis_buy = {}
        temp1 = np.where(average_line < 0.5)[-1]
        self.average_axis_buy["X"] = np.intersect1d(intersect1d_list,
                                                    temp1)  # 买点 小于 0.5
        self.average_axis_buy["Z"] = average_line[self.average_axis_buy["X"]]
        self.average_axis_sell = {}
        self.average_axis_sell["X"] = np.where(average_line < ref_al)[-1]

        ref_data = average_line - ref_al
        ref_bool_data = ref_data > 0 if True else False

        average_map = {}
        average_map["X"] = self.average_axis_buy["X"]
        average_map["Y"] = self.average_axis_buy["Z"]
        average_map["C"] = "#DC143C"
        self.additional_average_map_list.append(average_map)

        return ref_bool_data, average_line
示例#2
0
    def get_buy_bottomUp_flag_list(self):
        intersect1d_list = self.average_axis_buy["X"]

        ref_ma3_1 = REF(self.ma3, 1)
        ref_ma3_2 = REF(self.ma3, 2)
        ma3_up_flag = np.where(
            self.ma3.series[-500:] > ref_ma3_1.series[-500:])
        ma3_down_flag = np.where(
            ref_ma3_2.series[-500:] > ref_ma3_1.series[-500:])

        right_flag = np.intersect1d(ma3_up_flag, ma3_down_flag)

        X = self.X
        my_close_list = np.array(X[:, 4], dtype=np.float)
        my_close_list = pd.Series(my_close_list)
        close_data = np.array(my_close_list)
        close_data = NumericSeries(close_data)

        my_open_list = np.array(X[:, 1], dtype=np.float)
        my_open_list = pd.Series(my_open_list)
        open_data = np.array(my_open_list)
        open_data = NumericSeries(open_data)

        columns = np.abs(my_close_list / my_open_list - 1)
        columns = columns[-500:]

        wanted_columns1 = np.where(0.0005 < columns)[0]
        wanted_columns2 = np.where(columns < 0.005)[0]
        wanted_columns = np.intersect1d(wanted_columns1, wanted_columns2)
        right_flag = np.intersect1d(right_flag, wanted_columns)
        right_flag = np.intersect1d(right_flag, intersect1d_list)

        #高价等差
        hhv_20 = HHV(self.ma3, 50)
        hhv_rate_list = hhv_20 / close_data
        hhv_rate_list = hhv_rate_list.series[-500:]
        hhv_rate_list_flag = np.where(hhv_rate_list > 1.05)
        right_flag = np.intersect1d(right_flag, hhv_rate_list_flag)

        self.zhibiao_axis_map = {}
        self.zhibiao_axis_map["X"] = right_flag
        my_close_list = my_close_list.values[-500:]
        self.zhibiao_axis_map["Y"] = my_close_list[right_flag]

        numbers_columns = {}
        numbers_columns["X"] = np.where(columns > 0.01)[0]
        numbers_columns["Y"] = my_close_list[numbers_columns["X"]]
        numbers_columns["Z"] = columns.values[numbers_columns["X"]]
        self.additional_map_list.append(numbers_columns)
        self.get_top_flag_position_list()
        if len(right_flag) > 0:
            flag = right_flag[-1] == 499
            return flag

        return False
示例#3
0
    def get_top_flag_position_list(self):
        abs_close_list = self.abs_close_list()
        close_series = NumericSeries(abs_close_list)
        ref_close_2 = REF(close_series, 2)
        ref_close_1 = REF(close_series, 1)

        list1 = np.where(ref_close_1.series[-500:] > ref_close_2.series[-500:])
        list2 = np.where(
            ref_close_1.series[-500:] > close_series.series[-500:])

        intersect1d_list = np.intersect1d(list1, list2)
        self.top_flag_position_list = intersect1d_list
示例#4
0
    def getMountainAverage(self, my_close_list):
        temp = NumericSeries(self.average_axis_buy["Z"])
        ref_temp = REF(temp, 1)
        size = ref_temp.series.size
        if (size < 1):
            return False
        temp = temp.series[-size:]
        temp_average = self.average_data.series[-500:]
        buy_axis = {}
        buy_axis["X"] = []
        buy_axis["Y"] = []
        buy_axis["Z"] = []
        #找出买点
        point_save = 0

        for i in range(size):
            if i + 1 <= size and i >= point_save:
                i1 = self.average_axis_buy["X"][i]
                value_i1 = temp[i]

                for j in range(i + 1, size):
                    j1 = self.average_axis_buy["X"][j]
                    value_j1 = temp[j]
                    gap_length = j1 - i1
                    if (gap_length < 100 and gap_length > 20):
                        gap_abs = np.abs(value_i1 - value_j1)
                        if (gap_abs < 0.08):
                            #找出两点之间最高值
                            temp_y = temp_average[i1:j1]
                            temp_area = sum(temp_y) - value_i1 * (len(temp_y) -
                                                                  2)

                            if temp_area > 0:
                                buy_axis["X"].append(i1)
                                buy_axis["X"].append(j1)
                                buy_axis["Y"].append(value_i1)
                                buy_axis["Y"].append(value_j1)
                                buy_axis["Z"].append(temp_area)
                                buy_axis["Z"].append(temp_area)
                                point_save = j
                            break

        if len(buy_axis["X"]) == 0:
            return False

        temp_map = {}
        temp_map["X"] = np.array(buy_axis["X"])
        temp_map["Y"] = temp_average[temp_map["X"]]
        temp_map["Z"] = np.array(buy_axis["Z"])
        temp_map["C"] = "#0A0A0A"
        self.additional_average_map_list.append(temp_map)
        temp_map2 = {}
        temp_map2["X"] = temp_map["X"]
        temp_map2["Y"] = my_close_list[temp_map2["X"]]
        self.zhibiao_axis_map = temp_map2

        if temp_map["X"].size > 0 and temp_map["X"][-1] == 499:
            return True

        return False
示例#5
0
    def divergence_average(self, average_line,my_close_list,bool_data):
        self.average_line=average_line

        bool_data = NumericSeries(bool_data)
        ref_bool_data = REF(bool_data,1)

        select_bool = bool_data >ref_bool_data
        ret=np.where(select_bool.series==True)[0]

        if select_bool==True:
            first_one_position = ret[-1]
            first_average = average_line[first_one_position]
            first_close = my_close_list[first_one_position]

            second_one_position = ret[-2]
            second_average = average_line[second_one_position]
            second_close = my_close_list[second_one_position]

            #不是底分型,就去除
            high_data=np.array(self.X[:,2],dtype=np.float)
            bottom_up=my_close_list[-1]>high_data[-2]
            #divergence_average 背驰
            flag=first_average <1.5 and second_average<1.5 and  first_average>second_average and first_close< second_close \
                 and bottom_up
            if(flag):
                return True

        self.get_buy_flag_list(ret, average_line, my_close_list)
        return False
示例#6
0
    def get_sell_flag(self, average_line):
        ref_average = REF(self.average_data, 1)

        temp_flag = self.average_data < ref_average
        temp_flag = temp_flag.series[-500:]
        positions = np.where(temp_flag == True)[0]
        temp = {}
        temp["X"] = positions
        temp["Y"] = average_line[positions]
        temp["C"] = "#7FFF00"
        self.additional_average_map_list.append(temp)

        if positions[-1] == 499:
            return True

        return False
示例#7
0
    def double_cross(self, average_line, average_data, bool_data):
        bool_data = NumericSeries(bool_data)
        ref_bool_data = REF(bool_data, 1)

        select_bool = bool_data > ref_bool_data
        select_bool = select_bool.series[99 - 20:]
        ret = np.where(select_bool == True)
        size = ret[0].size

        if (size < 2):
            return False

        average_line = average_line[100 - 20:]
        first_one_position = ret[0][-1]
        first_one = average_line[first_one_position]

        second_one_position = ret[0][-2]
        second_one = average_line[second_one_position]

        if (first_one > second_one and select_bool[-1] == True):
            return True

        return False
示例#8
0
    def getBreakthroughHighPoint(self, my_close_list):
        temp = NumericSeries(self.average_axis_buy["Z"])
        ref_temp = REF(temp, 1)
        size = ref_temp.series.size
        if (size < 1):
            return False
        temp = temp.series[-size:]
        bool_temp = temp - ref_temp.series > 0.25
        bool_temp = np.insert(bool_temp, 0, False)
        position_list = np.where(bool_temp == True)[0]
        temp_map = {}
        temp_map["X"] = self.average_axis_buy["X"][position_list]
        temp_map["Y"] = self.average_axis_buy["Z"][position_list]
        temp_map["C"] = "#0A0A0A"
        self.additional_average_map_list.append(temp_map)
        temp_map2 = {}
        temp_map2["X"] = self.average_axis_buy["X"][position_list]
        temp_map2["Y"] = my_close_list[temp_map2["X"]]
        self.zhibiao_axis_map = temp_map2

        if temp_map["X"].size > 0 and temp_map["X"][-1] == 499:
            return True

        return False