Files
mt5_python_ea_suite/strategies/base_strategy.py
T
songkunling 769729e610 基本完毕
2025-08-14 10:13:04 +08:00

33 lines
1.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
策略基类
"""
from logger import logger
class BaseStrategy:
"""策略基类 (已重构为依赖注入)"""
def __init__(self, data_provider, symbol, timeframe):
self.data_provider = data_provider
self.symbol = symbol
self.timeframe = timeframe
self.name = self.__class__.__name__
def _log_signal(self, signal, reason=None):
"""记录信号日志"""
if signal != 0:
direction = "买入" if signal > 0 else "卖出"
logger.info(f"{self.name}: 生成 {direction} 信号 (强度: {signal:.2f}), 原因: {reason}")
else:
logger.debug(f"{self.name}: 无信号, 原因: {reason}")
def generate_signal(self):
"""生成交易信号 - 子类必须实现此方法"""
raise NotImplementedError("子类必须实现 generate_signal 方法")
def run_backtest(self, df):
"""回测方法 - 子类必须实现此方法"""
raise NotImplementedError("子类必须实现 run_backtest 方法")