Esempio n. 1
0
import sys
import datetime

from external_package import tushare_helper as th
from inner_package import standardized as standard
from inner_package import show

# original = th.TushareHelper('000001', datetime.date.today()+ datetime.timedelta(days=-1),datetime.date.today() + datetime.timedelta(days=+1),'1min')
original = th.TushareHelper('000001', '2017-12-04', '2017-12-12', 'D')
original.data_transfer()

sta = standard.StandardHandle(original.data_original)
sta.deal_candle()
sta.get_top_bottom()

date_tickers = original.date_tickers
my_plot = show.PlotShow(date_tickers, '000001')
my_plot.candle_show(original.data_original_ex, [])

date_tickers = sta.date_tickers
my_plot = show.PlotShow(date_tickers, '000001')
# my_plot.candle_show(sta.standardized_list_ex, [])
my_plot.candle_show(sta.standardized_list_ex, sta.top_bottom_list_ex)
my_plot.candle_show(sta.standardized_list_ex,
                    sta.standardized_top_bottom_list_ex)
Esempio n. 2
0
def save_all_pen(start, end, period, stock_list, client):
    # 设置分笔的周期
    # 暂时前复权,其他是摆设
    for x, code in enumerate(stock_list):
        try:
            original = th.TushareHelper(code,
                                        start,
                                        end,
                                        'to_qfq',
                                        period=period)
            # 储存data_original_ex筛选数据,data_original全部数据,date_tickers添加时间数据
            original.data_transfer()
            #######################################################################################################################################################
            # K线数据标准化处理,输入的是列表,对输入的数据进行处理
            sta = standard.StandardHandle(original.data_original)
            # 处理K线deal_candle
            sta.deal_candle()
            # 思路
            # 1、先获取所有的顶和底,标准转向
            # 2、连续顶底的处理
            # 3、输出
            sta.get_top_bottom()

            pen_collect = []
            # 在这个地方 为首尾分型添加标记
            # 在增量更新是 首先更新带标记的笔(日线,周线)
            #除了 开始和结束分型 其他都用typing_value 计算
            for i, item in enumerate(sta.count_standardized_top_bottom_list):
                if i > 0 and i not in [
                        1, len(sta.count_standardized_top_bottom_list) - 1
                ]:
                    #根据顶底分型来确定取高点还是低点
                    pen_type = 0  #确定笔
                    pen_collect.append(
                        {   #代码
                            #开始时间
                            #结束时间
                            #涨幅
                            #笔类型 -1 0 1 (-1 初始笔,0 确定笔,1未确定笔)
                            'code': item.name[1],
                            'start': sta.count_standardized_top_bottom_list[i - 1]['index'],
                            'end': item['index'],
                            'start_price': sta.count_standardized_top_bottom_list[i - 1]['typing_value'],
                            'end_price': item['typing_value'],
                            'ratio': (item['typing_value'] - sta.count_standardized_top_bottom_list[i - 1]['typing_value']) /
                                     sta.count_standardized_top_bottom_list[i - 1]['typing_value'],
                            'typing': pen_type,
                        }
                    )
                elif i == 1:
                    pen_type = -1  #初始笔
                    pen_collect.append(
                        {  # 代码
                            # 开始时间
                            # 结束时间
                            # 涨幅
                            # 笔类型 -1 0 1 (-1 初始笔,0 确定笔,1未确定笔)
                            'code': item.name[1],
                            'start': sta.count_standardized_top_bottom_list[i - 1]['index'],
                            'end': item['index'],
                            'start_price': sta.count_standardized_top_bottom_list[i - 1]['low'],  # 高点
                            'end_price': item['typing_value'],
                            'ratio': (item['typing_value'] - sta.count_standardized_top_bottom_list[i - 1]['low']) /
                                     sta.count_standardized_top_bottom_list[i - 1]['low'],
                            'typing': pen_type,
                        }
                    )
                elif i == len(sta.count_standardized_top_bottom_list) - 1:
                    pen_type = 1  #待确定的最后一笔
                    pen_collect.append(
                        {  # 代码
                            # 开始时间
                            # 结束时间
                            # 涨幅
                            # 笔类型 -1 0 1 (-1 初始笔,0 确定笔,1未确定笔)
                            'code': item.name[1],
                            'start': sta.count_standardized_top_bottom_list[i - 1]['index'],
                            'end': item['index'],
                            'start_price': sta.count_standardized_top_bottom_list[i - 1]['typing_value'],  # 高点
                            'end_price': item['high'],
                            'ratio': (item['high'] - sta.count_standardized_top_bottom_list[i - 1]['typing_value']) /
                                     sta.count_standardized_top_bottom_list[i - 1]['typing_value'],
                            'typing': pen_type,
                        }
                    )
            coll = client.pen_box_day  # 由于数据不全造成前复权的问题
            coll.insert_many(pen_collect)
            print(x, code)
        except:
            with open('error_day.txt', 'a') as f:
                f.write('\n' + code)