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

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

    if len(data) < threshold:
        logging.debug("{0}:样本小于{1}天...\n".format(code_name, threshold))
        return False

    atr_list = tl.ATR(data['high'],
                      data['low'],
                      data['close'],
                      timeperiod=threshold)
    atr = atr_list.iloc[-1]
    last_close = data.iloc[-1]['close']
    # 头寸规模
    position_size = math.floor(BALANCE / 100 / real_atr(atr, 100))
    t_shelve = db.ShelvePersistence()
    t_shelve.save(code_name, last_close, position_size)

    # last_close, position_size, atr
    result = ("N:{0}\n"
              "头寸规模:{1}手\n"
              "买入价格:{2:0.2f},{3:0.2f},{4:0.2f},{5:0.2f}\n"
              "退出价格:{6:0.2f}\n\n".format(
                  atr, math.floor(BALANCE / 100 / real_atr(atr, 100)),
                  last_close, last_close + atr, last_close + atr * 2,
                  last_close + atr * 3, last_close - atr * 2))
    return result
예제 #2
0
def check_exit():
    t_shelve = db.ShelvePersistence()
    file = t_shelve.open()
    for key in file:
        code_name = file[key]['code_name']
        data = utils.read_data(code_name)
        if turtle_trade.check_exit(code_name, data):
            notify.notify("{0} 达到退出条件".format(code_name))
            logging.info("{0} 达到退出条件".format(code_name))
            del file[key]
        elif turtle_trade.check_stop(code_name, data, file[key]):
            notify.notify("{0} 达到止损条件".format(code_name))
            logging.info("{0} 达到止损条件".format(code_name))
            del file[key]
예제 #3
0
def calculate(code_name, data_history, end_date=None):
    atr_list = tl.ATR(data_history['high'],
                      data_history['low'],
                      data_history['close'],
                      timeperiod=20)
    atr = atr_list.iloc[-1]
    last_close = data_history.iloc[-1]['close']
    # 头寸规模
    position_size = math.floor(BALANCE / 100 / real_atr(atr, 100))
    t_shelve = db.ShelvePersistence()
    t_shelve.save(code_name, last_close, position_size)

    # last_close, position_size, atr
    result = ("N:{0}\n"
              "头寸规模:{1}手\n"
              "买入价格:{2:0.2f},{3:0.2f},{4:0.2f},{5:0.2f}\n"
              "退出价格:{6:0.2f}\n\n".format(
                  atr, math.floor(BALANCE / 100 / real_atr(atr, 100)),
                  last_close, last_close + atr, last_close + atr * 2,
                  last_close + atr * 3, last_close - atr * 2))
    return result
예제 #4
0
파일: test.py 프로젝트: yutiansut/Sequoia
#
# 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)

# print(atr_list)
# atr = atr_list[-1]
# print(atr)
# print(enter.check_volume(stock, data, end_date="2018-01-02"))
# import notify
#
# results = ['300188', '600271']
# msg = '\n'.join("*代码:%s" % ''.join(x) for x in results)
# notify.notify(msg)
# print(results)

# import tushare as ts
#
# data = ts.get_stock_basics()
# print(data)

import db

t_shelve = db.ShelvePersistence()
t_shelve.positions()