加入并上报VIRTUAL_HOST_NAME

This commit is contained in:
zhangkun9038@dingtalk.com 2026-02-16 02:27:50 +08:00
parent c6b6f3573f
commit 576a776186
3 changed files with 56 additions and 1 deletions

View File

@ -123,7 +123,8 @@
"bagging_fraction": 0.8,
"bagging_freq": 5,
"verbose": -1
}
},
"ml_prediction_api_url": "http://pairlist.xl.home/api/mlprediction"
},
"api_server": {
"enabled": true,

View File

@ -867,6 +867,55 @@ class FreqaiPrimer(IStrategy):
vol_val = pred_values.get('&s-future_volatility', 'N/A')
self.strategy_log(f"[{metadata['pair']}] FreqAI三目标预测 - 入场:{entry_val}, 出场:{exit_val}, 波动率:{vol_val}")
# ========== 新增发送HTTP请求 ==========
# 从配置中读取API URL
api_url = self.config.get('freqai', {}).get('ml_prediction_api_url', '')
if api_url:
import json
import urllib.request
import urllib.error
import os
# 从环境变量获取virtualHostName
virtual_host_name = os.environ.get('VIRTUAL_HOST_NAME')
# 只有正确获取到virtualHostName时才发送请求
if virtual_host_name and virtual_host_name != 'default-vhost':
# 准备请求数据
request_data = {
"hostName": "freqtrade-live-c6b6f357-20260215212649",
"virtualHostName": virtual_host_name,
"pairName": metadata['pair'],
"timestamp": int(last_row['date'].timestamp()),
"values": {
"&s-entry_signal": pred_values.get('&s-entry_signal', 0),
"&s-exit_signal": pred_values.get('&s-exit_signal', 0),
"&s-future_volatility": pred_values.get('&s-future_volatility', 0)
}
}
# 转换为JSON
json_data = json.dumps(request_data).encode('utf-8')
# 发送请求
try:
req = urllib.request.Request(api_url, data=json_data, method='POST')
req.add_header('Content-Type', 'application/json')
with urllib.request.urlopen(req, timeout=5) as response:
status_code = response.getcode()
if status_code == 200:
self.strategy_log(f"[{metadata['pair']}] 成功发送ML预测数据到API (virtualHostName: {virtual_host_name})")
else:
self.strategy_log(f"[{metadata['pair']}] 发送ML预测数据失败状态码: {status_code}")
except urllib.error.URLError as e:
self.strategy_log(f"[{metadata['pair']}] 发送ML预测数据网络错误: {str(e)}")
except Exception as e:
self.strategy_log(f"[{metadata['pair']}] 发送ML预测数据其他错误: {str(e)}")
else:
self.strategy_log(f"[{metadata['pair']}] 未正确获取到virtualHostName跳过发送ML预测数据")
else:
self.strategy_log(f"[{metadata['pair']}] ML预测API URL未配置跳过发送")
except Exception as e:
self.strategy_log(f"[{metadata['pair']}] 记录FreqAI预测结果时出错: {str(e)}")

View File

@ -333,6 +333,10 @@ cd -
# 第3步启动新容器
echo "正在启动新容器..." >&2
# 获取宿主机虚机名
VIRTUAL_HOST_NAME=$(hostname)
echo "获取到宿主机虚机名: $VIRTUAL_HOST_NAME" >&2
# 临时禁用 set -e以便捕获 docker run 的错误
set +e
docker run -d --restart=always \
@ -340,6 +344,7 @@ docker run -d --restart=always \
-p 8080:8080 \
--add-host "www.okx.com:104.18.43.174" \
--add-host "api.okx.com:104.18.43.174" \
-e VIRTUAL_HOST_NAME="$VIRTUAL_HOST_NAME" \
-v "$(pwd)/../user_data:/freqtrade/user_data" \
-v "$(pwd)/../config_examples:/freqtrade/config_examples" \
-v "$(pwd)/../freqtrade/templates:/freqtrade/templates" \