The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
次のコードを実行します.
エラー:
エラーはこの行の問題である:condition 1=df['MACD']<0 and df['MACD'].shift(3) > 0
問題を解決する
なぜならpythonにおける
しかしdf['MACD']<0 and df['MACD'].shift(3)>0戻りはTrueまたはFalseではありません
コードを
それでも無効です.最終的に最も愚かな方法で、何行も書きました.
問題解決
condition1 = df['MACD'] < 0 and df['MACD'].shift(3) > 0
condition2 = df['DIF'] < 0 and df['DIF'].shift(3) > df['DEA']
condition3 = df['volume'] > df['volume_ma']*n
df.loc[condition1 & condition2 & condition3, 'signal_short'] = 1
エラー:
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\Users\kawujeilu\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "C:\Users\kawujeilu\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 44, in mapstar
return list(map(*args))
File "D:\ \ \ \coin_quant_class_2019_0623 \my\optimize_youhua_macd.py", line 77, in backtest
df = signal_macd4(self.all_data.copy(), para)
File "D:\ \ \ \coin_quant_class_2019_0623 \my\xbxSignals3.py", line 239, in signal_macd4
condition1 = df['MACD'] < 0 and df['MACD'].shift(3) > 0
File "C:\Users\kawujeilu\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "optimize_youhua_macd.py", line 212, in
rtn_list = pool.map(yh.backtest, para_list) # para_list
File "C:\Users\kawujeilu\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 268, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "C:\Users\kawujeilu\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 657, in get
raise self._value
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
エラーはこの行の問題である:condition 1=df['MACD']<0 and df['MACD'].shift(3) > 0
問題を解決する
なぜならpythonにおける
or
およびand
の宣言にはtruth-values
、すなわち真のTrueまたはFalseが必要であるからである.しかしdf['MACD']<0 and df['MACD'].shift(3)>0戻りはTrueまたはFalseではありません
コードを
condition1 = df['MACD'] < 0 & df['MACD'].shift(3) > 0
それでも無効です.最終的に最も愚かな方法で、何行も書きました.
condition1 = df['MACD'] < 0
condition2 = df['MACD'].shift(3) > 0
condition3 = df['DIF'] < 0
condition4 = df['DIF'].shift(3) > df['DEA']
condition5 = df['volume'] > df['volume_ma']*n
df.loc[condition1 & condition2 & condition3 & condition4 & condition5, 'signal_short'] = 1
問題解決