检查数据框的列。 参数: dataframe (pd.DataFrame): 要检查的数据框。 datafeed_cls (bt.feeds.PandasData): 数据源类。 返回值: bool: 如果检查通过,则返回True;否则返回False。
(
dataframe: pd.DataFrame, datafeed_cls: bt.feeds.PandasData
)
| 28 | |
| 29 | # DataFrame 列检查与对齐 |
| 30 | def check_dataframe_cols( |
| 31 | dataframe: pd.DataFrame, datafeed_cls: bt.feeds.PandasData |
| 32 | ) -> bool: |
| 33 | """ |
| 34 | 检查数据框的列。 |
| 35 | |
| 36 | 参数: |
| 37 | dataframe (pd.DataFrame): 要检查的数据框。 |
| 38 | datafeed_cls (bt.feeds.PandasData): 数据源类。 |
| 39 | |
| 40 | 返回值: |
| 41 | bool: 如果检查通过,则返回True;否则返回False。 |
| 42 | """ |
| 43 | if not isinstance(datafeed_cls, bt.feed.MetaAbstractDataBase): |
| 44 | raise ValueError( |
| 45 | "datafeed_cls must be a subclass of bt.feeds.PandasData or bt.feeds.PandasDirectData" |
| 46 | ) |
| 47 | |
| 48 | cols: List[Tuple] = [ |
| 49 | (k, v) |
| 50 | for k, v in datafeed_cls.params.__dict__.items() |
| 51 | if isinstance(v, int) and k not in ("timeframe", "dtformat") |
| 52 | ] |
| 53 | sorted_cols: List[Tuple] = sorted(cols, key=lambda x: x[1]) |
| 54 | return dataframe[ |
| 55 | [ |
| 56 | v[0] |
| 57 | for v in sorted_cols |
| 58 | if (v[0] != "datetime") and (v[1] != 0 or v[1] is not None) |
| 59 | ] |
| 60 | ] |
| 61 | |
| 62 | |
| 63 | class BackTesting: |