From efe820317c9e1ca14726fab4dc0f05c4bf22b210 Mon Sep 17 00:00:00 2001 From: "Bobby (aider)" Date: Thu, 13 Feb 2025 23:21:37 -0800 Subject: [PATCH] fix: Update Bollinger Bands calculation with correct pandas-ta column names --- src/pages/backtesting/backtesting_page.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/pages/backtesting/backtesting_page.py b/src/pages/backtesting/backtesting_page.py index d8a4224..00d6182 100644 --- a/src/pages/backtesting/backtesting_page.py +++ b/src/pages/backtesting/backtesting_page.py @@ -56,12 +56,23 @@ class DynamicStrategy(Strategy): std = float(ind_config['params']['std']) def bb_calc(x): - result = ta.bbands(x, length=length, std=std) + # Use pandas-ta bbands with explicit column names + result = pd.DataFrame(ta.bbands(x, length=length, std=std)) if result is None or result.empty: return np.zeros(len(x)), np.zeros(len(x)), np.zeros(len(x)) - return (result.iloc[:,0].fillna(method='ffill').fillna(0).values, - result.iloc[:,1].fillna(method='ffill').fillna(0).values, - result.iloc[:,2].fillna(method='ffill').fillna(0).values) + + # Debug print + print(f"BB calculation result columns: {result.columns}") + print(f"First few rows of BB calculation:\n{result.head()}") + + # Get the correct column names from pandas-ta output + upper_col = f'BBU_{length}_{std}.0' + middle_col = f'BBM_{length}_{std}.0' + lower_col = f'BBL_{length}_{std}.0' + + return (result[upper_col].fillna(method='ffill').fillna(0).values, + result[middle_col].fillna(method='ffill').fillna(0).values, + result[lower_col].fillna(method='ffill').fillna(0).values) bb_vals = self.I(bb_calc, self.data.Close) self.indicators[f"{ind_name}_upper"] = bb_vals[0]