91 lines
3.1 KiB
Python
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 |