diff --git a/__pycache__/get_positions.cpython-313.pyc b/__pycache__/get_positions.cpython-313.pyc new file mode 100644 index 0000000..a8082f9 Binary files /dev/null and b/__pycache__/get_positions.cpython-313.pyc differ diff --git a/get_positions.py b/get_positions.py new file mode 100644 index 0000000..e91795f --- /dev/null +++ b/get_positions.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +OKX 账户只读查询: 余额 + 当前持仓 +- 仅使用 GET 只读接口, 绝不写入/下单 +- 密钥从同目录 okx_keys.json 读取 +- 支持代理: 命令行 --proxy 或环境变量 OKX_PROXY, 如 http://127.0.0.1:1081 或 socks5://127.0.0.1:1082 +- 支持自定义入口: --host 默认 https://www.okx.com +- 支持 DNS 劫持绕过: --dns-ip 指定连接 IP (如 TUN fake-ip 198.18.0.0), + 仅影响 TCP 连接地址, Host/SNI/证书校验仍用真实域名 +""" +import json, hmac, hashlib, base64, datetime, sys, os, argparse +import subprocess + +HERE = os.path.dirname(os.path.abspath(__file__)) +KEYS_FILE = os.path.join(HERE, "okx_keys.json") + + +def load_keys(): + with open(KEYS_FILE, "r", encoding="utf-8") as f: + return json.load(f) + + +def sign(secret, timestamp, method, path, body=""): + pre = timestamp + method.upper() + path + body + mac = hmac.new(secret.encode("utf-8"), pre.encode("utf-8"), hashlib.sha256) + return base64.b64encode(mac.digest()).decode() + + +def build_opener(proxy): + if proxy: + handler = urllib.request.ProxyHandler({"http": proxy, "https": proxy}) + return urllib.request.build_opener(handler) + return urllib.request.build_opener() + + +def patch_dns(dns_ip): + """把指定域名的 DNS 解析替换为 dns_ip (绕过 DNS 污染, TUN fake-ip 场景)""" + import socket + real_getaddrinfo = socket.getaddrinfo + + def patched(host, port, *args, **kwargs): + if host == "www.okx.com": + return real_getaddrinfo(dns_ip, port, *args, **kwargs) + return real_getaddrinfo(host, port, *args, **kwargs) + + socket.getaddrinfo = patched + + +def okx_get_curl(path, keys, host, dns_ip=None, proxy=None): + """用 curl 发请求 (绕过 Cloudflare 对 Python-urllib 的 TLS/UA 拦截)""" + ts = datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + sig = sign(keys["secret"], ts, "GET", path, "") + url = host + path + cmd = ["curl", "-s", "--max-time", "15"] + if dns_ip: + domain = host.split("//")[1].split("/")[0] + cmd += ["--resolve", f"{domain}:443:{dns_ip}"] + if proxy: + cmd += ["-x", proxy] + cmd += [ + "-H", f"OK-ACCESS-KEY:{keys['api_key']}", + "-H", f"OK-ACCESS-SIGN:{sig}", + "-H", f"OK-ACCESS-TIMESTAMP:{ts}", + "-H", f"OK-ACCESS-PASSPHRASE:{keys['passphrase']}", + "-H", "Content-Type:application/json", + "-H", "User-Agent:curl/8.5.0", + url, + ] + try: + out = subprocess.run(cmd, capture_output=True, text=True, timeout=20).stdout + return json.loads(out) + except Exception as e: + return {"code": "-1", "msg": str(e)} + + +def okx_get(path, keys, host, opener): + ts = datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + sig = sign(keys["secret"], ts, "GET", path, "") + req = urllib.request.Request(host + path) + req.add_header("OK-ACCESS-KEY", keys["api_key"]) + req.add_header("OK-ACCESS-SIGN", sig) + req.add_header("OK-ACCESS-TIMESTAMP", ts) + req.add_header("OK-ACCESS-PASSPHRASE", keys["passphrase"]) + req.add_header("Content-Type", "application/json") + try: + with opener.open(req, timeout=15) as r: + return json.loads(r.read().decode()) + except Exception as e: + return {"code": "-1", "msg": str(e)} + + +def fmt(n, d=4): + try: + return f"{float(n):,.{d}f}" + except Exception: + return str(n) + + +def main(): + ap = argparse.ArgumentParser(description="OKX 账户只读查询") + ap.add_argument("--proxy", default=os.environ.get("OKX_PROXY"), + help="代理地址, 如 http://127.0.0.1:1081 或 socks5://127.0.0.1:1082") + ap.add_argument("--host", default="https://www.okx.com", + help="API 入口, 默认 https://www.okx.com (可换 aws.okx.com)") + ap.add_argument("--dns-ip", default=os.environ.get("OKX_DNS_IP"), + help="绕过 DNS 污染: 强制用该 IP 连接 www.okx.com (如 TUN fake-ip 198.18.0.0)") + args = ap.parse_args() + + keys = load_keys() + + bal = okx_get_curl("/api/v5/account/balance", keys, args.host, args.dns_ip, args.proxy) + if bal.get("code") != "0": + print("余额查询失败:", bal.get("msg", bal)) + return + + pos = okx_get_curl("/api/v5/account/positions", keys, args.host, args.dns_ip, args.proxy) + if pos.get("code") != "0": + print("持仓查询失败:", pos.get("msg", pos)) + return + + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + d = bal["data"][0] + + # 从 details 汇总各币种余额 + details_bal = d.get("details", []) + rows = [] + total_avail = total_frozen = total_upl_bal = 0.0 + for c in details_bal: + ccy = c.get("ccy", "") + avail = float(c.get("availEq") or c.get("availBal") or 0) + frozen = float(c.get("frozenBal") or 0) + ord_froz = float(c.get("ordFrozen") or 0) + upl_c = float(c.get("upl") or 0) + if ccy: + rows.append((ccy, avail, frozen, ord_froz, upl_c)) + total_avail += avail + total_frozen += frozen + total_upl_bal += upl_c + + print("=" * 78) + print(f"OKX 账户快照 {now}") + print(f"总权益 totalEq : {fmt(d.get('totalEq'), 2)} USDT") + print(f"可用余额合计 : {total_avail:,.2f} USDT") + print(f"冻结资金合计 : {total_frozen:,.2f} USDT (其中挂单冻结 {sum(r[3] for r in rows):,.2f})") + print(f"未实现盈亏 UPL : {total_upl_bal:+,.2f} USDT") + print("-" * 78) + print(f"{'币种':<8}{'可用余额':>16}{'冻结':>16}{'挂单冻结':>16}") + for ccy, avail, frozen, ord_froz, _ in rows: + if avail or frozen: + print(f"{ccy:<8}{avail:>16,.6f}{frozen:>16,.6f}{ord_froz:>16,.6f}") + print("=" * 78) + + details = pos.get("data", []) + if not details: + print("当前无持仓") + return + + print(f"{'合约':<14}{'方向':<6}{'数量':>12}{'开仓均价':>14}{'标记价':>14}{'保证金':>12}{'杠杆':>6}{'强平价':>14}{'浮动盈亏':>14}") + print("-" * 78) + total_upl = 0.0 + for p in details: + inst = p.get("instId", "") + pos_side = p.get("posSide", "") + sz = float(p.get("pos", 0) or 0) + avg_px = float(p.get("avgPx", 0) or 0) + mark_px = float(p.get("markPx", 0) or 0) + margin = float(p.get("margin", 0) or 0) + lev = p.get("lever", "") + liq = float(p.get("liqPx", 0) or 0) + upl = float(p.get("upl", 0) or 0) + total_upl += upl + side_cn = {"long": "多", "short": "空", "net": "净"}.get(pos_side, pos_side) + print(f"{inst:<14}{side_cn:<6}{fmt(sz):>12}{fmt(avg_px):>14}{fmt(mark_px):>14}" + f"{fmt(margin, 2):>12}{lev:>6}{fmt(liq):>14}{fmt(upl, 2):>14}") + print("-" * 78) + print(f"持仓合计浮动盈亏: {total_upl:+,.2f} USDT") + + +if __name__ == "__main__": + main() diff --git a/xau_monitor.log b/xau_monitor.log new file mode 100644 index 0000000..411be8e --- /dev/null +++ b/xau_monitor.log @@ -0,0 +1,982 @@ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:29:31 +================================================================ +现价 4,648.50 前一根 4,648.00 涨跌 +0.01% +趋势: 震荡 斜率 +0.002%/min +均线 SMA7 4,647.56 SMA25 4,646.93 SMA60 4,645.43 +EMA EMA12 4,647.33 EMA26 4,646.75 差 0.01% +RSI(14) 60.1 MACD DIF 0.58 DEA 0.49 HIST 0.09 +支撑 4,642.50 阻力 4,649.20 枢轴 4,646.73 +成交量 当前 12,861.32 USDT / 均值 152,781.63 +---------------------------------------------------------------- +【操作建议】 观望 置信度 55% + 依据: + · 区间震荡, 等待突破 + · RSI 60 偏强 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · 贴近支撑 4642.5, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:29:44 +================================================================ +现价 4,648.50 前一根 4,648.00 涨跌 +0.01% +趋势: 震荡 斜率 +0.002%/min +均线 SMA7 4,647.56 SMA25 4,646.93 SMA60 4,645.43 +EMA EMA12 4,647.33 EMA26 4,646.75 差 0.01% +RSI(14) 60.1 MACD DIF 0.58 DEA 0.49 HIST 0.09 +支撑 4,642.50 阻力 4,649.20 枢轴 4,646.73 +成交量 当前 17,700.31 USDT / 均值 152,781.63 +---------------------------------------------------------------- +【操作建议】 观望 置信度 55% + 依据: + · 区间震荡, 等待突破 + · RSI 60 偏强 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · 贴近支撑 4642.5, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:33:58 +================================================================ +现价 4,647.90 前一根 4,649.60 涨跌 -0.04% +趋势: 震荡 斜率 +0.005%/min +均线 SMA7 4,648.93 SMA25 4,647.49 SMA60 4,645.68 +EMA EMA12 4,648.33 EMA26 4,647.47 差 0.02% +RSI(14) 51.9 MACD DIF 0.86 DEA 0.72 HIST 0.14 +SAR 4,652.25 方向 空 现价在SAR下方(空方压制) +支撑 4,642.50 阻力 4,652.40 枢轴 4,647.60 +成交量 当前 125,966.48 USDT / 均值 160,746.65 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 空方(点 4652.3, 价格在其下) + · 贴近支撑 4642.5, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:39:07 +================================================================ +现价 4,643.10 前一根 4,643.10 涨跌 +0.00% +趋势: 震荡 斜率 -0.006%/min +均线 SMA7 4,645.86 SMA25 4,647.08 SMA60 4,645.77 +EMA EMA12 4,646.17 EMA26 4,646.64 差 -0.01% +RSI(14) 36.8 MACD DIF -0.47 DEA 0.25 HIST -0.72 +SAR 4,650.74 方向 空 现价在SAR下方(空方压制) +支撑 4,640.90 阻力 4,652.40 枢轴 4,645.47 +成交量 当前 0.00 USDT / 均值 176,287.09 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 37 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4650.7, 价格在其下) + · 贴近支撑 4640.9, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:42:09 +================================================================ +现价 4,647.10 前一根 4,647.10 涨跌 +0.00% +趋势: 震荡 斜率 -0.007%/min +均线 SMA7 4,645.47 SMA25 4,647.19 SMA60 4,645.97 +EMA EMA12 4,646.60 EMA26 4,646.78 差 -0.00% +RSI(14) 51.2 MACD DIF -0.18 DEA 0.02 HIST -0.20 +SAR 4,649.07 方向 空 现价在SAR下方(空方压制) +支撑 4,640.90 阻力 4,652.40 枢轴 4,646.80 +成交量 当前 0.00 USDT / 均值 172,002.95 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 空方(点 4649.1, 价格在其下) + · 贴近支撑 4640.9, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:44:31 +================================================================ +现价 4,642.20 前一根 4,642.40 涨跌 -0.00% +趋势: 震荡 斜率 -0.012%/min +均线 SMA7 4,644.44 SMA25 4,646.72 SMA60 4,645.87 +EMA EMA12 4,645.18 EMA26 4,646.03 差 -0.02% +RSI(14) 38.1 MACD DIF -0.85 DEA -0.27 HIST -0.57 +SAR 4,648.12 方向 空 现价在SAR下方(空方压制) +支撑 4,640.90 阻力 4,652.40 枢轴 4,645.17 +成交量 当前 11,684.57 USDT / 均值 174,981.98 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 38 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4648.1, 价格在其下) + · 贴近支撑 4640.9, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:45:11 +================================================================ +现价 4,640.80 前一根 4,641.60 涨跌 -0.02% +趋势: 震荡 斜率 -0.012%/min +均线 SMA7 4,644.03 SMA25 4,646.46 SMA60 4,645.81 +EMA EMA12 4,644.43 EMA26 4,645.60 差 -0.03% +RSI(14) 35.1 MACD DIF -1.17 DEA -0.46 HIST -0.71 +SAR 4,647.69 方向 空 现价在SAR下方(空方压制) +支撑 4,640.80 阻力 4,652.40 枢轴 4,644.67 +成交量 当前 7,188.86 USDT / 均值 156,257.67 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 35 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4647.7, 价格在其下) + · 贴近支撑 4640.8, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:47:11 +================================================================ +现价 4,640.10 前一根 4,640.00 涨跌 +0.00% +趋势: 震荡 斜率 -0.013%/min +均线 SMA7 4,642.26 SMA25 4,645.91 SMA60 4,645.66 +EMA EMA12 4,643.02 EMA26 4,644.71 差 -0.04% +RSI(14) 35.3 MACD DIF -1.69 DEA -0.89 HIST -0.80 +SAR 4,646.31 方向 空 现价在SAR下方(空方压制) +支撑 4,638.70 阻力 4,652.40 枢轴 4,643.73 +成交量 当前 236.65 USDT / 均值 200,963.33 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 35 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4646.3, 价格在其下) + · 贴近支撑 4638.7, 接多性价比高 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:52:15 +================================================================ +现价 4,641.60 前一根 4,641.20 涨跌 +0.01% +趋势: 震荡 斜率 -0.007%/min +均线 SMA7 4,641.27 SMA25 4,644.80 SMA60 4,645.53 +EMA EMA12 4,642.22 EMA26 4,643.74 差 -0.03% +RSI(14) 42.2 MACD DIF -1.53 DEA -1.33 HIST -0.19 +SAR 4,643.71 方向 空 现价在SAR下方(空方压制) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.23 +成交量 当前 464.16 USDT / 均值 205,884.13 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 42 偏弱 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 空方(点 4643.7, 价格在其下) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[净] 数量 2941 开仓 4640.0 标记 4641.8 浮盈亏 +5.29(+0.04%) 强平 4505.7 杠杆 30x + ↳ ⚠距强平价仅 -2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖net] 价格 4690.0 数量 2941 类型 limit (距现价 +1.04%) + ↳ 挂卖单远高于现价 +1.04%, 若趋势转多可能接到上涨飞刀, 建议评估撤改 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:56:24 +================================================================ +现价 4,641.20 前一根 4,641.40 涨跌 -0.00% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,641.93 SMA25 4,643.71 SMA60 4,645.40 +EMA EMA12 4,642.19 EMA26 4,643.36 差 -0.03% +RSI(14) 41.7 MACD DIF -1.17 DEA -1.23 HIST 0.06 +SAR 4,638.98 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.10 +成交量 当前 1,392.36 USDT / 均值 221,977.34 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 42 偏弱 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.0, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4641.3 浮盈亏 +3.82(+0.03%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.05%) + ↳ 挂平多单高于现价 +1.05%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 13:57:06 +================================================================ +现价 4,640.80 前一根 4,641.40 涨跌 -0.01% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,641.87 SMA25 4,643.70 SMA60 4,645.39 +EMA EMA12 4,642.13 EMA26 4,643.33 差 -0.03% +RSI(14) 40.6 MACD DIF -1.20 DEA -1.24 HIST 0.04 +SAR 4,638.98 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,643.97 +成交量 当前 103,223.16 USDT / 均值 221,977.34 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 41 偏弱 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.0, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4641.1 浮盈亏 +3.24(+0.02%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.06%) + ↳ 挂平多单高于现价 +1.06%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:00:11 +================================================================ +现价 4,641.10 前一根 4,642.20 涨跌 -0.02% +趋势: 震荡 斜率 +0.001%/min +均线 SMA7 4,641.76 SMA25 4,642.62 SMA60 4,645.28 +EMA EMA12 4,641.97 EMA26 4,642.94 差 -0.02% +RSI(14) 42.8 MACD DIF -0.97 DEA -1.10 HIST 0.13 +SAR 4,639.33 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.07 +成交量 当前 81,429.99 USDT / 均值 183,773.88 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 43 偏弱 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.3, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4640.9 浮盈亏 +2.65(+0.02%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.05%) + ↳ 挂平多单高于现价 +1.05%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:03:18 +================================================================ +现价 4,639.60 前一根 4,639.70 涨跌 -0.00% +趋势: 震荡 斜率 -0.002%/min +均线 SMA7 4,641.24 SMA25 4,642.14 SMA60 4,645.01 +EMA EMA12 4,641.29 EMA26 4,642.40 差 -0.02% +RSI(14) 38.0 MACD DIF -1.11 DEA -1.06 HIST -0.05 +SAR 4,639.58 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,643.57 +成交量 当前 1,081.04 USDT / 均值 209,347.62 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 38 偏弱 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.6, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4640.0 浮盈亏 +0.00(+0.00%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.09%) + ↳ 挂平多单高于现价 +1.09%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:03:57 +================================================================ +现价 4,641.70 前一根 4,639.70 涨跌 +0.04% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,641.54 SMA25 4,642.23 SMA60 4,645.05 +EMA EMA12 4,641.61 EMA26 4,642.55 差 -0.02% +RSI(14) 46.7 MACD DIF -0.94 DEA -1.03 HIST 0.09 +SAR 4,639.58 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.27 +成交量 当前 58,238.91 USDT / 均值 209,347.62 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.6, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4641.7 浮盈亏 +5.00(+0.04%) 保本价 4644.6 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + ↳ 保本价 4644.6, 现价需再涨 0.06% 方可覆盖手续费成本(费率 0.10%) + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.04%) + ↳ 挂平多单高于现价 +1.04%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:06:21 +================================================================ +现价 4,642.10 前一根 4,642.10 涨跌 +0.00% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,641.87 SMA25 4,641.85 SMA60 4,644.92 +EMA EMA12 4,642.07 EMA26 4,642.61 差 -0.01% +RSI(14) 48.2 MACD DIF -0.54 DEA -0.81 HIST 0.27 +SAR 4,639.80 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.40 +成交量 当前 3,286.55 USDT / 均值 223,101.46 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4639.8, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4642.0 浮盈亏 +5.88(+0.04%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.03%) + ↳ 挂平多单高于现价 +1.03%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:09:27 +================================================================ +现价 4,641.60 前一根 4,641.50 涨跌 +0.00% +趋势: 震荡 斜率 +0.001%/min +均线 SMA7 4,642.20 SMA25 4,641.68 SMA60 4,644.62 +EMA EMA12 4,641.91 EMA26 4,642.42 差 -0.01% +RSI(14) 46.9 MACD DIF -0.51 DEA -0.67 HIST 0.16 +SAR 4,640.34 方向 多 现价在SAR上方(多头守护) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.23 +成交量 当前 12,968.63 USDT / 均值 185,150.22 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4640.3, 价格在其上) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4641.9 浮盈亏 +5.59(+0.04%) 强平 4505.7 杠杆 30x + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.04%) + ↳ 挂平多单高于现价 +1.04%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:12:32 +================================================================ +现价 4,641.60 前一根 4,640.40 涨跌 +0.03% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,641.43 SMA25 4,641.76 SMA60 4,644.30 +EMA EMA12 4,641.55 EMA26 4,642.12 差 -0.01% +RSI(14) 48.0 MACD DIF -0.57 DEA -0.62 HIST 0.05 +SAR 4,644.22 方向 空 现价在SAR下方(空方压制) +支撑 4,638.70 阻力 4,652.40 枢轴 4,644.23 +成交量 当前 9,258.63 USDT / 均值 188,702.86 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 空方(点 4644.2, 价格在其下) + · 贴近支撑 4638.7, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4641.6 浮盈亏 +4.71(+0.03%) 强平 4505.7 杠杆 30x + ↳ SAR 转空/价格已跌破 SAR, 多单与趋势背离, 建议减仓或设严止损 + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.04%) + ↳ 挂平多单高于现价 +1.04%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:15:38 +================================================================ +现价 4,638.30 前一根 4,640.70 涨跌 -0.05% +趋势: 震荡 斜率 -0.003%/min +均线 SMA7 4,640.70 SMA25 4,641.60 SMA60 4,644.01 +EMA EMA12 4,640.92 EMA26 4,641.69 差 -0.02% +RSI(14) 37.9 MACD DIF -0.77 DEA -0.63 HIST -0.14 +SAR 4,643.68 方向 空 现价在SAR下方(空方压制) +支撑 4,638.30 阻力 4,652.40 枢轴 4,643.00 +成交量 当前 317,393.49 USDT / 均值 154,688.28 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 38 偏弱 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 空方(点 4643.7, 价格在其下) + · 贴近支撑 4638.3, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4638.2 浮盈亏 -5.29(-0.04%) 强平 4505.7 杠杆 30x + ↳ SAR 转空/价格已跌破 SAR, 多单与趋势背离, 建议减仓或设严止损 + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.9%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.11%) + ↳ 挂平多单高于现价 +1.11%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:18:43 +================================================================ +现价 4,635.60 前一根 4,636.20 涨跌 -0.01% +趋势: 震荡 斜率 -0.011%/min +均线 SMA7 4,638.74 SMA25 4,640.87 SMA60 4,643.48 +EMA EMA12 4,639.09 EMA26 4,640.59 差 -0.03% +RSI(14) 31.5 MACD DIF -1.50 DEA -0.95 HIST -0.55 +SAR 4,642.18 方向 空 现价在SAR下方(空方压制) +支撑 4,635.50 阻力 4,652.40 枢轴 4,641.17 +成交量 当前 381,905.93 USDT / 均值 194,135.87 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 31 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4642.2, 价格在其下) + · 贴近支撑 4635.5, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4636.1 浮盈亏 -11.47(-0.08%) 强平 4505.7 杠杆 30x + ↳ SAR 转空/价格已跌破 SAR, 多单与趋势背离, 建议减仓或设严止损 + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.8%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.17%) + ↳ 挂平多单高于现价 +1.17%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:21:47 +================================================================ +现价 4,634.70 前一根 4,636.10 涨跌 -0.03% +趋势: 震荡 斜率 -0.011%/min +均线 SMA7 4,636.80 SMA25 4,640.28 SMA60 4,642.99 +EMA EMA12 4,638.02 EMA26 4,639.76 差 -0.04% +RSI(14) 31.6 MACD DIF -1.74 DEA -1.24 HIST -0.49 +SAR 4,640.05 方向 空 现价在SAR下方(空方压制) +支撑 4,634.60 阻力 4,652.40 枢轴 4,640.57 +成交量 当前 1,104,567.70 USDT / 均值 219,672.40 ⚡异动 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 32 偏弱 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4640.1, 价格在其下) + · 贴近支撑 4634.6, 接多性价比高 + · 成交量突增但方向未明, 警惕变盘 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 持仓[多] 数量 2941 开仓 4640.0 标记 4634.4 浮盈亏 -16.47(-0.12%) 强平 4505.7 杠杆 30x + ↳ SAR 转空/价格已跌破 SAR, 多单与趋势背离, 建议减仓或设严止损 + ↳ 价格贴近阻力 4652.4, 多单可逢高部分止盈 + ↳ ⚠距强平价仅 2.8%, 杠杆 30, 风险极高, 建议降杠杆或减仓 + 挂单[卖/平多] 价格 4690.0 数量 2941 类型 limit (距现价 +1.19%) + ↳ 挂平多单高于现价 +1.19%, 为高位止盈/平仓单, 趋势不破可保留 +================================================================ +【提醒】 ⚡成交量突增: 当前 1,104,567.70 vs 均值 219,672.40 +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:24:56 +================================================================ +现价 4,631.10 前一根 4,630.30 涨跌 +0.02% +趋势: 震荡 斜率 -0.016%/min +均线 SMA7 4,634.39 SMA25 4,639.03 SMA60 4,642.22 +EMA EMA12 4,635.46 EMA26 4,638.08 差 -0.06% +RSI(14) 27.3 MACD DIF -2.61 DEA -1.79 HIST -0.82 +SAR 4,636.83 方向 空 现价在SAR下方(空方压制) +支撑 4,630.20 阻力 4,652.40 枢轴 4,637.90 +成交量 当前 187,329.23 USDT / 均值 293,339.71 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 27 超卖, 反弹概率高 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4636.8, 价格在其下) + · 贴近支撑 4630.2, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 当前无持仓、无挂单, 账户空闲, 可按信号择机建仓. +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:28:00 +================================================================ +现价 4,630.70 前一根 4,632.10 涨跌 -0.03% +趋势: 震荡 斜率 -0.017%/min +均线 SMA7 4,631.93 SMA25 4,637.87 SMA60 4,641.42 +EMA EMA12 4,633.80 EMA26 4,636.67 差 -0.06% +RSI(14) 29.2 MACD DIF -2.87 DEA -2.29 HIST -0.58 +SAR 4,633.25 方向 空 现价在SAR下方(空方压制) +支撑 4,629.00 阻力 4,652.40 枢轴 4,637.37 +成交量 当前 408,145.16 USDT / 均值 334,714.26 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 29 超卖, 反弹概率高 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4633.2, 价格在其下) + · 贴近支撑 4629.0, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.34%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:29:01 +================================================================ +现价 4,630.40 前一根 4,630.70 涨跌 -0.01% +趋势: 震荡 斜率 -0.016%/min +均线 SMA7 4,631.31 SMA25 4,637.42 SMA60 4,641.13 +EMA EMA12 4,633.28 EMA26 4,636.21 差 -0.06% +RSI(14) 28.6 MACD DIF -2.93 DEA -2.42 HIST -0.51 +SAR 4,632.40 方向 空 现价在SAR下方(空方压制) +支撑 4,629.00 阻力 4,652.40 枢轴 4,637.27 +成交量 当前 308,477.11 USDT / 均值 347,945.22 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 29 超卖, 反弹概率高 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4632.4, 价格在其下) + · 贴近支撑 4629.0, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.33%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻】(金十 7x24, 实时抓取) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 持有空单可适度安心, 多单需警惕 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:30:19 +================================================================ +现价 4,629.90 前一根 4,630.40 涨跌 -0.01% +趋势: 震荡 斜率 -0.013%/min +均线 SMA7 4,630.69 SMA25 4,636.34 SMA60 4,640.47 +EMA EMA12 4,632.30 EMA26 4,635.29 差 -0.06% +RSI(14) 29.9 MACD DIF -2.99 DEA -2.63 HIST -0.36 +SAR 4,631.54 方向 空 现价在SAR下方(空方压制) +支撑 4,628.90 阻力 4,651.40 枢轴 4,636.73 +成交量 当前 12,270.22 USDT / 均值 337,425.91 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 30 超卖, 反弹概率高 + · MACD 死叉/绿柱放大 + · SAR 空方(点 4631.5, 价格在其下) + · 贴近支撑 4628.9, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.32%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻】(金十 7x24, 实时抓取) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 持有空单可适度安心, 多单需警惕 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:33:26 +================================================================ +现价 4,632.70 前一根 4,632.70 涨跌 +0.00% +趋势: 震荡 斜率 -0.005%/min +均线 SMA7 4,631.66 SMA25 4,635.36 SMA60 4,639.70 +EMA EMA12 4,632.74 EMA26 4,634.93 差 -0.05% +RSI(14) 41.6 MACD DIF -2.19 DEA -2.47 HIST 0.28 +SAR 4,629.28 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,649.00 枢轴 4,636.87 +成交量 当前 29,447.92 USDT / 均值 343,108.37 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 42 偏弱 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4629.3, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.38%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻】(金十 7x24, 实时抓取) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 持有空单可适度安心, 多单需警惕 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:36:32 +================================================================ +现价 4,632.00 前一根 4,632.70 涨跌 -0.02% +趋势: 震荡 斜率 +0.003%/min +均线 SMA7 4,632.80 SMA25 4,634.39 SMA60 4,638.96 +EMA EMA12 4,632.76 EMA26 4,634.50 差 -0.04% +RSI(14) 40.7 MACD DIF -1.74 DEA -2.15 HIST 0.41 +SAR 4,630.12 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,647.20 枢轴 4,636.03 +成交量 当前 23,625.08 USDT / 均值 341,504.83 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 41 偏弱 + · MACD 金叉/红柱放大 + · SAR 多方(点 4630.1, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.37%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻】(金十 7x24, 实时抓取) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 持有空单可适度安心, 多单需警惕 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:39:42 +================================================================ +现价 4,633.60 前一根 4,632.50 涨跌 +0.02% +趋势: 震荡 斜率 +0.003%/min +均线 SMA7 4,632.70 SMA25 4,633.34 SMA60 4,638.39 +EMA EMA12 4,632.71 EMA26 4,634.10 差 -0.03% +RSI(14) 47.8 MACD DIF -1.39 DEA -1.85 HIST 0.46 +SAR 4,631.14 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,647.20 枢轴 4,636.57 +成交量 当前 63,233.46 USDT / 均值 361,880.92 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · SAR 多方(点 4631.1, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.40%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻】(金十 7x24, 实时抓取) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 持有空单可适度安心, 多单需警惕 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:41:30 +================================================================ +现价 4,635.00 前一根 4,635.10 涨跌 -0.00% +趋势: 震荡 斜率 +0.006%/min +均线 SMA7 4,633.27 SMA25 4,633.14 SMA60 4,638.01 +EMA EMA12 4,633.44 EMA26 4,634.27 差 -0.02% +RSI(14) 52.4 MACD DIF -0.84 DEA -1.52 HIST 0.68 +SAR 4,631.78 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,647.20 枢轴 4,637.03 +成交量 当前 19,627.17 USDT / 均值 362,233.35 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · SAR 多方(点 4631.8, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.43%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +BTC-USDT-SWAP 盯盘 2026-08-26 14:41:58 +================================================================ +现价 78,887.30 前一根 78,840.70 涨跌 +0.06% +趋势: 震荡 斜率 -0.005%/min +均线 SMA7 78,844.69 SMA25 78,877.50 SMA60 78,967.89 +EMA EMA12 78,858.31 EMA26 78,888.36 差 -0.04% +RSI(14) 49.6 MACD DIF -30.05 DEA -34.97 HIST 4.92 +SAR 78,908.14 方向 空 现价在SAR下方(空方压制) +支撑 78,760.30 阻力 79,176.50 枢轴 78,941.37 +成交量 当前 631,809.57 USDT / 均值 2,230,709.91 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · SAR 空方(点 78908.1, 价格在其下) + · 贴近支撑 78760.3, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 当前无持仓、无挂单, 账户空闲, 可按信号择机建仓. +---------------------------------------------------------------- +【相关新闻 · 比特币】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空比特币] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:42:56 +================================================================ +现价 4,635.40 前一根 4,636.10 涨跌 -0.02% +趋势: 震荡 斜率 +0.007%/min +均线 SMA7 4,633.81 SMA25 4,633.15 SMA60 4,637.86 +EMA EMA12 4,633.88 EMA26 4,634.43 差 -0.01% +RSI(14) 53.2 MACD DIF -0.55 DEA -1.31 HIST 0.76 +SAR 4,632.30 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,645.20 枢轴 4,636.50 +成交量 当前 42,037.51 USDT / 均值 372,054.29 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · SAR 多方(点 4632.3, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.44%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:46:04 +================================================================ +现价 4,637.20 前一根 4,636.10 涨跌 +0.02% +趋势: 震荡 斜率 +0.007%/min +均线 SMA7 4,635.97 SMA25 4,633.15 SMA60 4,637.66 +EMA EMA12 4,635.09 EMA26 4,634.96 差 0.00% +RSI(14) 58.3 MACD DIF 0.13 DEA -0.68 HIST 0.81 +SAR 4,633.99 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,644.50 枢轴 4,636.87 +成交量 当前 103,689.36 USDT / 均值 381,595.33 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 58 偏强 + · MACD 金叉/红柱放大 + · SAR 多方(点 4634.0, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.48%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:49:11 +================================================================ +现价 4,638.60 前一根 4,638.70 涨跌 -0.00% +趋势: 震荡 斜率 +0.012%/min +均线 SMA7 4,637.69 SMA25 4,634.10 SMA60 4,637.46 +EMA EMA12 4,636.72 EMA26 4,635.87 差 0.02% +RSI(14) 61.9 MACD DIF 0.85 DEA 0.11 HIST 0.74 +SAR 4,636.29 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,644.50 枢轴 4,637.33 +成交量 当前 779.28 USDT / 均值 314,797.16 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 62 偏强 + · MACD 金叉/红柱放大 + · SAR 多方(点 4636.3, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.51%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:52:23 +================================================================ +现价 4,637.10 前一根 4,637.10 涨跌 +0.00% +趋势: 震荡 斜率 +0.006%/min +均线 SMA7 4,637.67 SMA25 4,634.76 SMA60 4,637.22 +EMA EMA12 4,636.77 EMA26 4,636.06 差 0.02% +RSI(14) 54.6 MACD DIF 0.71 DEA 0.41 HIST 0.30 +SAR 4,638.90 方向 空 现价在SAR下方(空方压制) +支撑 4,628.90 阻力 4,644.50 枢轴 4,636.83 +成交量 当前 0.00 USDT / 均值 266,180.60 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 金叉/红柱放大 + · SAR 空方(点 4638.9, 价格在其下) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.48%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:55:31 +================================================================ +现价 4,635.70 前一根 4,635.80 涨跌 -0.00% +趋势: 震荡 斜率 -0.001%/min +均线 SMA7 4,636.63 SMA25 4,635.39 SMA60 4,636.89 +EMA EMA12 4,636.39 EMA26 4,636.01 差 0.01% +RSI(14) 48.5 MACD DIF 0.38 DEA 0.44 HIST -0.06 +SAR 4,638.39 方向 空 现价在SAR下方(空方压制) +支撑 4,628.90 阻力 4,644.50 枢轴 4,636.37 +成交量 当前 2,480.15 USDT / 均值 200,324.76 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 空方(点 4638.4, 价格在其下) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.45%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 14:58:37 +================================================================ +现价 4,635.40 前一根 4,635.30 涨跌 +0.00% +趋势: 震荡 斜率 -0.005%/min +均线 SMA7 4,635.54 SMA25 4,635.59 SMA60 4,636.54 +EMA EMA12 4,635.79 EMA26 4,635.76 差 0.00% +RSI(14) 48.1 MACD DIF 0.03 DEA 0.25 HIST -0.22 +SAR 4,637.18 方向 空 现价在SAR下方(空方压制) +支撑 4,628.90 阻力 4,644.50 枢轴 4,636.27 +成交量 当前 6,869.55 USDT / 均值 165,625.34 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · MACD 死叉/绿柱放大 + · MACD 动能温和 + · SAR 空方(点 4637.2, 价格在其下) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.44%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 15:01:46 +================================================================ +现价 4,638.60 前一根 4,638.50 涨跌 +0.00% +趋势: 震荡 斜率 -0.002%/min +均线 SMA7 4,636.31 SMA25 4,636.22 SMA60 4,636.36 +EMA EMA12 4,636.72 EMA26 4,636.25 差 0.01% +RSI(14) 61.1 MACD DIF 0.47 DEA 0.30 HIST 0.18 +SAR 4,634.39 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,644.50 枢轴 4,637.33 +成交量 当前 53,581.88 USDT / 均值 148,022.12 +---------------------------------------------------------------- +【操作建议】 观望 置信度 58% + 依据: + · 区间震荡, 等待突破 + · RSI 61 偏强 + · MACD 金叉/红柱放大 + · MACD 动能温和 + · SAR 多方(点 4634.4, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.51%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ +================================================================ +XAU-USDT-SWAP 盯盘 2026-08-26 15:04:51 +================================================================ +现价 4,641.60 前一根 4,640.70 涨跌 +0.02% +趋势: 震荡 斜率 +0.007%/min +均线 SMA7 4,638.79 SMA25 4,637.16 SMA60 4,636.29 +EMA EMA12 4,638.29 EMA26 4,637.15 差 0.02% +RSI(14) 70.2 MACD DIF 1.14 DEA 0.61 HIST 0.53 +SAR 4,634.97 方向 多 现价在SAR上方(多头守护) +支撑 4,628.90 阻力 4,644.40 枢轴 4,638.30 +成交量 当前 17,677.69 USDT / 均值 143,973.86 +---------------------------------------------------------------- +【操作建议】 观望 置信度 52% + 依据: + · 区间震荡, 等待突破 + · RSI 70 超买, 追多风险大 + · MACD 金叉/红柱放大 + · SAR 多方(点 4635.0, 价格在其上) + · 贴近支撑 4628.9, 接多性价比高 + · 新闻面偏空(0利好/1利空杰克逊霍尔前夕风向标), 倾向做空 +---------------------------------------------------------------- +【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单) + 挂单[买/开多] 价格 4615.0 数量 2711 类型 limit (距现价 -0.57%) + ↳ 挂开多单贴近现价, 成交概率高, 注意仓位与止损 +---------------------------------------------------------------- +【相关新闻 · 黄金】(金十 7x24, 实时抓取, 按标的自动关联) + · 杰克逊霍尔前夕风向标 [中性影响] + · 植田和男将缺席杰克逊 [利空黄金] + ↳ 新闻面偏空(0利好/1利空), 已融入上方操作建议 +================================================================ diff --git a/xau_monitor.py b/xau_monitor.py new file mode 100644 index 0000000..8d83384 --- /dev/null +++ b/xau_monitor.py @@ -0,0 +1,727 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +XAU-USDT-SWAP 自动盯盘脚本 +- 每 3 分钟自动刷新行情, 计算价格/成交量/均线(SMA/EMA)/RSI/MACD +- 判断趋势(上涨/下跌/震荡), 给出 3~15 分钟操作建议(多/空/观望)+ 置信度 + 支撑阻力 +- 自动运行(可后台循环), 日志写入 xau_monitor.log, 行情突变(价/量异动)本地提醒 +- 循环间隔内置刷新倒计时显示(格式 分:秒), 归零自动触发刷新并重新计时 +- 读取账户当前 XAU 持仓/挂单(只读), 结合实时行情给出持仓操作建议(含保本最低收益率/保本价) +- 实时抓取金十 7x24 新闻, 按标的自动关联, 给出≤10字核心说明与利多/利空倾向; 盈亏率着色(盈红亏绿) +- 支持 --inst 指定盯盘标的(如 BTC-USDT-SWAP / ETH-USDT-SWAP), 新闻与建议随标的自动适配 +用法: + python -X utf8 xau_monitor.py --dns-ip 198.18.0.0 # 前台循环, 每3分钟一次 + python -X utf8 xau_monitor.py --dns-ip 198.18.0.0 --once # 仅跑一次 + python -X utf8 xau_monitor.py --dns-ip 198.18.0.0 --alert-popup # 突变时弹窗(需 Windows) +""" +import json, hmac, hashlib, base64, datetime, sys, os, argparse, subprocess, time, math, re + +HERE = os.path.dirname(os.path.abspath(__file__)) +KEYS_FILE = os.path.join(HERE, "okx_keys.json") +LOG_FILE = os.path.join(HERE, "xau_monitor.log") +INST = "XAU-USDT-SWAP" +INTERVAL = 180 # 3 分钟 + + +# ---------- OKX 请求(走 fake-ip 绕过 DNS 污染 + curl 绕过 WAF) ---------- +def load_keys(): + with open(KEYS_FILE, "r", encoding="utf-8") as f: + return json.load(f) + + +def sign(secret, ts, method, path, body=""): + pre = ts + method.upper() + path + body + return base64.b64encode(hmac.new(secret.encode(), pre.encode(), hashlib.sha256).digest()).decode() + + +def okx_get(path, keys, dns_ip): + ts = datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + sig = sign(keys["secret"], ts, "GET", path, "") + domain = "www.okx.com" + cmd = ["curl", "-s", "--max-time", "15", "--resolve", f"{domain}:443:{dns_ip}"] + cmd += ["-H", f"OK-ACCESS-KEY:{keys['api_key']}", "-H", f"OK-ACCESS-SIGN:{sig}", + "-H", f"OK-ACCESS-TIMESTAMP:{ts}", "-H", f"OK-ACCESS-PASSPHRASE:{keys['passphrase']}", + "-H", "Content-Type:application/json", "-H", "User-Agent:curl/8.5.0", + f"https://{domain}{path}"] + try: + return json.loads(subprocess.run(cmd, capture_output=True, text=True, timeout=20).stdout) + except Exception as e: + return {"code": "-1", "msg": str(e)} + + +# ---------- 终端着色(盈亏率: 盈利红 / 亏损绿) ---------- +_ANSI_RED = "\033[31m" +_ANSI_GREEN = "\033[32m" +_ANSI_RESET = "\033[0m" + + +def enable_color(): + """Windows 10+ 启用虚拟终端以显示 ANSI 颜色; 非 Windows/不支持则静默忽略.""" + if os.name == "nt": + try: + os.system("") # 触发启用 VT100 处理 + except Exception: + pass + + +def red(s): + return f"{_ANSI_RED}{s}{_ANSI_RESET}" + + +def green(s): + return f"{_ANSI_GREEN}{s}{_ANSI_RESET}" + + +def strip_ansi(s): + """去除 ANSI 转义, 用于写日志文件避免乱码.""" + return re.sub(r"\033\[[0-9;]*m", "", s) + + +# ---------- 实时新闻(金十 7x24, 走 fake-ip) ---------- +def news_profile(inst): + """根据标的代码返回新闻关键词配置. + 返回 dict: keywords(相关性过滤词), bias_bull(利好), bias_bear(利空), asset(中文名). + 宏观类关键词(美联储/美元/降息/加息/避险/地缘/非农/通胀/央行/美债) + 对所有品种通用, 叠加品种专属词.""" + macro = ["美联储", "美元", "降息", "加息", "避险", "地缘", "非农", "通胀", + "央行", "美债", "杰克逊霍尔", "就业", "GDP", "PMI"] + i = (inst or "").upper() + if "XAU" in i or "黄金" in inst or "GOLD" in i: + return dict(keywords=macro + ["黄金", "XAU", "白银", "贵金属", "购金", "增持黄金", "金矿"], + bias_bull=["降息", "避险", "地缘", "宽松", "走弱", "下跌", "购金", "增持黄金"], + bias_bear=["加息", "鹰派", "走强", "上涨", "紧缩", "强美元", "抛售", "减持黄金"], + asset="黄金") + if "BTC" in i or "比特币" in inst: + return dict(keywords=macro + ["比特币", "BTC", "加密", "币圈", "ETF", "矿机", "灰度"], + bias_bull=["降息", "宽松", "走弱", "下跌", "ETF", "流入", "减半", "采用"], + bias_bear=["加息", "鹰派", "走强", "上涨", "紧缩", "强美元", "流出", "监管", "禁令"], + asset="比特币") + if "ETH" in i or "以太" in inst: + return dict(keywords=macro + ["以太坊", "ETH", "加密", "币圈", "ETF", "灰度", "Layer2"], + bias_bull=["降息", "宽松", "走弱", "下跌", "ETF", "流入", "升级", "采用"], + bias_bear=["加息", "鹰派", "走强", "上涨", "紧缩", "强美元", "流出", "监管", "禁令"], + asset="以太坊") + # 默认(股票/其他): 仅宏观 + 标的自身代码作为关键词 + return dict(keywords=macro + [inst], + bias_bull=["降息", "宽松", "走弱", "下跌", "利好", "超预期", "回购", "增持"], + bias_bear=["加息", "鹰派", "走强", "上涨", "紧缩", "利空", "不及预期", "减持"], + asset=inst) + + +def get_news(dns_ip, inst, limit=5): + """抓取金十首页内嵌快讯, 过滤与标的(inst)相关的新闻, 返回 list[dict(title,brief,bias)]. + brief 为核心说明(≤10字); bias: 'bull'利好 / 'bear'利空 / 'neutral'中性(均相对该标的).""" + domain = "www.jin10.com" + cmd = ["curl", "-s", "--max-time", "15", "--resolve", f"{domain}:443:{dns_ip}", + "-H", "User-Agent:curl/8.5.0", "-H", "Referer:https://www.jin10.com/", + f"https://{domain}/"] + try: + html = subprocess.run(cmd, capture_output=True, text=True, timeout=20).stdout + except Exception: + return [] + if not html: + return [] + prof = news_profile(inst) + NEWS_KEYWORDS = prof["keywords"] + BIAS_BULL = prof["bias_bull"] + BIAS_BEAR = prof["bias_bear"] + # 提取快讯标题: 优先 flash-top-list__item-content 文本, 兜底 title="..." 属性 + titles = re.findall(r'flash-top-list__item-content">(.*?)', html, re.S) + if not titles: + kw_alt = "|".join(NEWS_KEYWORDS[:12]) + titles = re.findall(r'title="([^"]*(?:' + kw_alt + r')[^\"]*)"', html) + # 清洗标签 + cleaned = [] + for t in titles: + t = re.sub(r"<[^>]+>", "", t).strip() + if t and len(t) > 4: + cleaned.append(t) + # 去重 + 过滤相关词 + seen, rel = set(), [] + for t in cleaned: + if t in seen: + continue + seen.add(t) + if any(k in t for k in NEWS_KEYWORDS): + rel.append(t) + if len(rel) >= limit * 3: + break + # 生成说明与倾向 + out = [] + for t in rel[:limit]: + brief = t[:10] # 单条不超过10个字 + low = t + if any(b in low for b in BIAS_BULL) and not any(b in low for b in BIAS_BEAR): + bias = "bull" + elif any(b in low for b in BIAS_BEAR): + bias = "bear" + else: + bias = "neutral" + out.append({"title": t, "brief": brief, "bias": bias}) + return out + + +# ---------- 技术指标 ---------- +def sma(vals, n): + if len(vals) < n: + return None + return sum(vals[-n:]) / n + + +def ema(vals, n): + if len(vals) < n: + return None + k = 2 / (n + 1) + e = vals[0] + for v in vals[1:]: + e = v * k + e * (1 - k) + return e + + +def rsi(closes, n=14): + if len(closes) < n + 1: + return None + gains, losses = [], [] + for i in range(1, len(closes)): + d = closes[i] - closes[i - 1] + gains.append(max(d, 0)); losses.append(max(-d, 0)) + # Wilder smoothing + ag = sum(gains[:n]) / n; al = sum(losses[:n]) / n + for i in range(n, len(gains)): + ag = (ag * (n - 1) + gains[i]) / n + al = (al * (n - 1) + losses[i]) / n + if al == 0: + return 100.0 + rs = ag / al + return 100 - 100 / (1 + rs) + + +def macd(closes, fast=12, slow=26, sig=9): + if len(closes) < slow + sig: + return None, None, None + ema_f = ema(closes, fast) + # 需逐根计算保证连续 + kf, ks, kg = 2 / (fast + 1), 2 / (slow + 1), 2 / (sig + 1) + ef, es = closes[0], closes[0] + ef_arr, es_arr = [], [] + for v in closes: + ef = v * kf + ef * (1 - kf); es = v * ks + es * (1 - ks) + ef_arr.append(ef); es_arr.append(es) + dif = [ef_arr[i] - es_arr[i] for i in range(len(closes))] + dea = dif[0] + dea_arr = [dea] + for v in dif[1:]: + dea = v * kg + dea * (1 - kg); dea_arr.append(dea) + dif_v, dea_v = dif[-1], dea_arr[-1] + return dif_v, dea_v, (dif_v - dea_v) + + +def sar(highs, lows, af_start=0.02, af_max=0.20): + """抛物线转向 SAR (Wilder). 返回最近一根的 SAR 值, 及当前多/空方向. + highs/lows 为升序(旧->新)序列.""" + if len(highs) < 2: + return None, None + # 初始方向: 比较前两根收盘用高低判断 + uptrend = highs[1] >= highs[0] + if uptrend: + sar = lows[0] + ep = highs[1] + else: + sar = highs[0] + ep = lows[1] + af = af_start + for i in range(2, len(highs)): + prev_sar = sar + if uptrend: + sar = prev_sar + af * (ep - prev_sar) + # 不能高于前两根低 + sar = min(sar, lows[i - 1], lows[i - 2] if i >= 2 else lows[i - 1]) + if highs[i] > ep: + ep = highs[i]; af = min(af + af_start, af_max) + if lows[i] < sar: # 反转 + uptrend = False; sar = ep; ep = lows[i]; af = af_start + else: + sar = prev_sar + af * (ep - prev_sar) + # 不能低于前两根高 + sar = max(sar, highs[i - 1], highs[i - 2] if i >= 2 else highs[i - 1]) + if lows[i] < ep: + ep = lows[i]; af = min(af + af_start, af_max) + if highs[i] > sar: # 反转 + uptrend = True; sar = ep; ep = highs[i]; af = af_start + return sar, ("多" if uptrend else "空") + + +# ---------- 持仓/挂单查询(只读) + 操作建议 ---------- +def get_positions_and_orders(keys, dns_ip, inst): + """查询指定标的(inst)的当前持仓与未成交挂单(只读, 不下单). + 返回 (positions, orders), 任一查询失败则该部分为空列表.""" + positions, orders = [], [] + try: + p = okx_get(f"/api/v5/account/positions?instType=SWAP&instId={inst}", keys, dns_ip) + if p.get("code") == "0": + for it in p.get("data", []): + if float(it.get("pos", 0) or 0) != 0: # 仅保留有实际仓位的 + positions.append(it) + except Exception: + pass + try: + o = okx_get(f"/api/v5/trade/orders-pending?instType=SWAP&instId={inst}", keys, dns_ip) + if o.get("code") == "0": + for it in o.get("data", []): + orders.append(it) + except Exception: + pass + return positions, orders + + +def position_advice(positions, orders, d, fee_rate=0.0005): + """结合实时行情 d, 给出每个持仓/挂单的操作建议. 返回字符串列表. + fee_rate: 单边 taker 手续费率(默认 0.05%), 保本按 开仓+平仓 两次计.""" + lines = [] + last = d["last"] + sar_v, sar_dir = d["sar"], d["sar_dir"] + support, resistance = d["support"], d["resistance"] + trend = d["trend"] + # 保本所需总费率(开+平) + be_rate = fee_rate * 2 + + if not positions and not orders: + lines.append("当前无持仓、无挂单, 账户空闲, 可按信号择机建仓.") + return lines + + # 持仓建议 + for p in positions: + side = p.get("posSide", "") + sz = float(p.get("pos", 0) or 0) + avg = float(p.get("avgPx", 0) or 0) + mark = float(p.get("markPx", 0) or 0) + liq = float(p.get("liqPx", 0) or 0) + upl = float(p.get("upl", 0) or 0) + lev = p.get("lever", "—") + # OKX net 模式(单合约净持仓)下 posSide=net 即代表多头仓位 + eff_side = "long" if side in ("long", "net") else "short" + side_cn = {"long": "多", "short": "空"}.get(eff_side, eff_side) + # 浮盈/亏百分比(相对开仓价) + pnl_pct = (mark - avg) / avg * 100 if avg else 0 + if eff_side == "short": + pnl_pct = -pnl_pct + # 距强平价的安全垫(多头: 现价-强平; 空头: 强平-现价) + if liq: + if eff_side == "long": + liq_buf = (last - liq) / last * 100 + else: + liq_buf = (liq - last) / last * 100 + else: + liq_buf = None + + # 保本价与保本最低收益率(覆盖开仓+平仓手续费, 不含资金占用时间成本) + # 公式: 盈亏按名义额放大杠杆, 手续费同样按名义额计 -> 保本涨跌幅≈开平费率之和, 与杠杆无关 + if eff_side == "long": + be_px = avg * (1 + be_rate) + be_ret = (be_px - last) / last * 100 # 现价还需再涨多少才回本 + else: + be_px = avg * (1 - be_rate) + be_ret = (last - be_px) / last * 100 # 现价还需再跌多少才回本 + + adv = [] + # 1) 技术面与持仓方向冲突 + if eff_side == "long" and sar_dir == "空": + adv.append("SAR 转空/价格已跌破 SAR, 多单与趋势背离, 建议减仓或设严止损") + elif eff_side == "short" and sar_dir == "多": + adv.append("SAR 转多/价格已上破 SAR, 空单与趋势背离, 建议减仓或设严止损") + # 2) 逼近阻力/支撑(多单看阻力, 空单看支撑) + if eff_side == "long" and (resistance - last) / last * 100 < 0.4: + adv.append(f"价格贴近阻力 {resistance:.1f}, 多单可逢高部分止盈") + if eff_side == "short" and (last - support) / last * 100 < 0.4: + adv.append(f"价格贴近支撑 {support:.1f}, 空单可逢低部分止盈") + # 3) 浮盈保护 + if pnl_pct > 1.5: + adv.append(f"浮盈 {pnl_pct:+.2f}%, 可上移止损至成本/保本, 锁定利润") + elif pnl_pct < -1.5: + adv.append(f"浮亏 {pnl_pct:+.2f}%, 接近止损阈值, 严格按原计划止损勿加仓摊平") + # 4) 强平风险 + if liq_buf is not None and liq_buf < 3: + adv.append(f"⚠距强平价仅 {liq_buf:.1f}%, 杠杆 {lev}, 风险极高, 建议降杠杆或减仓") + # 5) 保本最低收益率 + if be_ret > 0: + adv.append(f"保本价 {be_px:.1f}, 现价需再{'涨' if eff_side=='long' else '跌'} " + f"{be_ret:.2f}% 方可覆盖手续费成本(费率 {be_rate*100:.2f}%)") + else: + adv.append(f"保本价 {be_px:.1f} 已低于/高于现价, 当前价位平仓已覆盖手续费成本") + if not adv: + adv.append("持仓方向与指标暂无明显冲突, 可持有并跟踪止损") + # 盈亏率着色: 盈利红 / 亏损绿 + if upl >= 0: + pnl_disp = red(f"{upl:+,.2f}({pnl_pct:+.2f}%)") + else: + pnl_disp = green(f"{upl:+,.2f}({pnl_pct:+.2f}%)") + lines.append(f"持仓[{side_cn}] 数量 {sz:.0f} 开仓 {avg:.1f} 标记 {mark:.1f} " + f"浮盈亏 {pnl_disp} 保本价 {be_px:.1f} " + f"强平 {liq:.1f} 杠杆 {lev}x") + for a in adv: + lines.append(f" ↳ {a}") + + # 挂单建议 + for o in orders: + o_side = o.get("side", "") # buy/sell + o_pos = o.get("posSide", "") # long/short/net (开平方向) + px = float(o.get("px", 0) or 0) + sz = float(o.get("sz", 0) or 0) + ord_type = o.get("ordType", "") + side_cn = {"buy": "买", "sell": "卖"}.get(o_side, o_side) + # 推断挂单意图: buy+net=开多挂单, sell+net=平多挂单, long/short 为双向持仓模式的开平仓 + if o_pos == "net": + intent = "开多" if o_side == "buy" else "平多" + elif o_pos == "long": + intent = "开多" if o_side == "buy" else "平多" + elif o_pos == "short": + intent = "开空" if o_side == "sell" else "平空" + else: + intent = o_pos + # 挂单相对现价的位置 + gap_pct = (px - last) / last * 100 + adv = [] + if intent in ("开多",): + # 开多挂单: 通常在现价下方买入, 高于现价属突破追多 + if gap_pct < -1.0: + adv.append(f"挂开多单远低于现价 {gap_pct:+.2f}%, 若趋势转空可能接到下跌飞刀, 建议评估撤改") + elif gap_pct > 0: + adv.append(f"挂开多单高于现价 {gap_pct:+.2f}%, 属突破追多单, 确认趋势向上后再保留") + else: + adv.append("挂开多单贴近现价, 成交概率高, 注意仓位与止损") + elif intent in ("开空",): + if gap_pct > 1.0: + adv.append(f"挂开空单远高于现价 {gap_pct:+.2f}%, 若趋势转多可能接到上涨飞刀, 建议评估撤改") + elif gap_pct < 0: + adv.append(f"挂开空单低于现价 {gap_pct:+.2f}%, 属破位追空单, 确认趋势向下后再保留") + else: + adv.append("挂开空单贴近现价, 成交概率高, 注意仓位与止损") + elif intent in ("平多",): + # 平多挂单: 通常在现价上方卖出平仓锁定利润 + if gap_pct > 0.3: + adv.append(f"挂平多单高于现价 {gap_pct:+.2f}%, 为高位止盈/平仓单, 趋势不破可保留") + elif gap_pct < 0: + adv.append(f"挂平多单低于现价 {gap_pct:+.2f}%, 属止损平仓单, 触发即离场") + else: + adv.append("挂平多单贴近现价, 成交概率高") + elif intent in ("平空",): + if gap_pct < -0.3: + adv.append(f"挂平空单低于现价 {gap_pct:+.2f}%, 为低位止盈/平仓单, 趋势不破可保留") + elif gap_pct > 0: + adv.append(f"挂平空单高于现价 {gap_pct:+.2f}%, 属止损平仓单, 触发即离场") + else: + adv.append("挂平空单贴近现价, 成交概率高") + # 与当前趋势一致性(仅对开仓类挂单提示) + if intent == "开多" and trend == "下跌": + adv.append(f"当前趋势为{trend}, 与开多挂单相悖, 谨慎") + if intent == "开空" and trend == "上涨": + adv.append(f"当前趋势为{trend}, 与开空挂单相悖, 谨慎") + lines.append(f"挂单[{side_cn}/{intent}] 价格 {px:.1f} 数量 {sz:.0f} 类型 {ord_type} " + f"(距现价 {gap_pct:+.2f}%)") + for a in adv: + lines.append(f" ↳ {a}") + + return lines + + +# ---------- 主分析 ---------- +def analyze(keys, dns_ip, fee_rate=0.0005, inst="XAU-USDT-SWAP"): + c = okx_get(f"/api/v5/market/candles?instId={inst}&bar=1m&limit=120", keys, dns_ip) + t = okx_get(f"/api/v5/market/ticker?instId={inst}", keys, dns_ip) + if c.get("code") != "0" or t.get("code") != "0": + raise RuntimeError(f"行情获取失败 c={c.get('msg')} t={t.get('msg')}") + rows = c["data"][::-1] # 转升序: 最旧->最新 + closes = [float(x[4]) for x in rows] + highs = [float(x[2]) for x in rows] + lows = [float(x[3]) for x in rows] + vols = [float(x[7]) for x in rows] # USDT 计价成交量 + last = closes[-1] + prev = closes[-2] + + # 均线 + sma7 = sma(closes, 7); sma25 = sma(closes, 25); sma60 = sma(closes, 60) + ema12 = ema(closes, 12); ema26 = ema(closes, 26) + r = rsi(closes, 14) + dif, dea, hist = macd(closes) + sar_v, sar_dir = sar(highs, lows) + + # 趋势判定 + # 斜率: 近15根线性回归斜率 + n = 15 + ys = closes[-n:] + xs = list(range(n)) + mx = sum(xs) / n; my = sum(ys) / n + num = sum((xs[i] - mx) * (ys[i] - my) for i in range(n)) + den = sum((xs[i] - mx) ** 2 for i in range(n)) + slope = num / den if den else 0 + slope_pct = slope / last * 100 # 每根(分钟)百分比斜率 + + ema_gap = (ema12 - ema26) / last * 100 + above_ma = (last > sma25) and (last > sma60) + # SAR 方向加权 + sar_up = (sar_dir == "多") + + if slope_pct > 0.02 and ema_gap > 0 and above_ma and sar_up: + trend = "上涨" + elif slope_pct < -0.02 and ema_gap < 0 and not above_ma and not sar_up: + trend = "下跌" + else: + trend = "震荡" + + # 支撑/阻力: 近期高低 + 均线 + 枢轴 + recent_h = max(highs[-60:]); recent_l = min(lows[-60:]) + pivot = (recent_h + recent_l + last) / 3 + # 成交量异动 + avg_vol = sum(vols[-30:-1]) / 29 + cur_vol = vols[-1] + vol_spike = cur_vol > avg_vol * 2.2 + + # 关键位 + support = min(recent_l, sma60 if sma60 else recent_l) + resistance = max(recent_h, sma25 if sma25 else recent_h) + + # ---------- 操作建议逻辑 ---------- + reasons = [] + score = 0 # -3..+3 + # 趋势权重 + if trend == "上涨": + score += 1; reasons.append("趋势向上(EMA12>EMA26,价格站上均线)") + elif trend == "下跌": + score -= 1; reasons.append("趋势向下") + else: + reasons.append("区间震荡, 等待突破") + + # RSI + if r is not None: + if r > 70: + score -= 1; reasons.append(f"RSI {r:.0f} 超买, 追多风险大") + elif r < 30: + score += 1; reasons.append(f"RSI {r:.0f} 超卖, 反弹概率高") + elif r > 55: + reasons.append(f"RSI {r:.0f} 偏强") + elif r < 45: + reasons.append(f"RSI {r:.0f} 偏弱") + + # MACD + if dif is not None: + if hist > 0 and dif > dea: + score += 0.5; reasons.append("MACD 金叉/红柱放大") + elif hist < 0 and dif < dea: + score -= 0.5; reasons.append("MACD 死叉/绿柱放大") + if abs(hist) < 0.3: + reasons.append("MACD 动能温和") + + # SAR + if sar_v is not None: + if sar_dir == "多": + score += 0.5; reasons.append(f"SAR 多方(点 {sar_v:.1f}, 价格在其上)") + else: + score -= 0.5; reasons.append(f"SAR 空方(点 {sar_v:.1f}, 价格在其下)") + + # 位置相对支撑阻力 + dist_to_s = (last - support) / last * 100 + dist_to_r = (resistance - last) / last * 100 + if dist_to_s < 0.3: + score += 0.5; reasons.append(f"贴近支撑 {support:.1f}, 接多性价比高") + elif dist_to_r < 0.3: + score -= 0.5; reasons.append(f"贴近阻力 {resistance:.1f}, 做多空间受限") + + # 成交量异动 + if vol_spike: + if trend == "上涨": + score += 0.5; reasons.append("放量上涨, 动量确认") + elif trend == "下跌": + score -= 0.5; reasons.append("放量下跌, 动量确认") + else: + reasons.append("成交量突增但方向未明, 警惕变盘") + + # 决策 + if score >= 2: + action = "做多"; conf = min(95, 55 + score * 12) + elif score <= -2: + action = "做空"; conf = min(95, 55 + abs(score) * 12) + else: + action = "观望"; conf = 50 + abs(score) * 5 + + # 入场/止损/止盈(基于建议方向, 仅供参考) + if action == "做多": + entry = f"{last:.1f} 附近" + sl = f"{max(support, last*0.997):.1f}" + tp = f"{min(resistance, last*1.006):.1f}" + elif action == "做空": + entry = f"{last:.1f} 附近" + sl = f"{min(resistance, last*1.003):.1f}" + tp = f"{max(support, last*0.994):.1f}" + else: + entry = sl = tp = "—" + + # 持仓/挂单操作建议(只读查询, 失败不影响主行情) + try: + positions, orders = get_positions_and_orders(keys, dns_ip, inst) + pos_advice = position_advice(positions, orders, dict( + last=last, sar=sar_v, sar_dir=sar_dir, support=support, + resistance=resistance, trend=trend), fee_rate=fee_rate) + except Exception as e: + pos_advice = [f"持仓查询失败(不影响行情): {e}"] + + # 实时新闻(失败不影响主行情), 按标的自动关联 + try: + news = get_news(dns_ip, inst) + except Exception: + news = [] + # 新闻面倾向统计(融入操作建议) + nbull = sum(1 for n in news if n['bias'] == 'bull') + nbear = sum(1 for n in news if n['bias'] == 'bear') + if nbull > nbear: + news_bias = "bull" + reasons.append(f"新闻面偏多({nbull}利好/{nbear}利空{news[0]['brief'] if news else ''}), 倾向做多") + if action == "做空": + conf = max(20, conf - 8) + elif nbear > nbull: + news_bias = "bear" + reasons.append(f"新闻面偏空({nbull}利好/{nbear}利空{news[0]['brief'] if news else ''}), 倾向做空") + if action == "做多": + conf = max(20, conf - 8) + else: + news_bias = "neutral" + if news: + reasons.append(f"新闻面中性({nbull}利好/{nbear}利空), 以技术面为主") + + return dict(last=last, prev=prev, sma7=sma7, sma25=sma25, sma60=sma60, + ema12=ema12, ema26=ema26, rsi=r, dif=dif, dea=dea, hist=hist, + sar=sar_v, sar_dir=sar_dir, + trend=trend, slope_pct=slope_pct, recent_h=recent_h, recent_l=recent_l, + pivot=pivot, avg_vol=avg_vol, cur_vol=cur_vol, vol_spike=vol_spike, + support=support, resistance=resistance, action=action, conf=conf, + entry=entry, sl=sl, tp=tp, reasons=reasons, score=score, + pos_advice=pos_advice, news=news, news_bias=news_bias) + + +def fmt(x, d=2): + try: + return f"{float(x):,.{d}f}" + except Exception: + return "—" + + +def report(d): + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + bar = "=" * 64 + inst = d.get('inst', 'XAU-USDT-SWAP') + asset = news_profile(inst)['asset'] + lines = [bar, f"{inst} 盯盘 {now}", bar] + lines.append(f"现价 {fmt(d['last'])} 前一根 {fmt(d['prev'])} 涨跌 {(d['last']-d['prev'])/d['prev']*100:+.2f}%") + lines.append(f"趋势: {d['trend']} 斜率 {d['slope_pct']:+.3f}%/min") + lines.append(f"均线 SMA7 {fmt(d['sma7'])} SMA25 {fmt(d['sma25'])} SMA60 {fmt(d['sma60'])}") + lines.append(f"EMA EMA12 {fmt(d['ema12'])} EMA26 {fmt(d['ema26'])} 差 {fmt((d['ema12']-d['ema26'])/d['last']*100)}%") + lines.append(f"RSI(14) {fmt(d['rsi'],1)} MACD DIF {fmt(d['dif'])} DEA {fmt(d['dea'])} HIST {fmt(d['hist'])}") + sar_rel = "上方(多头守护)" if (d['sar_dir'] == "多") else "下方(空方压制)" + lines.append(f"SAR {fmt(d['sar'])} 方向 {d['sar_dir']} 现价{d['sar'] and ('在SAR'+sar_rel)}") + lines.append(f"支撑 {fmt(d['support'])} 阻力 {fmt(d['resistance'])} 枢轴 {fmt(d['pivot'])}") + lines.append(f"成交量 当前 {fmt(d['cur_vol'])} USDT / 均值 {fmt(d['avg_vol'])} {'⚡异动' if d['vol_spike'] else ''}") + lines.append("-" * 64) + lines.append(f"【操作建议】 {d['action']} 置信度 {d['conf']:.0f}%") + if d['action'] != "观望": + lines.append(f" 入场 {d['entry']} 止损 {d['sl']} 止盈 {d['tp']} (3~15分钟级别)") + lines.append(" 依据:") + for rsn in d['reasons']: + lines.append(f" · {rsn}") + lines.append("-" * 64) + lines.append("【当前持仓操作建议】(基于实时行情, 仅供参考, 脚本不下单)") + for pa in d.get('pos_advice', []): + lines.append(f" {pa}") + lines.append("-" * 64) + lines.append(f"【相关新闻 · {asset}】(金十 7x24, 实时抓取, 按标的自动关联)") + news = d.get('news', []) + if not news: + lines.append(f" 暂未抓取到与{asset}相关快讯") + else: + bias_cn = {"bull": red(f"利好{asset}"), "bear": green(f"利空{asset}"), "neutral": "中性影响"} + for n in news: + lines.append(f" · {n['brief']} [{bias_cn.get(n['bias'], '中性影响')}]") + # 新闻对持仓操作的综合倾向提示 + bull = sum(1 for n in news if n['bias'] == 'bull') + bear = sum(1 for n in news if n['bias'] == 'bear') + bias_word = {"bull": red("偏多"), "bear": green("偏空"), "neutral": "中性"}[d.get('news_bias', 'neutral')] + lines.append(f" ↳ 新闻面{bias_word}({bull}利好/{bear}利空), 已融入上方操作建议") + lines.append(bar) + return "\n".join(lines) + + +def log_write(text): + with open(LOG_FILE, "a", encoding="utf-8") as f: + f.write(strip_ansi(text) + "\n") + + +def popup(title, msg): + try: + import ctypes + ctypes.windll.user32.MessageBoxW(0, msg, title, 0x40 | 0x1000) + except Exception: + pass + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--dns-ip", default="198.18.0.0") + ap.add_argument("--once", action="store_true") + ap.add_argument("--alert-popup", action="store_true", help="行情突变弹窗提醒") + ap.add_argument("--fee-rate", type=float, default=0.0005, + help="单边 taker 手续费率(默认 0.0005=0.05%, 保本按开+平两次计)") + ap.add_argument("--inst", default="XAU-USDT-SWAP", + help="盯盘标的代码, 如 XAU-USDT-SWAP / BTC-USDT-SWAP / ETH-USDT-SWAP") + args = ap.parse_args() + enable_color() # 启用终端 ANSI 颜色(盈亏率着色) + keys = load_keys() + inst = args.inst.upper() + + last_alert = {} # 突变去重 + while True: + try: + d = analyze(keys, args.dns_ip, fee_rate=args.fee_rate, inst=inst) + d['inst'] = inst + out = report(d) + print(out) + log_write(out) + # 行情突变提醒 + price_chg = abs(d['last'] - d['prev']) / d['prev'] * 100 + alert_msgs = [] + if d['vol_spike']: + alert_msgs.append(f"⚡成交量突增: 当前 {fmt(d['cur_vol'])} vs 均值 {fmt(d['avg_vol'])}") + if price_chg > 0.3: + alert_msgs.append(f"⚠价格急动: {d['last']-d['prev']:+.1f} ({price_chg:+.2f}%)/分钟") + if d['rsi'] is not None and (d['rsi'] > 75 or d['rsi'] < 25): + alert_msgs.append(f"⚠RSI 极端 {d['rsi']:.0f} (超{'买' if d['rsi']>75 else '卖'})") + if alert_msgs and (args.alert_popup or True): + tag = "|".join(alert_msgs) + if last_alert.get(tag, 0) < time.time() - 300: # 5分钟内同内容不重复 + log_write("【提醒】 " + " ; ".join(alert_msgs)) + if args.alert_popup: + popup("XAU 行情突变", "\n".join(alert_msgs) + f"\n现价 {fmt(d['last'])}") + last_alert[tag] = time.time() + except Exception as e: + err = f"[{datetime.datetime.now()}] 运行错误: {e}" + print(err); log_write(err) + + if args.once: + break + + # ---------- 刷新倒计时(分:秒), 归零自动触发下一轮刷新 ---------- + # 用目标绝对时间点计算剩余, 避免 sleep 累积漂移导致计时不同步 + next_at = time.time() + INTERVAL + while True: + remain = int(round(next_at - time.time())) + if remain <= 0: + break + mm = remain // 60 + ss = remain % 60 + # \r 回到行首覆盖, 不换行; flush 确保即时显示 + print(f"\r距下次刷新: {mm:02d}:{ss:02d} ", end="", flush=True) + # 整秒粒度休眠, 剩余 <1s 时立即退出循环进入刷新 + time.sleep(min(1, remain)) + # 收尾换行, 下一轮刷新会先打印分隔报告 + print("\r距下次刷新: 00:00 刷新中...\n", flush=True) + + +if __name__ == "__main__": + main() diff --git a/xau_watch_order.py b/xau_watch_order.py new file mode 100644 index 0000000..1ad1df1 --- /dev/null +++ b/xau_watch_order.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +XAU-USDT-SWAP 挂单盯盘: 实时判断当前挂单价是否合理 +- 拉取挂单 + 行情 + K线 + 订单簿 +- 计算技术支撑/压力 (SMA/枢轴/24h高低/VWAP) +- 评估: 挂单价相对现价/支撑/压力的位置, 止损止盈空间, 触发概率 +- 只读, 不改动任何订单 +用法: python -X utf8 xau_watch_order.py --dns-ip 198.18.0.0 +""" +import json, hmac, hashlib, base64, datetime, sys, os, argparse, subprocess + +HERE = os.path.dirname(os.path.abspath(__file__)) +KEYS_FILE = os.path.join(HERE, "okx_keys.json") + + +def load_keys(): + with open(KEYS_FILE, "r", encoding="utf-8") as f: + return json.load(f) + + +def sign(secret, ts, method, path, body=""): + pre = ts + method.upper() + path + body + return base64.b64encode(hmac.new(secret.encode(), pre.encode(), hashlib.sha256).digest()).decode() + + +def okx_get(path, keys, dns_ip): + ts = datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + sig = sign(keys["secret"], ts, "GET", path, "") + domain = "www.okx.com" + cmd = ["curl", "-s", "--max-time", "15", "--resolve", f"{domain}:443:{dns_ip}"] + cmd += ["-H", f"OK-ACCESS-KEY:{keys['api_key']}", "-H", f"OK-ACCESS-SIGN:{sig}", + "-H", f"OK-ACCESS-TIMESTAMP:{ts}", "-H", f"OK-ACCESS-PASSPHRASE:{keys['passphrase']}", + "-H", "Content-Type:application/json", "-H", "User-Agent:curl/8.5.0", + f"https://{domain}{path}"] + try: + return json.loads(subprocess.run(cmd, capture_output=True, text=True, timeout=20).stdout) + except Exception as e: + return {"code": "-1", "msg": str(e)} + + +def fmt(n, d=2): + try: + return f"{float(n):,.{d}f}" + except Exception: + return str(n) + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--dns-ip", default="198.18.0.0") + args = ap.parse_args() + keys = load_keys() + D = args.dns_ip + + # 1. 挂单 + o = okx_get("/api/v5/trade/orders-pending?instType=SWAP", keys, D) + orders = [x for x in o.get("data", []) if x.get("instId") == "XAU-USDT-SWAP" and x.get("state") == "live"] + if not orders: + print("当前无 XAU 活跃挂单") + return + ord0 = orders[0] + px = float(ord0["px"]); sz = float(ord0["sz"]); lev = float(ord0["lever"]) + tp = float(ord0["attachAlgoOrds"][0]["tpOrdPx"]); sl = float(ord0["attachAlgoOrds"][0]["slTriggerPx"]) + + # 2. 行情 + t = okx_get("/api/v5/market/ticker?instId=XAU-USDT-SWAP", keys, D)["data"][0] + last = float(t["last"]); high24 = float(t["high24h"]); low24 = float(t["low24h"]) + open24 = float(t["open24h"]); sod = float(t["sodUtc8"]) + + # 3. K线 + c = okx_get("/api/v5/market/candles?instId=XAU-USDT-SWAP&bar=1H&limit=60", keys, D)["data"] + cls = [float(x[4]) for x in c]; lows = [float(x[3]) for x in c]; highs = [float(x[2]) for x in c] + sma20 = sum(cls[:20]) / 20; sma50 = sum(cls[:50]) / 50 + lo12 = min(lows[:12]); hi12 = max(highs[:12]) + pivot = (high24 + low24 + last) / 3 + s1 = 2 * pivot - high24; r1 = 2 * pivot - low24 + + # 4. 订单簿 + b = okx_get("/api/v5/market/books?instId=XAU-USDT-SWAP&sz=400", keys, D)["data"][0] + bids = b["bids"]; asks = b["asks"] + + def cum_bid(px_ref): + s = 0.0 + for p, sz_, *_ in bids: + if float(p) >= px_ref: + s += float(sz_) + return s + def cum_ask(px_ref): + s = 0.0 + for p, sz_, *_ in asks: + if float(p) <= px_ref: + s += float(sz_) + return s + buy_liq = cum_bid(px) # 挂单价下方买盘支撑量(可吸单) + ask_above = cum_ask(px) # 挂单价上方卖盘压力量 + + # 判断逻辑 + below_mid = pivot - sma20 # 多空分界偏离 + px_vs_last = (px - last) / last * 100 + dist_to_sl = (px - sl) / px * 100 + dist_to_tp = (tp - px) / px * 100 + dist_to_low = (px - low24) / low24 * 100 + dist_to_high = (high24 - px) / px * 100 + in_24h_range = low24 <= px <= high24 + + now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + print("=" * 70) + print(f"XAU-USDT-SWAP 挂单盯盘 {now}") + print("=" * 70) + print(f"挂单: 买入 {int(sz)} 张 @ {fmt(px)} 杠杆 {int(lev)}x 状态 live") + print(f" 名义价值 ~ {fmt(sz*0.001*px)} USDT 止损 {fmt(sl)} 止盈 {fmt(tp)}") + print("-" * 70) + print(f"现价 last : {fmt(last)}") + print(f"24h 区间 : {fmt(low24)} ~ {fmt(high24)} (振幅 {fmt((high24-low24)/low24*100)}%)") + print(f"今日开盘UTC8: {fmt(sod)} 24h开盘 {fmt(open24)}") + print(f"SMA20 {fmt(sma20)} SMA50 {fmt(sma50)} | 枢轴P {fmt(pivot)} S1(支撑) {fmt(s1)} R1(压力) {fmt(r1)}") + print(f"近12h 区间 : {fmt(lo12)} ~ {fmt(hi12)}") + print("-" * 70) + print("【挂单价 4635 位置评估】") + print(f" - 相对现价: {px_vs_last:+.2f}% (现 {fmt(last)}, 挂单在 {'下方(等回调)' if px= 1.5: + score += 2; notes.append(f"止损空间 {dist_to_sl:.2f}% 充足") + elif dist_to_sl >= 1.0: + score += 1; notes.append(f"止损空间 {dist_to_sl:.2f}% 偏紧") + else: + score -= 2; notes.append(f"止损空间仅 {dist_to_sl:.2f}%, 30x下极易被扫(小于正常波动)") + if abs(dist_to_tp / dist_to_sl) >= 1.5: + score += 1; notes.append("盈亏比合理(>=1.5)") + else: + score -= 1; notes.append("盈亏比偏低(<1.5), 期望不占优") + if buy_liq >= sz * 0.5: + score += 1; notes.append("挂单价下方买盘充足, 成交后不易立刻被砸") + else: + score -= 1; notes.append("挂单价下方买盘支撑偏弱") + + verdict = "✅ 合适" if score >= 4 else ("⚠️ 一般, 需优化" if score >= 1 else "❌ 不合适") + print(f"综合评分: {score}/8 → {verdict}") + for n in notes: + print(f" · {n}") + print("=" * 70) + + +if __name__ == "__main__": + main()