Я пытаюсь вычислить свечную модель, называемую Доджи. Требуется два вычисления двух значений условий: pandas фрейм данных с историческими данными запаса со столбцами Дата, Высокий, Низкий, открытый и закрытый.
С условием if я пытался явно сделать условие 1 и условие 2 булевым а также попробовал, набрав его с помощью any (). Оба из них не дали желаемого результата. Условие печати 1 и условие 2 по отдельности дают соответствующее логическое значение, но объединение его с '&' ужасно неправильно.
51315 True
51316 True
51317 True
51318 True
51319 True
...
53790 True
53791 True
53792 True
53793 True
53794 True
Length: 2480, dtype: bool
ValueError Traceback (most recent call last)
<ipython-input-58-3f42eed169f4> in <module>
4 values = pd.DataFrame(stocks_data.loc[stocks_data['Company']=='TCS'])
5 values.reset_index()
----> 6 study_candlesticks(values)
<ipython-input-57-fd67b4117699> in study_candlesticks(values)
21 # for row in values
22
---> 23 if calc_doji(values):
24 values['Pattern']='Doji'
25
<ipython-input-57-fd67b4117699> in calc_doji(values)
81 condition2=((values['High'] - values['Low'])>values['Close']*min_candle_size)
82 print(condition2)
---> 83 if ((condition1).bool()&(condition2).any()):
84 return True
85 else:
~\Anaconda3\lib\site-packages\pandas\core\generic.py in bool(self)
1581 )
1582
-> 1583 self.__nonzero__()
1584
1585 def __abs__(self):
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1553 "The truth value of a {0} is ambiguous. "
1554 "Use a.empty, a.bool(), a.item(), a.any() or a.all().".format(
-> 1555 self.__class__.__name__
1556 )
1557 )
ValueError: True Ценность Серии неоднозначна. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Я не уверен, где я иду не так. Есть предложения?
Ниже приведен код
calc_doji(values)
def calc_doji(values):
max_candle_size=0.1/100
min_candle_size=1/100
condition1 =(abs(values['Open'] - values['Close'])<values['Close']*max_candle_size)
print(condition1)
condition2=((values['High'] - values['Low'])>values['Close']*min_candle_size)
print(condition2)
if ((condition1).bool()&(condition2).any()):
return True
else:
return False