|  | @@ -12,6 +12,7 @@ import math
 | 
											
												
													
														|  |  from datetime import datetime as dt
 |  |  from datetime import datetime as dt
 | 
											
												
													
														|  |  import multiprocessing as mp
 |  |  import multiprocessing as mp
 | 
											
												
													
														|  |  from backtrader.feeds import PandasData
 |  |  from backtrader.feeds import PandasData
 | 
											
												
													
														|  | 
 |  | +import platform
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  # import multiprocessing
 |  |  # import multiprocessing
 | 
											
										
											
												
													
														|  | @@ -140,7 +141,7 @@ class TestStrategy(bt.Strategy):
 | 
											
												
													
														|  |              highest = np.max(self.high.get(size=self.params.num))
 |  |              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] \
 |  |              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[-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 (
 |  |                      and (((lowest * (1 - vola)) < self.low[-2] < (lowest * (1 + vola))) or (
 | 
											
												
													
														|  |                      (lowest * (1 - vola)) < self.low[-1] < (lowest * (1 + vola)))) \
 |  |                      (lowest * (1 - vola)) < self.low[-1] < (lowest * (1 + vola)))) \
 | 
											
												
													
														|  |                      and self.volume[0] >= self.volume[-1] and self.dataclose[0] > self.dataopen[0] \
 |  |                      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):
 |  |  def to_df(lt):
 | 
											
												
													
														|  | 
 |  | +    print('开始存数据')
 | 
											
												
													
														|  |      df = pd.DataFrame(list(lt), columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利',
 |  |      df = pd.DataFrame(list(lt), columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利',
 | 
											
												
													
														|  |                                 '最小盈利', '总亏损', '平均亏损', '最大亏损', '最小亏损'])
 |  |                                 '最小盈利', '总亏损', '平均亏损', '最大亏损', '最小亏损'])
 | 
											
												
													
														|  |      df.sort_values(by=['周期', '波动率', 'MA5斜率'], ascending=True, inplace=True)
 |  |      df.sort_values(by=['周期', '波动率', 'MA5斜率'], ascending=True, inplace=True)
 | 
											
												
													
														|  |      df = df.reset_index(drop=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):
 |  |  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()
 |  |          endtime = dt.now()
 | 
											
												
													
														|  |          print(f'{num}天波动率为{Volatility}%MA5斜率为{rate},myPID is {os.getpid()}.本轮耗时为{endtime - sttime}')
 |  |          print(f'{num}天波动率为{Volatility}%MA5斜率为{rate},myPID is {os.getpid()}.本轮耗时为{endtime - sttime}')
 | 
											
												
													
														|  |      else:
 |  |      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()
 |  |      # cerebro.plot()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -df = pd.DataFrame(
 |  | 
 | 
											
												
													
														|  | -    columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利', '最小盈利', '总亏损',
 |  | 
 | 
											
												
													
														|  | -             '平均亏损', '最大亏损', '最小亏损'])
 |  | 
 | 
											
												
													
														|  | 
 |  | +# df = pd.DataFrame(
 | 
											
												
													
														|  | 
 |  | +#     columns=['周期', '波动率', 'MA5斜率', '盈利个数', '盈利比例', '总盈利', '平均盈利', '最大盈利', '最小盈利', '总亏损',
 | 
											
												
													
														|  | 
 |  | +#              '平均亏损', '最大亏损', '最小亏损'])
 | 
											
												
													
														|  |  if __name__ == '__main__':
 |  |  if __name__ == '__main__':
 | 
											
												
													
														|  |      starttime = dt.now()
 |  |      starttime = dt.now()
 | 
											
												
													
														|  |      print(starttime)
 |  |      print(starttime)
 | 
											
												
													
														|  | 
 |  | +    print(type(platform.node()))
 | 
											
												
													
														|  |      # engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx?charset=utf8', poolclass=NullPool)
 |  |      # engine = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/hlfx?charset=utf8', poolclass=NullPool)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # stocks = pd.read_sql_query(
 |  |      # stocks = pd.read_sql_query(
 | 
											
										
											
												
													
														|  | @@ -289,7 +297,7 @@ if __name__ == '__main__':
 | 
											
												
													
														|  |      cursor.execute("show tables like '%%%s%%' " % fre)
 |  |      cursor.execute("show tables like '%%%s%%' " % fre)
 | 
											
												
													
														|  |      table_list = [tuple[0] for tuple in cursor.fetchall()]
 |  |      table_list = [tuple[0] for tuple in cursor.fetchall()]
 | 
											
												
													
														|  |      # print(table_list)
 |  |      # print(table_list)
 | 
											
												
													
														|  | -    # table_list = table_list[0:100]
 |  | 
 | 
											
												
													
														|  | 
 |  | +    table_list = table_list[0:10]
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      list_date = mp.Manager().list()
 |  |      list_date = mp.Manager().list()
 | 
											
												
													
														|  |      thread_list = []
 |  |      thread_list = []
 |