backtesting 通过了, 继续优化
This commit is contained in:
parent
cbb1de8a02
commit
a6ef1ce401
@ -67,7 +67,7 @@
|
||||
"freqaimodel": "CatboostClassifier",
|
||||
"purge_old_models": 2,
|
||||
"train_period_days": 15,
|
||||
"identifier": "test58",
|
||||
"identifier": "test62",
|
||||
"train_period_days": 30,
|
||||
"backtest_period_days": 10,
|
||||
"live_retrain_hours": 0,
|
||||
|
||||
@ -49,23 +49,24 @@ services:
|
||||
# --strategy FreqaiExampleStrategy
|
||||
# --timerange 20250310-20250410
|
||||
# --export trades
|
||||
command: >
|
||||
hyperopt
|
||||
--logfile /freqtrade/user_data/logs/freqtrade.log
|
||||
--freqaimodel LightGBMRegressor
|
||||
--config /freqtrade/config_examples/config_freqai.okx.json
|
||||
--strategy-path /freqtrade/templates
|
||||
--strategy FreqaiExampleStrategy
|
||||
--timerange 20250301-20250420
|
||||
--hyperopt-loss SharpeHyperOptLoss
|
||||
--spaces roi stoploss
|
||||
-e 200
|
||||
|
||||
# command: >
|
||||
# backtesting
|
||||
# hyperopt
|
||||
# --logfile /freqtrade/user_data/logs/freqtrade.log
|
||||
# --freqaimodel LightGBMRegressor
|
||||
# --config /freqtrade/config_examples/config_freqai.okx.json
|
||||
# --strategy-path /freqtrade/templates
|
||||
# --strategy FreqaiExampleStrategy
|
||||
# --timerange 20250301-20250420
|
||||
# --hyperopt-loss SharpeHyperOptLoss
|
||||
# --spaces roi stoploss
|
||||
# -e 200
|
||||
|
||||
command: >
|
||||
backtesting
|
||||
--logfile /freqtrade/user_data/logs/freqtrade.log
|
||||
--freqaimodel LightGBMRegressor
|
||||
--config /freqtrade/config_examples/config_freqai.okx.json
|
||||
--config /freqtrade/templates/FreqaiExampleStrategy.json
|
||||
--strategy-path /freqtrade/templates
|
||||
--strategy FreqaiExampleStrategy
|
||||
--timerange 20240920-20250420
|
||||
|
||||
@ -79,7 +79,7 @@ class FreqaiExampleStrategy(IStrategy):
|
||||
dataframe["volume"] / dataframe["volume"].rolling(period).mean()
|
||||
)
|
||||
dataframe.replace([np.inf, -np.inf], 0, inplace=True)
|
||||
dataframe.fillna(method='ffill', inplace=True)
|
||||
dataframe.ffill(inplace=True)
|
||||
dataframe.fillna(0, inplace=True)
|
||||
return dataframe
|
||||
|
||||
@ -156,10 +156,22 @@ class FreqaiExampleStrategy(IStrategy):
|
||||
|
||||
# 限制预测值,添加平滑
|
||||
dataframe["buy_rsi_pred"] = dataframe["&-buy_rsi"].rolling(5).mean().clip(10, 50)
|
||||
dataframe["buy_rsi_pred"].fillna(dataframe["buy_rsi_pred"].mean(), inplace=True)
|
||||
if dataframe["buy_rsi_pred"].isna().any():
|
||||
logger.warning("buy_rsi_pred 列包含 NaN,已填充为默认值")
|
||||
dataframe["sell_rsi_pred"] = dataframe["&-sell_rsi"].rolling(5).mean().clip(50, 90)
|
||||
dataframe["sell_rsi_pred"].fillna(dataframe["sell_rsi_pred"].mean(), inplace=True)
|
||||
if dataframe["sell_rsi_pred"].isna().any():
|
||||
logger.warning("sell_rsi_pred 列包含 NaN,已填充为默认值")
|
||||
dataframe["stoploss_pred"] = dataframe["&-stoploss"].clip(-0.35, -0.1)
|
||||
dataframe["stoploss_pred"].fillna(dataframe["stoploss_pred"].mean(), inplace=True)
|
||||
if dataframe["stoploss_pred"].isna().any():
|
||||
logger.warning("stoploss_pred 列包含 NaN,已填充为默认值")
|
||||
dataframe["roi_0_pred"] = dataframe["&-roi_0"].clip(0.01, 0.2)
|
||||
|
||||
dataframe["roi_0_pred"].fillna(dataframe["roi_0_pred"].mean(), inplace=True)
|
||||
if dataframe["roi_0_pred"].isna().any():
|
||||
logger.warning("roi_0_pred 列包含 NaN,已填充为默认值")
|
||||
|
||||
# 检查预测值
|
||||
for col in ["buy_rsi_pred", "sell_rsi_pred", "stoploss_pred", "roi_0_pred", "&-sell_rsi", "&-stoploss", "&-roi_0"]:
|
||||
if dataframe[col].isna().any():
|
||||
@ -175,10 +187,10 @@ class FreqaiExampleStrategy(IStrategy):
|
||||
self.sell_rsi.value = float(dataframe["sell_rsi_pred"].iloc[-1])
|
||||
self.stoploss = float(self.stoploss_param.value)
|
||||
self.minimal_roi = {
|
||||
"0": float(self.roi_0.value),
|
||||
"15": float(self.roi_15.value),
|
||||
"30": float(self.roi_30.value),
|
||||
"60": 0
|
||||
0: float(self.roi_0.value),
|
||||
15: float(self.roi_15.value),
|
||||
30: float(self.roi_30.value),
|
||||
60: 0
|
||||
}
|
||||
self.trailing_stop_positive = float(dataframe["trailing_stop_positive"].iloc[-1])
|
||||
self.trailing_stop_positive_offset = float(dataframe["trailing_stop_positive_offset"].iloc[-1])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user