尝试使用一次函数, 不再使用反正切函数

This commit is contained in:
zhangkun9038@dingtalk.com 2025-09-14 23:45:13 +08:00
parent 1408747390
commit b0173e9a09
2 changed files with 11 additions and 12 deletions

View File

@ -36,9 +36,8 @@
"sell": {
"exit_bb_upper_deviation": 0.98,
"exit_volume_multiplier": 1.5,
"roi_param_a": 0.039,
"roi_param_k": 0.0101,
"roi_param_t0": 908,
"roi_param_a": -0.0001,
"roi_param_t": 0.06,
"rsi_overbought": 55
},
"protection": {}

View File

@ -106,10 +106,9 @@ class FreqaiPrimer(IStrategy):
add_position_callback = DecimalParameter(0.03, 0.06, decimals=3, default=0.047, optimize=True, load=True, space='buy') # 加仓回调百分比
stake_divisor = IntParameter(2, 4, default=2, optimize=False, load=True, space='buy') # 加仓金额分母
# 动态ROI参数 - 指数衰减函数参数 (ROI(t) = a·e^(-k·t) + c)
roi_param_a = DecimalParameter(0.03, 0.08, decimals=3, default=0.05, optimize=True, load=True, space='sell') # 初始ROI水平
roi_param_k = DecimalParameter(0.007, 0.013, decimals=4, default=0.01, optimize=True, load=True, space='sell') # 衰减速率
roi_param_t0 = IntParameter(300, 960, default=360, optimize=True, load=True, space='sell') # 最低ROI水平
# 线性ROI参数 - 用于线性函数: y = (a * x) + t
roi_param_a = DecimalParameter(-0.0002, -0.00005, decimals=5, default=-0.0001, optimize=True, load=True, space='sell') # 系数a
roi_param_t = DecimalParameter(0.04, 0.08, decimals=3, default=0.06, optimize=True, 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')
@ -557,11 +556,12 @@ class FreqaiPrimer(IStrategy):
if trade_age_minutes < 0:
trade_age_minutes = 0
a = self.roi_param_a.value
k = self.roi_param_k.value
t0 = self.roi_param_t0.value
dynamic_roi_threshold = -a * math.atan(k * (trade_age_minutes - t0))
# 使用可优化的线性函数: y = (a * x) + t
a = self.roi_param_a.value # 系数a (可优化参数)
t = self.roi_param_t.value # 常数项t (可优化参数)
dynamic_roi_threshold = (a * trade_age_minutes) + t
# 确保ROI阈值不小于0
if dynamic_roi_threshold < 0:
dynamic_roi_threshold = 0.0