 jackyu66gitandCursor
|
2cd50f1e01
|
主图增加笔/线段背驰与面积数字,并修正 SD99999 显示。
三周期分开关控制,只画数字不画图标;线段面积比沿用同向笔面积口径。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-10 04:33:40 +08:00 |
|
 jackandCursor
|
335d891478
|
生产与研究分家:实盘执行器独立成 live/ 子树,加 AWS 部署
实盘要跑在 AWS(API key 绑了 IP 白名单),而信号在新加坡那台算。借这次
把生产从研究侧摘出来,四条具体代价里第一条已经咬过:
1. live_state.json 原先落在 research/out/,而那里 shadow_hb 会自动 rename
归档、研究脚本会写、人也手工清过。那文件装的是 MAX_DAY_LOSS 累计与已
处理信号键,被清掉不报错,只是两道闸静默失效。改到 LIVE_HOME。
2. 采集器十币清空 300~560ms 直接叠在信号到达执行器的延迟上。
3. 研究侧探针 OOM 过一次(14.9GB),当时若有仓位在场会连坐执行器。
4. 为读两个常量 import 研究侧 step43,把 numpy/pandas/pyarrow 拖进实盘
进程。抽出 stdlib-only 的 live/exit_params.py,install.sh 加断言挡回归。
新增 live/ship_signals.py:AWS 侧 ssh tail 拉总线,每次重连从文件头重放
+ 按幂等键去重,断线期间的信号自愈;旧信号由 staleness 闸挡掉不补做。
带时钟倒流检测——两机时钟不同步会让那道闸静默放宽。
部署件:systemd 两单元(搬运挂了执行器仍管在场仓位的超时平仓)、
install.sh、dryrun.sh(验密钥/白名单/时钟/ssh/取整)、status.sh、README。
验证:live_exec 重构后端到端空跑,SOL 多头与 ADA 空头的止损/两级止盈/
数量取整逐项核对正确,isolated + post_only + reduceOnly 都在;搬运的去重、
重启不重复追加、脏数据跳过、断线重连重放均已测。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 17:03:03 +08:00 |
|
 jackandCursor
|
97457b0518
|
过滤网信号推 Telegram,供手工小额实盘
自动执行链一行都还没写(下单/持仓状态/跨重启持久化/对账/熔断),而过全部
滤网的信号只有约 5.3 笔/天——低到人手能接。先手工跑一批,就能在写自动化
**之前**拿到真实费率档、真实成交价、真实出场行为,让执行链的每个假设都有
实测对照,而不是写完再发现出场模型不对。
推送内容按手工执行需要给全:参考成交价(回测口径的次根开盘)、按 2/3/8 ATR
换算的绝对价位、下单数量、该币滑点预算,以及一句「偏离超过预算就不值得做」。
剩余半仓止损保持 2ATR 不移成本,这是回测参数,移了就不是同一个收益结构。
时效是这条路最大的风险,所以起点取 kline_ts 而不是信号产生时刻——参考价就是
在 kline_ts 那一刻存在的,从信号时刻起算会漏掉数据延迟加计算那 0.5~1.5s,而
那段不可压缩。超过 TG_STALE_S 直接标记已失效,不让人自己判断:宁可漏做,不
要在偏离预算之外入场。
三条防线:lag 退化时不推(与「停开新仓」同一条规则,不能只在自动化里执行);
按 (币, K线时刻, 方向) 去重,避免补根或池重建重放导致开两次仓;无预算的币
(如 TRX)不推。推送任何失败只打日志,不连坐采集——已验假 token 下降级为
HTTP 401 日志而非抛异常。
凭据走 tg.env(已 gitignore),给了 tg.env.example 说明怎么拿 token 和 chat id。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 15:35:17 +08:00 |
|
 jackandCursor
|
1661bbbac9
|
gitignore: 运行元数据属采集产物,不入库
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 02:40:57 +08:00 |
|
 jackandCursor
|
181bca303f
|
影子测量改用框架吃单原语,并补齐容量与 maker 成交率两项测算
吃单查询换成 Hummingbot 的 OrderBook.get_vwap_for_volume:手写的 walk_book
返回的是按计价币吃单的加权均价,但框架的 get_price_for_quote_volume 返回
边际价、get_vwap_for_volume 收基础币量,两者语义不同。改为按基础币下单
(真实委托与 PositionExecutor.amount 均是基础币计价),深度不足由
query_volume/result_volume 判定,框架此时返回 nan 而非一个看似正常的
部分成交均价。
落盘完整盘口(双边 50 档)。此前只记三个固定名义额的成交价,这批数据的
寿命就等于那几个档位的寿命;存完整深度后任意资金量级的冲击都能离线重算。
仓位档同时从 1k/5k/20k 提到十万量级,此前低估真实仓位约两个数量级。
订阅成交流,按根按价位聚合。买卖分开存——多头在目标位挂卖出靠主动买盘
成交,混在一起会把成交率高估约一倍。BTC 每根总成交额中位与 210 天历史
的 volume×close 差 0.3%,可确认采集完整。
新增两项测算:
- 冲击不是绑定约束。32 万仓位单边冲击 0.19~2.39bp,对 8.58~20.64bp 的
预算只占 1.6~14.2%,冲击反推的资金上限 100~500 万。
- maker 成交率才是。止盈位被首次触及时,限价在该根价格区间中的位置
中位 k=0.28(63.9 万次触及,三币一致);合并每根成交额后,32 万仓位
的全额成交率仅 30.1%/15.6%/1.5%。要 80% 全额成交,仓位须 ≤ 4.7 万
/1.4 万/0.26 万——比冲击反推的上限低 40~370 倍。
回测把这些止盈按「全额成交在目标价」计,故预算所依据的收益流本身需重估。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 02:39:47 +08:00 |
|
 jackyu66gitandCursor
|
32c18f0201
|
research: 1m 出场口径重定、费率修正,与影子测量的判据常数
起因是用户看图指出「止盈没做好」,查下来 TP=3.0 确实把右尾截早了,
而且 1m 不该沿用 5m/15m/30m 的参数——成本固定在 bp、目标随 ATR 缩放,
1m 的 3 ATR 只有 0.39% 而 30m 是 1.87%,成本占比差 5 倍。
step41(5m/15m/30m)与 step42(1m)跑同一张全网格:
SL × TP × MAX_BARS × 分批(3 ATR 减半 → 剩余目标 × 剩余半仓止损位)。
- 1m 最优 SL2 / 3ATR 减半 / 剩余止损保持 2.0 / 目标 8ATR / 48 根,
样本外 8/8 币、7/7 年全面提升,均R/R夏普/回撤/剔10%PF 四项全赢
- 分批要做,但**减仓后不要动止损**。止损位 0/0.5/1/1.5/2 ATR 严格单调,
越紧越差,三组初始 SL 全一致。保本损是全表最差的一档
- SL=1.0 在 1m 上是废的:剔10%PF 0.78~0.99、中位收益 −0.122%
费率此前写的 taker 3bp / maker 1bp 隐含「原始 taker 6bp」的错误前提,
实际是原始 taker 0.040% / maker 0.016%、返 50% 后 2.0 / 0.8bp。方向是保守的,
所以首轮跑出来的数字全部偏低。exit_model 已改,费率只在分析阶段套用,
不必重跑模拟。改完 1m 的均R +8%,5m/15m/30m 只动 2%——费率只对 1m 有杠杆。
顺带查证了用户的一个假设:余量逐年递减是不是跟波动率有关。成立,而且
r = +0.989。毛/ATR 七年在 2.26~2.67 之间没有趋势,衰减的是 ATR 本身
(2021 的 22.1bp 压到 2026 的 8.8bp)。**是波动率压缩,不是 alpha 衰减。**
由此引出 ATR 门控:低 ATR 桶的毛 R 其实最高(1.16 vs 高 ATR 桶的 0.94),
断崖只在扣费之后出现。所以阈值是**费率的函数**(约 5 + 1.1×taker费),
不是市场常数。当前费率下 ≥8bp,在 5m/15m/30m 上几乎不触发,可作全局规则。
lib/shadow_budget.py 放影子测量要对照的常数:逐币预算、门控阈值、
腿→maker/taker 映射、lag 阈值、判据。记录与报表归 research/live/,
分工的理由是这些数会变——今天预算就动了四次。
out/*.feather 转为 ignore:70MB+ 且重跑可得,摘要都在 HANDOFF。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 00:05:56 +08:00 |
|
 UbuntuandCursor
|
7e339d2a54
|
research: 影子交易器落在 Hummingbot 上,并修掉 Bitget 连接器的换根延迟
1m 腿的滑点余量只有几个 bp,所以要测的必须是生产路径的滑点——换个运行时
测出来的数就不作数。框架因此从「滑点已知后再定」提前到测量阶段就定为
Hummingbot(Spot/Perp 连接器均 v2.0,Bitget 是 Foundation Partner)。
新增 research/live/。前置测量:
- bench_compute.py 本机算力,1m 单币 0.318s、三币串行 1.38s
- venue_parity.py Binance 与 Bitget 同根信号重合仅 14.6~42.6%
- signal_sensitivity.py 0.25bp 扰动就换掉一半信号
- aggregate_robustness.py 但总体期望不降——脆的是信号身份,不是 alpha
- bitget_baseline.py 因此改用 Bitget 原生基线定预算:余量 BTC -0.13bp、
ETH +4.02bp、SOL +2.92bp。BTC 本就为负,只作延迟测量的参照物
运行时选型:
- parity_env.py 容器与本机信号逐一相同(下标、中枢数、checksum 全等),
容器内 0.26s/币反而更快。故 chanlun 直接挂载进容器,不必另起信号服务。
装进现有 .venv 那条路走不通:Hummingbot 要 numba>=0.61.2 与
aiohttp<3.14,与本机 Python 3.14 冲突
- latency_ccxt.py / latency_hummingbot.py / latency_compare.py 初测显示
Hummingbot 比 ccxt.pro 慢约 1030ms,90 根逐根配对里 80~97% 更慢
- probe_ws_action.py 否掉「丢弃 snapshot」的猜测:换根首条就是 update
- probe_hb_vs_raw.py 与 latency_attribute.py 四路归因——容器网络 2~18ms、
Hummingbot 处理 -10~-30ms,1350~1480ms 全落在解析方式上
- probe_ws_payload.py 定位根因:Bitget 换根会推一条带两根的消息
[上一根, 新一根],而上游取 data["data"][0] 拿到的是上一根,新一根要等
下一条单元素消息
修复:
- patched_candles.py 处理消息里的全部元素。不能简单改成 [-1]——那样上一根
的收盘价会永远停在换根前约 1 秒的那次推送上,而信号对 0.25bp 都敏感
- verify_patch.py 60 根配对验证:拿回 1060~1090ms,与原始 WS 只差 5~14ms
已贴理论下限,19 根已收盘 K 线 OHLCV 逐根未变。折算 ETH 省 0.54bp、
SOL 省 0.42bp。此 bug 值得向上游反馈
影子交易器:
- shadow_hb.py 不下单,读连接器真实盘口按仓位吃单深度算成交价,与次根开盘价
(回测 entry_delay=1 的口径)相减,分解成延迟漂移、盘口价差、深度冲击。
盘口 10Hz 滚动缓冲 30 秒,把延迟变成自变量:每个信号记 0.5/1/2/5s 与实际
算完时刻各一个滑点值,本机算得慢也不影响能读出的曲线
- shadow_signal.py 信号计算隔离到子进程。0.26s 是纯 CPU 且 chanlun 受 GIL
限制,放进 asyncio 循环会把行情处理一起卡住
- shadow_report.py 首日延迟门槛与滑点曲线报表
不用 paper trade 测滑点:它的成交由 Hummingbot 自己的撮合模型模拟,
测出来是模型行为而非市场行为。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-27 23:51:57 +08:00 |
|
 UbuntuandCursor
|
b286cb0137
|
chore: 忽略 Office 文档与虚拟环境目录
手续费.xlsx 一类文件放在仓库旁但不属于仓库;~$ 开头的是 Excel 打开工作簿
时生成的锁文件,每次都会重新出现并占据 git status。
.venv 一并声明:venv 自 3.11 起会在它创建的目录内写 .gitignore,但仅覆盖
该目录,换个位置或用旧版本就失效。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-27 02:08:12 +08:00 |
|
 jackyu66gitandCursor
|
7f393b93ed
|
refactor: 精简仓库为 chanlun 核心与 web 分析,移除威科夫与遗留模块
删除根目录旧 Chan 模块、策略、配置、文档及 wyckoff 相关代码;更新缠论 pipeline 与笔中枢计算;补充 research 研究与 web 测试。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-27 01:05:12 +08:00 |
|
jackyu66git
|
050ebeb849
|
添加tradingview advanced chart lib和实现chan_tv网页
|
2026-05-14 14:16:06 +08:00 |
|
jackyu66git
|
deeea55237
|
ignore update
|
2026-05-02 02:12:46 +08:00 |
|
jackyu66git
|
8ff1515f8b
|
改了ema的颜色
|
2026-04-24 10:13:30 +08:00 |
|
jackyu66git
|
2af660b1dc
|
添加新的策略
|
2026-01-27 16:02:55 +08:00 |
|
Porter
|
6641e7f83f
|
add ignore file
|
2025-12-05 18:56:53 +08:00 |
|
Porter
|
846decc25e
|
添加ignore
|
2025-11-29 03:48:54 +08:00 |
|
jackyu66git
|
e4f50506fa
|
添加ignore
|
2025-11-29 02:21:57 +08:00 |
|
jackyu66git
|
3c033df1dc
|
不需要的mac文件
|
2025-11-19 10:34:35 +08:00 |
|
jackyu66git
|
af255ee70d
|
添加新的provider,旧的可以删了
|
2025-11-15 03:21:43 +08:00 |
|
jackyu66git
|
b072334adf
|
现在可以正常工作了
|
2025-11-14 17:32:32 +08:00 |
|
jackyu66git
|
ac845ccfd0
|
添加本地数据源,以后就可以直接用本地数据了
|
2025-11-12 23:59:11 +08:00 |
|
Porter
|
0b9f63409c
|
根据新的条件进行交易,添加交易规则
|
2025-09-15 10:29:53 +08:00 |
|
jackyu66git
|
45595fe0f8
|
添加交易记录,便于复盘
|
2025-08-14 14:54:00 +08:00 |
|
Porter
|
8d2bc1a383
|
移除Python编译文件并更新gitignore规则
|
2025-06-02 14:42:59 +08:00 |
|
Porter
|
da2a56432c
|
添加机器学习模型文件和数据库文件的忽略规则
|
2025-06-02 14:40:05 +08:00 |
|
jackyu66git
|
f5e76663e6
|
Add more change
|
2025-04-28 18:07:41 +08:00 |
|
jackyu66git
|
fceb57d2b8
|
change something
|
2025-04-27 18:37:50 +08:00 |
|
jackyu66git
|
88701608bd
|
Change ignore files
|
2025-04-27 10:07:05 +08:00 |
|
jackyu66git
|
70e14c2ea3
|
Add files
Add first batch of files
|
2025-04-22 10:09:19 +08:00 |
|