import logging from freqtrade.strategy import IStrategy from pandas import DataFrame logger = logging.getLogger(__name__) # freqtrade trade -c ./user_data/Deepseek_Trader.json --strategy Deepseek_Trader --strategy-path ./user_data/strategies # freqtrade backtesting -c ./user_data/Deepseek_Trader.json --strategy Deepseek_Trader --strategy-path ./user_data/strategies --timerange=20250309- # freqtrade download-data -c ./user_data/Deepseek_Trader.json -t 1m --pairs BTC/USDT:USDT --timerange=20240101- class Deepseek_Trader(IStrategy): """ 空的ChanStrategy策略类 这个策略只是作为Freqtrade的接口,实际交易决策由DeepSeek LLM完成 """ # 策略界面选项 minimal_roi = { "120": 0.2, "240": 0.15, "360": 0.1, "480": 0.5, "960": 0.2, "1440": 0.0 } # 止损设置 stoploss = -0.2 # 交易超时设置 timeframe = '1m' # 仅在新K线时执行策略 process_only_new_candles = False # 可以做空 can_short = True def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ 为每个交易对添加指标 """ # 不添加任何指标,由DeepSeek LLM决策 return dataframe def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ 基于指标生成买入信号 这里我们不生成任何实际交易信号,但需要设置buy列以确保兼容性 默认不进行交易,由DeepSeek LLM决策 """ # 添加必要的buy列,但默认不触发信号(值为0) dataframe['buy'] = 0 return dataframe def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ 基于指标生成卖出信号 这里我们不生成任何实际交易信号,但需要设置sell列以确保兼容性 默认不进行交易,由DeepSeek LLM决策 """ # 添加必要的sell列,但默认不触发信号(值为0) dataframe['sell'] = 0 return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ 基于指标生成多空信号 这里我们不生成任何实际交易信号,但需要设置enter_long列以避免错误 默认不进行交易,由DeepSeek LLM决策 """ # 添加必要的enter_long列,但默认不触发信号(值为0) dataframe['enter_long'] = 0 dataframe['enter_short'] = 0 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ 基于指标生成多空平仓信号 这里我们不生成任何实际交易信号,但需要设置exit_long列以避免错误 默认不进行交易,由DeepSeek LLM决策 """ # 添加必要的exit_long列,但默认不触发信号(值为0) dataframe['exit_long'] = 0 dataframe['exit_short'] = 0 return dataframe