Exemple #1
0
    def test_talib_ATR(self):
        #
        # code_name = ('300623', '捷捷微电')
        # code_name = ('600145', '*ST新亿')
        # code_name = ('601700', '风范股份')
        # code_name = ('000725', '京东方A')
        # code_name = ('002157', '正邦科技')
        code_name = ('300663', '科蓝软件')
        end = '2020-12-30'

        data = utils.read_data(code_name)
        print(data.head())
        result = enter.check_volume(code_name, data, end_date=end)
        print("\nlow atr check {0}'s result: {1}".format(code_name, result))

        rolling_window = 21
        moving_average = 20

        average_true_range = ATR(data.high.values[-rolling_window:],
                                 data.low.values[-rolling_window:],
                                 data.close.values[-rolling_window:],
                                 timeperiod=moving_average)
        print("*" * 50)
        print(data['high'].values)
        print("*" * 50)
        print(average_true_range)
        print("*" * 10)
Exemple #2
0
 def end_date_filter(code_name):
     stock = code_name[0]
     name = code_name[1]
     data = utils.read_data(stock, name)
     if data is None:
         return False
     return \
         enter.check_ma(stock, data, end_date=end_date) \
         and enter.check_max_price(stock, data, end_date=end_date) \
         and enter.check_volume(code_name, data, end_date=end_date)
Exemple #3
0
 def end_date_filter(code_name):
     stock = code_name[0]
     data = utils.read_data(code_name)
     result = enter.check_ma(stock, data, end_date=end_date) \
         and enter.check_volume(stock, data, end_date=end_date)
     if result:
         message = turtle_trade.calculate(code_name, data)
         logging.info("{0} {1}".format(code_name, message))
         notify.notify("{0} {1}".format(code_name, message))
     return result
Exemple #4
0
def check(code_name, data, end_date=None, threshold=60):
    origin_data = data
    if len(data) < 250:
        logging.info("{0}:样本小于250天...\n".format(code_name))
        return
    data['ma60'] = pd.Series(tl.MA(data['close'].values, 60),
                             index=data.index.values)

    begin_date = data.iloc[0].date
    if end_date is not None:
        if end_date < begin_date:  # 该股票在end_date时还未上市
            logging.info("{}在{}时还未上市".format(code_name, end_date))
            return False

    if end_date is not None:
        mask = (data['date'] <= end_date)
        data = data.loc[mask]

    data = data.tail(n=threshold)

    breakthrough_row = None

    for index, row in data.iterrows():
        if row['open'] < row['ma60'] <= row['close']:
            if enter.check_volume(code_name, origin_data, row['date'],
                                  threshold):
                breakthrough_row = row

    if breakthrough_row is None:
        return False

    data_front = data.loc[(data['date'] < breakthrough_row['date'])]
    data_end = data.loc[(data['date'] >= breakthrough_row['date'])]

    for index, row in data_front.iterrows():
        if not (-0.05 < (row['ma60'] - row['close']) / row['ma60'] < 0.2):
            return False

    logging.info("股票{0} 突破日期:{1}".format(code_name, breakthrough_row['date']))

    return True
Exemple #5
0
#
# average_true_range = average_true_range_list[-1]
#
settings.init()
# code_name = ('300623', '捷捷微电')
# code_name = ('600145', '*ST新亿')
# code_name = ('601700', '风范股份')
# code_name = ('000725', '京东方A')
code_name = ('002157', '正邦科技')
# code_name = ('300663', '科蓝软件')
# end = '2017-09-26'
end = '2019-02-15'

data = utils.read_data(code_name)
# print(data)
result = enter.check_volume(code_name, data, end_date=end)
print("low atr check {0}'s result: {1}".format(code_name, result))
#
# rolling_window = 21
# moving_average = 20
#
# average_true_range = ATR(
#         data.high.values[-rolling_window:],
#         data.low.values[-rolling_window:],
#         data.close.values[-rolling_window:],
#         timeperiod=moving_average
#     )
# print(data['high'].values)
#
# print(average_true_range)