|  | @@ -12,6 +12,7 @@ import math
 | 
	
		
			
				|  |  |  from datetime import datetime as dt
 | 
	
		
			
				|  |  |  import multiprocessing as mp
 | 
	
		
			
				|  |  |  from backtrader.feeds import PandasData
 | 
	
		
			
				|  |  | +import platform
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # import multiprocessing
 | 
	
	
		
			
				|  | @@ -140,7 +141,7 @@ class TestStrategy(bt.Strategy):
 | 
	
		
			
				|  |  |              highest = np.max(self.high.get(size=self.params.num))
 | 
	
		
			
				|  |  |              if (self.hl[-2] == 2 or self.hl[-2] == 1) and self.dataclose[0] > self.sma5[0] > self.sma5[-1] \
 | 
	
		
			
				|  |  |                      and self.sma5[-3]/self.sma5[-2] > self.sma5[-2]/self.sma5[-1] > (1+rate) \
 | 
	
		
			
				|  |  | -                    and self.sma5[0] > self.sma5[-1]*(1+rate) \
 | 
	
		
			
				|  |  | +                    and self.sma5[0] > self.sma5[-1]\
 | 
	
		
			
				|  |  |                      and (((lowest * (1 - vola)) < self.low[-2] < (lowest * (1 + vola))) or (
 | 
	
		
			
				|  |  |                      (lowest * (1 - vola)) < self.low[-1] < (lowest * (1 + vola)))) \
 | 
	
		
			
				|  |  |                      and self.volume[0] >= self.volume[-1] and self.dataclose[0] > self.dataopen[0] \
 | 
	
	
		
			
				|  | @@ -165,13 +166,16 @@ def err_call_back(err):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def to_df(lt):
 | 
	
		
			
				|  |  | +    print('开始存数据')
 | 
	
		
			
				|  |  |      df = pd.DataFrame(list(lt), columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利',
 | 
	
		
			
				|  |  |                                 '最小盈利', '总亏损', '平均亏损', '最大亏损', '最小亏损'])
 | 
	
		
			
				|  |  |      df.sort_values(by=['周期', '波动率', 'MA5斜率'], ascending=True, inplace=True)
 | 
	
		
			
				|  |  |      df = df.reset_index(drop=True)
 | 
	
		
			
				|  |  | -    # df.to_csv(f"D:\Daniel\策略\策略穷举{dt.now().strftime('%Y%m%d')}.csv", index=True, encoding='utf-8', mode='w')
 | 
	
		
			
				|  |  | -    df.to_csv(f"/Users/daniel/Documents/策略/策略穷举{dt.now().strftime('%Y%m%d')}.csv", index=True, encoding='utf-8', mode='w')
 | 
	
		
			
				|  |  | -    print(df)
 | 
	
		
			
				|  |  | +    if platform.node() == 'DanieldeMBP.lan':
 | 
	
		
			
				|  |  | +        df.to_csv(f"/Users/daniel/Documents/策略/策略穷举{dt.now().strftime('%Y%m%d')}.csv", index=True, encoding='utf-8', mode='w')
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        df.to_csv(f"D:\Daniel\策略\策略穷举{dt.now().strftime('%Y%m%d')}.csv", index=True, encoding='utf-8', mode='w')
 | 
	
		
			
				|  |  | +    print(f'结果:{df}')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def backtrader(list_date, table_list, result, result_change, result_change_fall, num, Volatility, rate, err_list):
 | 
	
	
		
			
				|  | @@ -264,16 +268,20 @@ def backtrader(list_date, table_list, result, result_change, result_change_fall,
 | 
	
		
			
				|  |  |          endtime = dt.now()
 | 
	
		
			
				|  |  |          print(f'{num}天波动率为{Volatility}%MA5斜率为{rate},myPID is {os.getpid()}.本轮耗时为{endtime - sttime}')
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  | -        print(result, result_change, result_change_fall, num, Volatility, rate, err_list)
 | 
	
		
			
				|  |  | +        print('阿欧', len(result), len(result_change), len(result_change_fall), num, Volatility, rate, err_list)
 | 
	
		
			
				|  |  | +        list_date.append([num, Volatility, rate, 0, len(result) / len(table_list), len(result),
 | 
	
		
			
				|  |  | +                          len(result), len(result), len(result), len(result), len(result), len(result), 0])
 | 
	
		
			
				|  |  | +    to_df(list_date)
 | 
	
		
			
				|  |  |      # cerebro.plot()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -df = pd.DataFrame(
 | 
	
		
			
				|  |  | -    columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利', '最小盈利', '总亏损',
 | 
	
		
			
				|  |  | -             '平均亏损', '最大亏损', '最小亏损'])
 | 
	
		
			
				|  |  | +# df = pd.DataFrame(
 | 
	
		
			
				|  |  | +#     columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利', '最小盈利', '总亏损',
 | 
	
		
			
				|  |  | +#              '平均亏损', '最大亏损', '最小亏损'])
 | 
	
		
			
				|  |  |  if __name__ == '__main__':
 | 
	
		
			
				|  |  |      starttime = dt.now()
 | 
	
		
			
				|  |  |      print(starttime)
 | 
	
		
			
				|  |  | +    print(type(platform.node()))
 | 
	
		
			
				|  |  |      # engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx?charset=utf8', poolclass=NullPool)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # stocks = pd.read_sql_query(
 | 
	
	
		
			
				|  | @@ -289,7 +297,7 @@ if __name__ == '__main__':
 | 
	
		
			
				|  |  |      cursor.execute("show tables like '%%%s%%' " % fre)
 | 
	
		
			
				|  |  |      table_list = [tuple[0] for tuple in cursor.fetchall()]
 | 
	
		
			
				|  |  |      # print(table_list)
 | 
	
		
			
				|  |  | -    # table_list = table_list[0:100]
 | 
	
		
			
				|  |  | +    table_list = table_list[0:10]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      list_date = mp.Manager().list()
 | 
	
		
			
				|  |  |      thread_list = []
 |