def kdj_select(): ResultSymbols = list() ResultDf = pd.DataFrame() iNum = 0 for iSymbol in da.symbol_list(): print(iSymbol[:-4], ':', iNum) iNum += 1 df = da.data_read(iSymbol) startDate = '20180501' df1 = df[df['trade_date'] > startDate] df2 = df1[df1['kdX'] == 1] #满足金叉的数据 df2_success = df2[(df2['ROC+1'] > 0) | (df2['ROC+2'] > 0) | (df2['ROC+3'] > 0)] #把预测出金叉中后三天内上涨的画出来 if len(df2) != 0: success_rate = len(df2_success) / len(df2) else: continue if success_rate > 0.6: ResultSymbols.append(iSymbol) if df.iloc[-1, :]['kdX'] == 1: ResultDf = ResultDf.append(df.iloc[-1, :]) print(iSymbol, ':', '--------------------OK----------------------') #ResultDf.to_pickle('result_data/Select_macd.pkl') return ResultDf
from abc import ABCMeta, abstractmethod import datetime try: import Queue as queue except ImportError: import queue import numpy as np import pandas as pd from data import TSPro_DataHandler from data import DataProcess import dataAnalysis as da all_return_info = pd.DataFrame( columns=['ts_code', 'hold_day_num', 'return_final']) all_return_info['ts_code'] = da.symbol_list() all_return_info.set_index('ts_code', inplace=True) class Strategy(object): """ Strategy is an abstract base class providing an interface for all subsequent (inherited) strategy handling objects. The goal of a (derived) Strategy object is to generate Signal objects for particular symbols based on the inputs of Bars (OHLCV) generated by a DataHandler object. This is designed to work both with historic and live data as the Strategy object is agnostic to where the data came from, since it obtains the bar tuples from a queue object.
# -*- coding: utf-8 -*- """ Created on Sat Apr 20 20:47:27 2019 @author: MI macd_select_backtest 策略:macd 预测 """ import pandas as pd import numpy as np import dataAnalysis as da import kplot as kp import matplotlib.pyplot as plt symbols = da.symbol_list() df_symbols_income = pd.DataFrame() #for iSymbol in symbols[50:100]: Symbollist = pd.read_pickle('Symbollist.pkl') for iSymbol in Symbollist[:]: df = da.data_read(iSymbol) df.loc[:, 'Long'] = 0 #for i in df.loc['trade_date']: Long_columns_index = df.columns.get_loc('Long') for i in range(30, len(df)): df_hist = df.iloc[:i, :] df2 = df_hist[df_hist['MACDXPre'] >= 1] df2_success = df2[(df2['ROC+1'] > 1) | (df2['ROC+2'] > 1) | (df2['ROC+3'] > 2)] #把预测出金叉中后三天内上涨的画出来 if len(df2) != 0: success_rate = len(df2_success) / len(df2)