均线交易策略
目的:从所有股票中选出符合买入策略的股票。
符合买入条件:
1、当天5日均线数据大于等于10日均线数据;
2、昨天5日均线数据小于10日均线数据;
3、10日均线数据处于上升趋势。
代码实现如下:
1 import tushare as ts 2 import pandas as df 3 import datetime 4 def getStockHistoryData(): 5 data = ts.get_hist_data(code = "002456",start = "2019-07-20", end = "2019-7-26", ktype = "D") 6 data.to_csv("stockData.csv") 7 print(data) 8 pass 9 10 def choiceStock(): 11 """ 12 :param stockData: 13 :return: 14 1、当天5日均线大于10日均线; 15 2、前一天5日均线小于10日均线; 16 """ 17 stockChoiced = [] 18 endDate = datetime.datetime.now() #获取当天日期 19 offset = datetime.timedelta(days = -3) #设置时间偏移量 20 startDate = (endDate + offset).strftime("%Y-%m-%d") #获取startDate 21 endDate = endDate.strftime("%Y-%m-%d") 22 23 stockBasic = ts.get_stock_basics() #获取所有股票数据信息 24 stockCode = stockBasic.index #获取所有股票代码 25 26 for i in range(1,30): 27 code = stockCode[i] # 28 getCondCode = stockChoicTragy(code,startDate,endDate) #获取满足条件的股票信息 29 if(getCondCode): 30 stockChoiced.append(getCondCode) #将符合条件的股票加入到列表中 31 32 return stockChoiced 33 34 def stockChoicTragy(code,startDate,endDate): 35 data = ts.get_hist_data(code = code, start=startDate, end=endDate) #获取指定时间范围内的股票数据 36 data = data[["ma5","ma10","ma20"]].sort_index(ascending=False) #按日期升序排列 37 ma5Data = data["ma5"] #获取5日均线数据 38 ma10Data = data["ma10"] #获取10日均线数据 39 40 if(len(data) >= 2): 41 condition1 = ma5Data[0] >= ma10Data[0] #当天5日均线数据大于等于10日均线数据 42 condition2 = ma5Data[1] < ma10Data[1] #昨天5日均线数据小于10日均线数据 43 condition3 = ma10Data[0] > ma10Data[1] #10日均线数据呈上升趋势 44 45 if(condition1 and condition2 and condition3): 46 return code 47 48 if __name__ == "__main__": 49 stock = choiceStock() 50 print(stock)