Files
Chan/strategies/Deepseek_Trader.py
T

91 lines
3.1 KiB
Python

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