coverjson.sh 用来把从es里得到的某个非最优解覆盖到json文件
This commit is contained in:
parent
82cb644959
commit
7e7e504c4f
124
tools/coverjson.sh
Normal file
124
tools/coverjson.sh
Normal file
@ -0,0 +1,124 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 脚本功能:将 optimized.json 中 parameters 的属性值覆盖到 freqaiprimer.json 中的同名属性
|
||||
|
||||
set -e
|
||||
|
||||
# 定义文件路径
|
||||
OPTIMIZED_JSON="../freqtrade/templates/optimized.json"
|
||||
FREQAIPRIMER_JSON="../freqtrade/templates/freqaiprimer.json"
|
||||
|
||||
# 检查文件是否存在
|
||||
if [ ! -f "$OPTIMIZED_JSON" ]; then
|
||||
echo "❌ 错误:文件 $OPTIMIZED_JSON 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$FREQAIPRIMER_JSON" ]; then
|
||||
echo "❌ 错误:文件 $FREQAIPRIMER_JSON 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 jq 是否安装
|
||||
if ! command -v jq &>/dev/null; then
|
||||
echo "❌ 错误:未安装 jq 工具,请先安装 jq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🔍 正在从 $OPTIMIZED_JSON 提取 parameters 中的属性..."
|
||||
|
||||
# 从 optimized.json 中提取 parameters 对象
|
||||
PARAMETERS=$(jq -c '.hits.hits[0]._source.parameters' "$OPTIMIZED_JSON")
|
||||
|
||||
if [ "$PARAMETERS" = "null" ]; then
|
||||
echo "❌ 错误:在 $OPTIMIZED_JSON 中未找到 parameters 对象"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 成功提取 parameters 对象"
|
||||
|
||||
# 显示将要覆盖的参数
|
||||
echo "📋 将要覆盖的参数:"
|
||||
echo "$PARAMETERS" | jq 'to_entries[] | "\(.key): \(.value)"' | sed 's/"//g'
|
||||
|
||||
# 备份原文件
|
||||
cp "$FREQAIPRIMER_JSON" "$FREQAIPRIMER_JSON.backup.$(date +%Y%m%d_%H%M%S)"
|
||||
echo "💾 已备份原文件至: $FREQAIPRIMER_JSON.backup.$(date +%Y%m%d_%H%M%S)"
|
||||
|
||||
# 更新 freqaiprimer.json 文件中的参数
|
||||
echo "🔄 正在更新参数..."
|
||||
|
||||
# 使用 Python 脚本进行参数更新,避免复杂的 jq 嵌套
|
||||
python3 <<EOF
|
||||
import json
|
||||
|
||||
# 读取参数
|
||||
with open('$OPTIMIZED_JSON', 'r') as f:
|
||||
optimized_data = json.load(f)
|
||||
|
||||
parameters = optimized_data['hits']['hits'][0]['_source']['parameters']
|
||||
|
||||
# 读取目标文件
|
||||
with open('$FREQAIPRIMER_JSON', 'r') as f:
|
||||
freqaiprimer_data = json.load(f)
|
||||
|
||||
# 更新 buy 参数
|
||||
buy_params = [
|
||||
"add_position_callback", "adjust_multiplier", "bb_length", "bb_lower_deviation",
|
||||
"bb_std", "bb_width_threshold", "h1_max_candles", "h1_max_consecutive_candles",
|
||||
"h1_rapid_rise_threshold", "max_entry_adjustments", "min_condition_count",
|
||||
"rsi_bull_threshold", "rsi_length", "rsi_oversold", "stochrsi_bull_threshold",
|
||||
"stochrsi_neutral_threshold", "volume_multiplier"
|
||||
]
|
||||
|
||||
for param in buy_params:
|
||||
if param in parameters:
|
||||
value = parameters[param]
|
||||
# 尝试转换为数字
|
||||
try:
|
||||
if '.' in str(value):
|
||||
value = float(value)
|
||||
else:
|
||||
value = int(value)
|
||||
except:
|
||||
pass # 保持原值
|
||||
freqaiprimer_data['params']['buy'][param] = value
|
||||
print(f"更新 buy.{param}: {value}")
|
||||
|
||||
# 更新 sell 参数
|
||||
sell_params = [
|
||||
"exit_bb_upper_deviation", "exit_volume_multiplier", "max_reduce_adjustments",
|
||||
"reduce_coefficient", "reduce_profit_base", "rsi_overbought"
|
||||
]
|
||||
|
||||
for param in sell_params:
|
||||
if param in parameters:
|
||||
value = parameters[param]
|
||||
# 尝试转换为数字
|
||||
try:
|
||||
if '.' in str(value):
|
||||
value = float(value)
|
||||
else:
|
||||
value = int(value)
|
||||
except:
|
||||
pass # 保持原值
|
||||
freqaiprimer_data['params']['sell'][param] = value
|
||||
print(f"更新 sell.{param}: {value}")
|
||||
|
||||
# 写回文件
|
||||
with open('$FREQAIPRIMER_JSON', 'w') as f:
|
||||
json.dump(freqaiprimer_data, f, indent=2, ensure_ascii=False)
|
||||
|
||||
print("✅ 参数更新完成")
|
||||
EOF
|
||||
|
||||
echo "✅ 参数覆盖完成!"
|
||||
|
||||
# 验证更新结果
|
||||
echo "✅ 验证更新结果:"
|
||||
echo "Buy 参数:"
|
||||
jq '.params.buy' "$FREQAIPRIMER_JSON"
|
||||
echo "Sell 参数:"
|
||||
jq '.params.sell' "$FREQAIPRIMER_JSON"
|
||||
|
||||
echo "🎉 脚本执行完成"
|
||||
Loading…
x
Reference in New Issue
Block a user