Kaynağa Gözat

20230226 判断平台名称确定存储位置
platform.node() == 'DanieldeMBP.lan':

daniel 2 yıl önce
ebeveyn
işleme
d361690e14
1 değiştirilmiş dosya ile 17 ekleme ve 9 silme
  1. 17 9
      backtrader/230224_backtrader.py

+ 17 - 9
backtrader/230224_backtrader.py

@@ -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 = []