backtesting 通过了, 继续优化
This commit is contained in:
parent
cbb1de8a02
commit
a6ef1ce401
@ -67,7 +67,7 @@
|
|||||||
"freqaimodel": "CatboostClassifier",
|
"freqaimodel": "CatboostClassifier",
|
||||||
"purge_old_models": 2,
|
"purge_old_models": 2,
|
||||||
"train_period_days": 15,
|
"train_period_days": 15,
|
||||||
"identifier": "test58",
|
"identifier": "test62",
|
||||||
"train_period_days": 30,
|
"train_period_days": 30,
|
||||||
"backtest_period_days": 10,
|
"backtest_period_days": 10,
|
||||||
"live_retrain_hours": 0,
|
"live_retrain_hours": 0,
|
||||||
|
|||||||
@ -49,23 +49,24 @@ services:
|
|||||||
# --strategy FreqaiExampleStrategy
|
# --strategy FreqaiExampleStrategy
|
||||||
# --timerange 20250310-20250410
|
# --timerange 20250310-20250410
|
||||||
# --export trades
|
# --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: >
|
# command: >
|
||||||
# backtesting
|
# hyperopt
|
||||||
# --logfile /freqtrade/user_data/logs/freqtrade.log
|
# --logfile /freqtrade/user_data/logs/freqtrade.log
|
||||||
# --freqaimodel LightGBMRegressor
|
# --freqaimodel LightGBMRegressor
|
||||||
# --config /freqtrade/config_examples/config_freqai.okx.json
|
# --config /freqtrade/config_examples/config_freqai.okx.json
|
||||||
# --strategy-path /freqtrade/templates
|
# --strategy-path /freqtrade/templates
|
||||||
# --strategy FreqaiExampleStrategy
|
# --strategy FreqaiExampleStrategy
|
||||||
# --timerange 20250301-20250420
|
# --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["volume"] / dataframe["volume"].rolling(period).mean()
|
||||||
)
|
)
|
||||||
dataframe.replace([np.inf, -np.inf], 0, inplace=True)
|
dataframe.replace([np.inf, -np.inf], 0, inplace=True)
|
||||||
dataframe.fillna(method='ffill', inplace=True)
|
dataframe.ffill(inplace=True)
|
||||||
dataframe.fillna(0, inplace=True)
|
dataframe.fillna(0, inplace=True)
|
||||||
return dataframe
|
return dataframe
|
||||||
|
|
||||||
@ -156,9 +156,21 @@ class FreqaiExampleStrategy(IStrategy):
|
|||||||
|
|
||||||
# 限制预测值,添加平滑
|
# 限制预测值,添加平滑
|
||||||
dataframe["buy_rsi_pred"] = dataframe["&-buy_rsi"].rolling(5).mean().clip(10, 50)
|
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"] = 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"] = 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"] = 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"]:
|
for col in ["buy_rsi_pred", "sell_rsi_pred", "stoploss_pred", "roi_0_pred", "&-sell_rsi", "&-stoploss", "&-roi_0"]:
|
||||||
@ -175,10 +187,10 @@ class FreqaiExampleStrategy(IStrategy):
|
|||||||
self.sell_rsi.value = float(dataframe["sell_rsi_pred"].iloc[-1])
|
self.sell_rsi.value = float(dataframe["sell_rsi_pred"].iloc[-1])
|
||||||
self.stoploss = float(self.stoploss_param.value)
|
self.stoploss = float(self.stoploss_param.value)
|
||||||
self.minimal_roi = {
|
self.minimal_roi = {
|
||||||
"0": float(self.roi_0.value),
|
0: float(self.roi_0.value),
|
||||||
"15": float(self.roi_15.value),
|
15: float(self.roi_15.value),
|
||||||
"30": float(self.roi_30.value),
|
30: float(self.roi_30.value),
|
||||||
"60": 0
|
60: 0
|
||||||
}
|
}
|
||||||
self.trailing_stop_positive = float(dataframe["trailing_stop_positive"].iloc[-1])
|
self.trailing_stop_positive = float(dataframe["trailing_stop_positive"].iloc[-1])
|
||||||
self.trailing_stop_positive_offset = float(dataframe["trailing_stop_positive_offset"].iloc[-1])
|
self.trailing_stop_positive_offset = float(dataframe["trailing_stop_positive_offset"].iloc[-1])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user