disable 剧烈拉升检查
This commit is contained in:
parent
31b2ade544
commit
f0d1c3ad74
@ -3,6 +3,7 @@
|
||||
"redis": {
|
||||
"url": "redis://192.168.1.215:6379/0"
|
||||
},
|
||||
"enable_strategy_logs": true,
|
||||
"trading_mode": "spot",
|
||||
"margin_mode": "isolated",
|
||||
"max_open_trades": 5,
|
||||
|
||||
4
config_examples/nolog.json
Normal file
4
config_examples/nolog.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"enable_strategy_logs": false
|
||||
|
||||
}
|
||||
@ -225,29 +225,29 @@ class FreqaiPrimer(IStrategy):
|
||||
can_short = False # 禁用做空
|
||||
|
||||
# 自定义指标参数 - 使用Hyperopt可优化参数
|
||||
bb_length = IntParameter(10, 30, default=20, optimize=True, load=True, space='buy')
|
||||
bb_std = DecimalParameter(1.5, 3.0, decimals=1, default=2.0, optimize=True, load=True, space='buy')
|
||||
rsi_length = IntParameter(7, 21, default=14, optimize=True, load=True, space='buy')
|
||||
rsi_oversold = IntParameter(30, 50, default=42, optimize=True, load=True, space='buy')
|
||||
bb_length = IntParameter(10, 30, default=20, optimize=False, load=True, space='buy')
|
||||
bb_std = DecimalParameter(1.5, 3.0, decimals=1, default=2.0, optimize=False, load=True, space='buy')
|
||||
rsi_length = IntParameter(7, 21, default=14, optimize=False, load=True, space='buy')
|
||||
rsi_oversold = IntParameter(30, 50, default=42, optimize=False, load=True, space='buy')
|
||||
|
||||
|
||||
|
||||
# 入场条件阈值参数
|
||||
bb_lower_deviation = DecimalParameter(1.01, 1.05, decimals=2, default=1.03, optimize=True, load=True, space='buy')
|
||||
rsi_bull_threshold = IntParameter(45, 55, default=50, optimize=True, load=True, space='buy')
|
||||
stochrsi_bull_threshold = IntParameter(30, 40, default=35, optimize=True, load=True, space='buy')
|
||||
stochrsi_neutral_threshold = IntParameter(20, 30, default=25, optimize=True, load=True, space='buy')
|
||||
volume_multiplier = DecimalParameter(1.2, 2.0, decimals=1, default=1.5, optimize=True, load=True, space='buy')
|
||||
bb_width_threshold = DecimalParameter(0.01, 0.03, decimals=3, default=0.02, optimize=True, load=True, space='buy')
|
||||
min_condition_count = IntParameter(2, 4, default=3, optimize=True, load=True, space='buy')
|
||||
bb_lower_deviation = DecimalParameter(1.01, 1.05, decimals=2, default=1.03, optimize=False, load=True, space='buy')
|
||||
rsi_bull_threshold = IntParameter(45, 55, default=50, optimize=False, load=True, space='buy')
|
||||
stochrsi_bull_threshold = IntParameter(30, 40, default=35, optimize=False, load=True, space='buy')
|
||||
stochrsi_neutral_threshold = IntParameter(20, 30, default=25, optimize=False, load=True, space='buy')
|
||||
volume_multiplier = DecimalParameter(1.2, 2.0, decimals=1, default=1.5, optimize=False, load=True, space='buy')
|
||||
bb_width_threshold = DecimalParameter(0.01, 0.03, decimals=3, default=0.02, optimize=False, load=True, space='buy')
|
||||
min_condition_count = IntParameter(2, 4, default=3, optimize=False, load=True, space='buy')
|
||||
|
||||
# 剧烈拉升检测参数 - 使用Hyperopt可优化参数
|
||||
h1_max_candles = IntParameter(100, 300, default=200, optimize=True, load=True, space='buy')
|
||||
h1_rapid_rise_threshold = DecimalParameter(0.05, 0.15, decimals=3, default=0.11, optimize=True, load=True, space='buy')
|
||||
h1_max_consecutive_candles = IntParameter(1, 4, default=2, optimize=True, load=True, space='buy')
|
||||
h1_max_candles = IntParameter(100, 300, default=200, optimize=False, load=True, space='buy')
|
||||
h1_rapid_rise_threshold = DecimalParameter(0.05, 0.15, decimals=3, default=0.11, optimize=Fal se, load=True, space='buy')
|
||||
h1_max_consecutive_candles = IntParameter(1, 4, default=2, optimize=False, load=True, space='buy')
|
||||
|
||||
# 入场间隔控制参数(分钟)
|
||||
entry_interval_minutes = IntParameter(20, 200, default=42, optimize=True, load=True, space='buy')
|
||||
entry_interval_minutes = IntParameter(20, 200, default=42, optimize=False, load=True, space='buy')
|
||||
|
||||
# ML 审核官:entry_signal 拒绝入场的阈值(越高越宽松,越低越严格)
|
||||
ml_entry_signal_threshold = DecimalParameter(0.05, 0.85, decimals=2, default=0.55, optimize=True, load=True, space='buy')
|
||||
@ -259,7 +259,7 @@ class FreqaiPrimer(IStrategy):
|
||||
freqai_entry_up_percent = DecimalParameter(0.3, 2.0, decimals=2, default=0.5, optimize=True, load=True, space='buy')
|
||||
|
||||
# FreqAI 标签定义:exit_signal 的洛底下跌幅度(%)
|
||||
freqai_exit_down_percent = DecimalParameter(0.3, 2.0, decimals=2, default=0.5, optimize=True, load=True, space='buy')
|
||||
freqai_exit_down_percent = DecimalParameter(0.3, 2.0, decimals=2, default=0.5, optimize=Truw, load=True, space='buy')
|
||||
|
||||
# 定义可优化参数
|
||||
# 初始入场金额: 75.00
|
||||
@ -280,20 +280,30 @@ class FreqaiPrimer(IStrategy):
|
||||
stake_divisor = DecimalParameter(2.0, 12.0, decimals=2, default=9.3, optimize=False, load=True, space='buy') # 加仓金额分母(小数类型,保留2位小数)
|
||||
|
||||
# 线性ROI参数 - 用于线性函数: y = (a * (x + k)) + t
|
||||
roi_param_a = DecimalParameter(-0.0002, -0.00005, decimals=5, default=-0.0001, optimize=True, load=True, space='sell') # 系数a
|
||||
roi_param_k = IntParameter(20, 150, default=50, optimize=True, load=True, space='sell') # 偏移量k
|
||||
roi_param_t = DecimalParameter(0.02, 0.18, decimals=3, default=0.06, optimize=True, load=True, space='sell') # 常数项t
|
||||
roi_param_a = DecimalParameter(-0.0002, -0.00005, decimals=5, default=-0.0001, optimize=False, load=True, space='sell') # 系数a
|
||||
roi_param_k = IntParameter(20, 150, default=50, optimize=False, load=True, space='sell') # 偏移量k
|
||||
roi_param_t = DecimalParameter(0.02, 0.18, decimals=3, default=0.06, optimize=False, load=True, space='sell') # 常数项t
|
||||
# 出场条件阈值参数
|
||||
exit_bb_upper_deviation = DecimalParameter(0.98, 1.02, decimals=2, default=1.0, optimize=True, load=True, space='sell')
|
||||
exit_volume_multiplier = DecimalParameter(1.5, 3.0, decimals=1, default=2.0, optimize=True, load=True, space='sell')
|
||||
exit_bb_upper_deviation = DecimalParameter(0.98, 1.02, decimals=2, default=1.0, optimize=False, load=True, space='sell')
|
||||
exit_volume_multiplier = DecimalParameter(1.5, 3.0, decimals=1, default=2.0, optimize=False, load=True, space='sell')
|
||||
|
||||
rsi_overbought = IntParameter(50, 70, default=58, optimize=True, load=True, space='sell')
|
||||
rsi_overbought = IntParameter(50, 70, default=58, optimize=False, load=True, space='sell')
|
||||
|
||||
|
||||
def informative_pairs(self):
|
||||
pairs = self.dp.current_whitelist()
|
||||
return [(pair, '15m') for pair in pairs] + [(pair, '1h') for pair in pairs]
|
||||
|
||||
def log_info(self, message: str):
|
||||
"""
|
||||
条件化的 INFO 日志输出,通过 config 中的 enable_strategy_logs 控制
|
||||
用法:self.log_info(f"[{pair}] 一些信息")
|
||||
"""
|
||||
# 从 config 中读取日志开关,默认开启
|
||||
enable_logs = self.config.get('enable_strategy_logs', True)
|
||||
if enable_logs:
|
||||
logger.info(message)
|
||||
|
||||
def _validate_dataframe_columns(self, dataframe: DataFrame, required_columns: list, metadata: dict):
|
||||
"""
|
||||
验证数据框中是否包含所有需要的列。
|
||||
@ -808,17 +818,17 @@ class FreqaiPrimer(IStrategy):
|
||||
allow_trade = False
|
||||
|
||||
# 检查2:检查是否处于剧烈拉升的不稳固区域
|
||||
if allow_trade:
|
||||
is_unstable_region = self.detect_h1_rapid_rise(pair)
|
||||
if is_unstable_region:
|
||||
#logger.info(f"[{pair}] 由于检测到剧烈拉升,取消入场交易")
|
||||
allow_trade = False
|
||||
# if allow_trade:
|
||||
# is_unstable_region = self.detect_h1_rapid_rise(pair)
|
||||
# if is_unstable_region:
|
||||
# #logger.info(f"[{pair}] 由于检测到剧烈拉升,取消入场交易")
|
||||
# allow_trade = False
|
||||
|
||||
# 检查3:ML 审核官(FreqAI 过滤低质量入场)
|
||||
# 逻辑:用 entry_signal 概率来判断——若"容易上涨概率"低,则拒绝入场
|
||||
if allow_trade:
|
||||
try:
|
||||
df, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
|
||||
df, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe
|
||||
if len(df) > 0:
|
||||
last_row = df.iloc[-1]
|
||||
entry_prob = None
|
||||
@ -843,10 +853,10 @@ class FreqaiPrimer(IStrategy):
|
||||
entry_prob = max(0.0, min(1.0, entry_prob))
|
||||
entry_threshold = self.ml_entry_signal_threshold.value
|
||||
if entry_prob < entry_threshold:
|
||||
logger.info(f"[{pair}] ML 审核官拒绝入场: entry_signal 概率 {entry_prob:.2f} < 阈值 {entry_threshold:.2f}(上涨概率低,不宜入场)")
|
||||
self.log_info(f"[{pair}] ML 审核官拒绝入场: entry_signal 概率 {entry_prob:.2f} < 阈值 {entry_threshold:.2f}(上涨概率低,不宜入场)")
|
||||
allow_trade = False
|
||||
else:
|
||||
logger.info(f"[{pair}] ML 审核官允许入场: entry_signal 概率 {entry_prob:.2f} >= 阈值 {entry_threshold:.2f}")
|
||||
self.log_info(f"[{pair}] ML 审核官允许入场: entry_signal 概率 {entry_prob:.2f} >= 阈值 {entry_threshold:.2f}")
|
||||
except Exception as e:
|
||||
logger.warning(f"[{pair}] ML 审核官检查失败,忽略 ML 过滤: {e}")
|
||||
|
||||
|
||||
@ -494,6 +494,7 @@ docker-compose run --rm freqtrade hyperopt $PAIRS_FLAG \
|
||||
--strategy $STRATEGY_CLASS_NAME \
|
||||
--config /freqtrade/config_examples/$CONFIG_FILE \
|
||||
--config /freqtrade/templates/${PARAMS_NAME}.json \
|
||||
--config /freqtrade/config_example/nolog.json \
|
||||
--enable-protections \
|
||||
--strategy-path /freqtrade/templates \
|
||||
--timerange ${START_DATE}-${END_DATE} \
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user