コード例 #1
0
def calc_data(symbol_list, df, start, end):
    start_year = start
    end_year = end
    df_ma = copy.copy(df)
    df_ret = copy.copy(df)
    cret = pd.DataFrame()
    for sym in symbol_list:
        # 查询历史行情
        #     df_k = get_stk(sym, start_year, end_year)
        df_k = get_k(sym, 60, 0, start_year, end_year)
        if len(df_k) == 0:
            continue
        df_k = df_k.set_index('datetime')
        df_k.loc[:, sym] = (df_k['close'] -
                            df_k['close'].shift(1)) / df_k['close'].shift(1)
        for ma_n in [5, 34]:  #[3,5,20,34,60,120]:
            # df_data.loc[:, 'ace'] = df_data['close'] * 0.382 + 0.206 *(df_data['high'] + df_data['low'] + df_data['open'])
            df_k.loc[:, 'ma' + str(ma_n)] = df_k.close.rolling(
                ma_n, min_periods=0).mean()
        df_ma.loc[:, sym] = df_k.ma5 > df_k.ma34
        df_ret = pd.concat([df_ret, df_k[sym]], sort=True, axis=1).fillna(0)
        print('--' + sym + ' is loaded...')

    ma_signal = ma_filter(df_ma)
    print('--MA signal is calculated...')
    cret_temp = go_trade(ma_signal, df_ret)
    cret = pd.concat([cret, cret_temp], sort=True, axis=1)
    return cret, ma_signal
コード例 #2
0
def calc_data(symbol_list, df, start, end):
    start_year = start
    end_year = end
    df_cci = copy.copy(df)
    df_rsrs = copy.copy(df)
    df_ret = copy.copy(df)
    cret = pd.DataFrame()
    for sym in symbol_list:
        # 查询历史行情
        df_k = get_k(sym, 60, 0, start_year, end_year)
        if len(df_k) == 0:
            continue
        df_k = df_k.set_index('datetime')
        df_k.loc[:, sym] = (df_k['close'] -
                            df_k['close'].shift(1)) / df_k['close'].shift(1)
        cci_m = cci_calc(df_k, sym)
        df_cci = pd.concat([df_cci, cci_m], sort=True, axis=1).fillna(0)
        df_rsrs = pd.concat(
            [df_rsrs, ols_rsrs(sym, 20, 40, df_k[['high', 'low']])],
            sort=True,
            axis=1).fillna(0)
        df_ret = pd.concat([df_ret, df_k[sym]], sort=True, axis=1).fillna(0)
        print('--' + sym + ' is loaded...')
    cci_signal = cci_filter(df_cci)
    for s in [[-5, -0.8], [-0.5, 0], [-0.5, 0.5], [-100, 0.5], [-0.4, 0.4],
              [-0.6, 0.6], [-0.3, 0.3]]:
        rsrs_signal = rsrs_filter(df_rsrs, s)
        print('--CCI and RSRS signal is calculated...')
        cret_temp = go_trade(cci_signal, rsrs_signal, df_ret)
        cret = pd.concat([cret, cret_temp], sort=True, axis=1)
    cret.columns = ['s1', 's2', 's3', 's4', 's5', 's6',
                    's7']  #, 's11','s12', 's13', 's14', 's15']
    return cret
コード例 #3
0
# symbol_list = ['SHSE.603288']
symbol_list = ['SZSE.000002', 'SZSE.000333', 'SZSE.002456', 'SHSE.601318', 'SHSE.600585', 'SHSE.600660','SHSE.603288']
# symbol_list = ['SHSE.510880','SZSE.159901','SZSE.159915','SHSE.518880','SZSE.159919','SHSE.510900','SHSE.511260','SHSE.513500','SHSE.510050','SHSE.510500']
# symbol_list = ['SHSE.510050','SHSE.510500','SHSE.510880','SHSE.510900','SHSE.511260','SHSE.513500','SHSE.518880'\
#     ,'SHSE.600036','SHSE.600066','SHSE.600104','SHSE.600273','SHSE.600340','SHSE.600388','SHSE.600398','SHSE.600585'\
#     ,'SHSE.600612','SHSE.600660','SHSE.600690','SHSE.600741','SHSE.600987','SHSE.601009','SHSE.601318','SHSE.603288'\
#     ,'SHSE.603898','SZSE.000002','SZSE.000333','SZSE.000423','SZSE.000651','SZSE.000848','SZSE.000887','SZSE.002081'\
#     ,'SZSE.002085','SZSE.002142','SZSE.002146','SZSE.002236','SZSE.002275','SZSE.002285','SZSE.002294','SZSE.002456'\
#     ,'SZSE.002508','SZSE.002555','SZSE.002572','SZSE.002833','SZSE.159901','SZSE.159915','SZSE.159919']
# start_list = []
years = int(e_time[:4]) - int(s_time[:4]) + 1
start_year = s_time
end_year = e_time
symbol_idx = 'SHSE.000300'
index_data = get_k(symbol_idx, 60, 0, start_year, end_year)
df_idx = pd.DataFrame(index_data['datetime']).set_index('datetime')
df_idx = clean(df_idx)
print('--Index is loaded...')

cret = calc_data(symbol_list,df_idx,start_year,end_year)
print('--Program is done.')
cret.plot()



# ret = pd.DataFrame(total_return, columns=['symbol', 'start', 'end', 'return', 'mdd'])
# print(ret)

# filename = dt.now().strftime('%Y%m%d_%H%M%S') + '.csv'
# # t_r=pd.DataFrame(list(return_m))
コード例 #4
0
#     elif n == (years - 1):
#         start_year = str(int(s_time[:4]) + n) + '-01-01'
#         end_year = e_time
#     else:
#         start_year = str(int(s_time[:4]) + n) + '-01-01'
#         end_year = str(int(s_time[:4]) + n) + '-12-31'
#     # start_list.append(start_year)
start_year = s_time
end_year = e_time

for sym in symbol_list:
    # 查询历史行情
    #     df_k = history(symbol=sym, frequency='1h', start_time=start_year, end_time=end_year, fields='eob,open,high,low,close,volume',adjust=1, df=True)
    #     df_k = get_stk(sym, start_year, end_year)
    #     cci_n= [5, 13, 21]
    df_k = get_k(sym, 60, 0, start_year, end_year)
    cci_n = [15, 30, 60]
    # cci_n= [20,40,80]

    if len(df_k) == 0:
        continue
    df_k.loc[:, 'chg'] = (df_k['close'] -
                          df_k['close'].shift(1)) / df_k['close'].shift(1)
    cci_m = pd.DataFrame()
    for n in cci_n:
        cci_m = pd.concat([cci_m, ta_cci(n, df_k)], axis=1)
    k_data = pd.concat([df_k, ta_atr(20, df_k), cci_m], axis=1)
    k_data = k_data.dropna()
    # DrawSignals(k_data)

    re, mdd, df_r = Run(cci_n, k_data)
コード例 #5
0
#         end_year = str(int(s_time[:4]) + n) + '-12-31'
#     elif n == (years - 1):
#         start_year = str(int(s_time[:4]) + n) + '-01-01'
#         end_year = e_time
#     else:
#         start_year = str(int(s_time[:4]) + n) + '-01-01'
#         end_year = str(int(s_time[:4]) + n) + '-12-31'
#     # start_list.append(start_year)
start_year = s_time
end_year = e_time
# s_list = np.arange(0.75,1.00,0.05)

for sym in symbol_list:
# 查询历史行情
#     df_k = history(symbol=sym, frequency='1h', start_time=start_year, end_time=end_year, fields='eob,open,high,low,close,volume',adjust=1, df=True)
    df_data = get_k(sym, 60, 0, start_year, end_year)
    if len(df_data) == 0:
        continue
    df_data.loc[:,'atr'] = ta.ATR(df_data.high, df_data.low, df_data.close, timeperiod=atr_n)
    df_data.loc[:, 'chg'] = (df_data['close'] - df_data['close'].shift(1)) / df_data['close'].shift(1)
    # df_data.loc[:,'ma5'] = df_data.close.rolling(5,min_periods=0).mean()
    # df_data.loc[:,'ma21'] = df_data.close.rolling(21,min_periods=0).mean()

    # cci_n= [15, 30, 60]
    # cci_m = pd.DataFrame()
    # for n in cci_n:
    #     cci_m = pd.concat([cci_m, ta_cci(n,df_data)], axis=1)
    # df_data =  pd.concat([df_data, cci_m], axis=1)


    # for N in [32]:#range(4,41):