在 `backend/database/models.py` 中新增 `MarketCache` 类,支持从数据库缓存交易对信息和资金费率,减少对币安API的调用频率。更新 `binance_client` 和 `market_scanner` 以优先从缓存读取数据,添加超时处理和重试机制,提升系统稳定性。同时,增强了资金费率和主动买卖量的过滤逻辑,确保在开仓前进行有效的风险控制。
83 lines
6.4 KiB
Markdown
83 lines
6.4 KiB
Markdown
# 策略与信号评估及改进建议
|
||
|
||
基于持仓记录(2026-02-16)、当前策略逻辑与币安接口文档,对「长时间持仓、盈利不明显」做简要诊断,并给出可落地的改进方向。
|
||
|
||
---
|
||
|
||
## 一、持仓与信号现状简要诊断
|
||
|
||
### 1. 持仓样本(来自 持仓记录_2026-02-16)
|
||
|
||
- **数量**:约 12 个持仓,多空混合(BUY 少、SELL 多)。
|
||
- **盈亏分布**:部分有 +15%、+13%、+9% 等浮盈,多数在 -5%~+2% 区间横盘,整体「拿得久、盈利不突出」。
|
||
- **共性**:
|
||
- 入场依赖 1H/4H 技术信号(MACD + EMA + 4H 趋势),**无资金费率、多空结构、订单流等过滤**,容易在「结构不利」时开仓。
|
||
- 止损/止盈为固定比例或 ATR,**无跟踪止损、无时间止损**,盈利单容易回吐,亏损单容易长期挂单。
|
||
- 选币主要按 24h 涨跌幅 + 成交量 + signal_strength 排序,**未用资金费率、大户多空比、主动买卖量等** 做过滤或排序。
|
||
|
||
### 2. 当前信号与选单逻辑(简要)
|
||
|
||
- **扫描**:24h 涨跌幅 ≥ 阈值 + 成交量 ≥ MIN_VOLUME_24H_STRICT → 对每个 symbol 拉 1H/4H K 线 → 算 RSI、MACD、EMA、4H 趋势 → 算 **signal_strength**(0–10),按强度排序取 TOP_N。
|
||
- **开仓条件**:signal_strength ≥ MIN_SIGNAL_STRENGTH(8)、4H 趋势不逆势、RSI/24h 涨跌幅过滤、短周期方向过滤、大盘 Beta 过滤等。
|
||
- **问题点**:
|
||
- 信号完全来自 K 线技术指标,**没有合约特有的「成本与结构」信息**(资金费率、多空比、主动买卖)→ 容易在费率极高或多空极度拥挤时进场。
|
||
- 入场时机只看扫描周期(如 15 分钟一次),**没有用 WS 订单/成交推送做更细的时机优化**。
|
||
- 出场只有固定 SL/TP,**没有跟踪止损、没有「持仓时间 + 无盈利」类时间止损**。
|
||
|
||
---
|
||
|
||
## 二、基于现有接口的改进方向(可落地)
|
||
|
||
### 1. 资金费率过滤(已接入 REST,建议**优先上**)
|
||
|
||
- **接口**:`GET /fapi/v1/premiumIndex`(已封装为 `get_premium_index(symbol)`),含 `lastFundingRate`。
|
||
- **思路**:
|
||
- **做多**:若 `lastFundingRate > 某上限`(例如 0.001,即 0.1%),说明多头付费高,开多成本高、易被费率侵蚀 → **跳过开多**。
|
||
- **做空**:若 `lastFundingRate < 某下限`(例如 -0.001),说明空头付费高 → **跳过开空**。
|
||
- **效果**:减少在「费率极端不利于己方」时开仓,提高单笔期望收益;配合现有技术信号,不改变主逻辑,只做过滤。
|
||
- **实现**:在策略层开仓前增加「资金费率过滤」步骤(见下节代码)。
|
||
|
||
### 2. 大户多空比 / 主动买卖量(已接入 REST,可选增强)
|
||
|
||
- **接口**:`get_top_long_short_position_ratio`、`get_taker_long_short_ratio`(或账户数多空比)。
|
||
- **思路**:
|
||
- **做多**:优先选择「近期主动买入占比高」或「大户多空比」偏多的标的(顺势);或极端多头拥挤时做「逆势空」需谨慎、可提高信号门槛。
|
||
- **做空**:优先选择「主动卖出占比高」或大户偏空的标的。
|
||
- **实现**:可在扫描后、或策略决定开仓前,对候选 symbol 取最近 1 条 taker 或大户多空比,与方向一致则通过、相反则降权或跳过(可选,先上资金费率再考虑)。
|
||
|
||
### 3. 订单/成交推送(WS)对「下单时机」的改进
|
||
|
||
- **文档**:订单交易更新推送(ORDER_TRADE_UPDATE)、条件单更新(ALGO_UPDATE)、账户信息流等。
|
||
- **思路**:
|
||
- 已有 User Data Stream 时,**订单状态、成交回报**已经实时;可在此基础上做「下单后快速反馈、部分成交/全部成交的后续动作」。
|
||
- 若引入 **aggTrade / depth** 等行情 WS:可在「信号已满足」时,结合最近几笔大单或盘口变化再点一次火,减少「信号刚满足就追在尖顶/尖底」的情况(实现成本较高,可作为二期)。
|
||
|
||
### 4. 止盈/止损与持仓管理
|
||
|
||
- **跟踪止损**:文档支持 `TRAILING_STOP_MARKET`(激活价、回调比例)。可在「浮盈达到 X% 后」改为跟踪止损,锁定利润、让利润奔跑。
|
||
- **时间止损**:若持仓超过 N 小时且浮盈 < 某阈值(或浮亏),可考虑平仓释放保证金,避免长期无效挂单(需在 position_manager 或策略层加「持仓时长」判断)。
|
||
- **分批止盈**:当前有 take_profit_1/2 等设计;可结合 ATR 或固定比例,先平一部分、留一部分用跟踪止损(逻辑已有基础,可逐步细化)。
|
||
|
||
### 5. 扫描与选币
|
||
|
||
- **资金费率**:扫描阶段可排除「费率极端」的标的(例如 |lastFundingRate| > 0.001),避免进入 TOP_N 的 symbol 本身就不适合当前方向。
|
||
- **成交量/流动性**:继续用 24h 成交量 + 深度(若有)保证可执行性;深度接口已接入,可用于大单前的冲击成本估算。
|
||
- **多空比/主动买卖**:作为排序加分项(与方向一致则排前),而不是硬过滤,避免过度减少开仓次数。
|
||
|
||
---
|
||
|
||
## 三、建议实施顺序
|
||
|
||
1. **立即**:在开仓前增加**资金费率过滤**(做多/做空各一个阈值),并加配置开关与日志。
|
||
2. **短期**:在配置中提供**跟踪止损**开关与参数(如激活盈利率、回调比例),对已有持仓在达到条件时切到跟踪止损(或先对部分新开仓做实验)。
|
||
3. **中期**:在扫描或策略中引入**大户多空比 / taker 买卖比**,作为过滤或排序加分,并观察胜率与频率变化。
|
||
4. **可选**:结合 WS 订单/成交与行情(aggTrade/depth)做更细的入场时机优化;以及「持仓时间 + 无盈利」的时间止损。
|
||
|
||
---
|
||
|
||
## 四、小结
|
||
|
||
- **现状**:信号与选单主要依赖 K 线技术指标和 4H 趋势,缺少「资金费率、多空结构、订单流」等维度,且出场方式单一,容易导致持仓时间长、盈利不明显。
|
||
- **改进**:在**不推翻现有技术信号**的前提下,优先用**资金费率**做开仓过滤,再用**多空比/主动买卖**做过滤或排序,并逐步加上**跟踪止损**和**时间/无盈利止损**,有望在控制回撤的同时提高单笔质量与资金效率。
|
||
- 上述改进均可基于你已接入的 REST 接口(premiumIndex、fundingRate、topLongShort、takerlongshortRatio 等)和现有 WS 文档实现;具体参数(费率阈值、跟踪止损比例等)可在实盘或回测中微调。
|