本项目旨在对GMGN平台上的聪明钱进行深度分析,识别高效投资策略和潜在的市场机会。
- 数据获取层:
dao_gmgn.py - 存储层:
service_gmgn_storage.py - 服务层:
service_gmgn.py - 缓存层:
token_market_cap_cache.py,token_trades_cache.py
- 规则:SOL余额 < 1
- 目的:排除资金极其微小的地址
- 意义:过滤无实际交易能力的钱包
- 总利润规则:
total_profit_u < 0 - 7天利润规则:
profit_7d < 15,000 USD - 30天利润规则:
profit_30d < 25,000 USD - 目的:聚焦有实际盈利能力的地址
- 意义:排除长期亏损或微小收益的地址
- 规则:30天内交易次数 > 3,000次
- 计算方式:
buy_count_30d + sell_count_30d > 3,000 - 目的:排除异常高频交易地址
- 意义:识别可能存在机器人交易或刷量行为
- 30天ROI规则:
profit_30d / cost_30d < 0.1 - 买入/卖出利润率均值规则:两者均 < 0.1
- 目的:评估投资效率
- 意义:筛选出投资策略低效的地址
- 规则:30天交易币种 < 10个
- 目的:确保地址有足够的交易多样性
- 意义:排除单一币种或交易范围狭窄的地址
- 最大单币种利润规则:最大代币利润 < 10,000 USD
- 异常利润分布规则:最大利润 > 第2-10名利润总和
- 目的:识别利润分布不均衡的地址
- 意义:发现可能存在操纵市场的异常交易模式
- 7天成本为0规则
- 30天成本为0规则
- 目的:排除没有实际交易成本的地址
- 意义:过滤可能是测试或模拟交易的钱包
- 已标记删除的地址直接跳过
- 满足任一放弃规则,将状态设置为
Delete - 目的:高效管理地址生命周期
- 多维度评估
- 平衡精确性和包容性
- 动态调整阈值
- 持续优化算法
- 顺序检查每个规则
- 一旦满足任一规则,立即标记为放弃
- 记录详细的放弃原因
- 定期审核和调整规则
- 仅分析非删除状态的地址
- 必须具备
address_activities交易活动记录 - 过滤掉市值 >= 100,000 USD 的代币
- 检测时间窗口:60秒内
- 目标:识别短时间内的异常交易行为
- 必须是连续的买入-卖出交易
- 买入交易必须在卖出交易之前
- 交易时间间隔 <= 60秒
- 比较买入和卖出交易的基础数量
- 允许的误差范围:±5%
- 计算公式:
|卖出数量 - 买入数量| / 买入数量 <= 0.05
- 买入金额必须为正
- 卖出金额必须为正
- 排除异常或无效交易记录
- 60秒内完成买入和卖出
- 交易数量高度一致
- 交易代币市值较低(< 100,000 USD)
- 识别到割跟单特征的地址
- 自动标记为
Delete状态 - 在备注中添加 "割跟单" 标签
- 记录每次检测的详细信息
- 输出可疑地址、代币地址和市值
- 使用
logger记录关键步骤和异常
- 使用
TokenTradesCache缓存交易记录 - 使用
TokenMarketCapCache缓存市值信息 - 减少重复网络请求,提高检测效率
- 捕获并记录检测过程中的异常
- 确保单个地址检测失败不影响整体流程
- 返回
potential_harvest_addresses列表 - 包含可疑地址、代币地址和市值信息
- 保护投资者利益
- 识别市场中的异常交易行为
- 提供区块链交易透明度
- 帮助投资者规避高风险交易
- 直接使用
win_rate_30d作为得分 - 胜率越高,得分越高
- 反映交易成功率
- 0-5万美元线性得分
- 计算公式:
min(1.0, max(0.0, profit_7d / 50000)) - 鼓励短期稳定盈利
- 0-10万美元线性得分
- 计算公式:
min(1.0, max(0.0, profit_30d / 100000)) - 评估中期投资表现
- 比较7天和30天盈利比例
- 比例 >= 2:满分0.5分
- 1.5 <= 比例 < 2:0.25分
- 比例 < 1:扣1分
- 反映盈利的持续性和一致性
- 评估每次买入的平均盈利情况
- 根据平均买入成本和利润计算
- 评估买入交易的盈利率
- 关注相对收益
- 评估每次卖出的平均盈利情况
- 根据平均卖出成本和利润计算
- 评估卖出交易的盈利率
- 关注相对收益
- 比较买入和卖出利润
- 如果卖出利润/买入利润 > 1.5,给予额外加分
- 奖励高效的交易策略
- 1-5万美元线性得分
- 计算公式:
min(1.0, max(0.0, (total_profit_u - 10000) / (50000 - 10000))) - 评估整体盈利能力
- TOP1盈利占比 (0-50%)
- TOP5盈利占比 (0-75%)
- TOP10盈利占比 (0-100%)
- 亏损TOP1占比 (0-50%)
- 亏损TOP5占比 (0-75%)
- 亏损TOP10占比 (0-100%)
- 满分:7.5分
- 优秀:> 5分
- 良好:3-5分
- 一般:1-3分
- 较差:< 1分
- 全面评估地址的投资能力
- 识别高效交易策略
- 量化投资风险和收益
- 市值缓存 (
TokenMarketCapCache)
- 缓存有效期:24小时
- 减少重复网络请求
- CSV持久化存储
- 交易记录缓存 (
TokenTradesCache)
- 缓存有效期:24小时
- 支持按代币地址和钱包地址缓存
- CSV持久化存储
- 网络请求重试
- 最大重试次数:3次
- 指数退避策略
- 详细日志记录
- 缓存机制
- 批量处理地址
- 异常处理与快速失败
- 不存储敏感个人信息
- 使用安全的网络请求方式
- 日志脱敏
- 机器学习风险预测模型
- 实时监控系统
- 更复杂的缓存淘汰策略
- 多维度风险评分算法
- Python
- Peewee ORM
- MySQL
- loguru
- requests/curl
- 代码模块化
- 简洁明了的注释
- 类型提示
- 枚举类型增强可读性
- Python版本:3.8+
- 安装依赖库
pip install peewee loguru requests pandasdao_gmgn.py:数据获取层service_gmgn.py:核心服务层service_gmgn_storage.py:存储服务service_gmgn_ut_*:单元测试和功能验证脚本
python service_gmgn_ut_1_获取利润top100地址.py- 目的:获取盈利最高的100个地址
- 输出:Top 100地址列表
python service_gmgn_ut_2_地址统计信息.py- 目的:统计地址的基本信息
- 输出:地址统计报告
python service_gmgn_ut_3_初步筛选地址.py- 目的:根据初步规则过滤地址
- 输出:筛选后的地址列表
python service_gmgn_ut_4_所有币的盈亏.py- 目的:分析所有代币的盈亏情况
- 输出:代币盈亏详细信息
python service_gmgn_ut_5_检查是不是json.py- 目的:验证JSON数据的有效性
- 输出:JSON数据检查报告
python service_gmgn_ut_6_二次筛选地址.py- 目的:进行更严格的地址筛选
- 输出:二次筛选后的地址列表
python service_gmgn_ut_7_打分.py- 目的:对地址进行综合评分
- 输出:地址评分结果
python service_gmgn_ut_8_获取地址操作记录.py- 目的:获取地址的详细操作历史
- 输出:地址操作记录
python service_gmgn_ut_9_检测割跟单地址.py- 目的:识别可能的割跟单地址
- 输出:可疑割跟单地址列表
- 确保网络连接正常
- 检查API密钥和权限
- 关注日志输出
- 定期备份数据
- 网络错误:检查网络连接
- API限流:增加重试机制
- 数据解析错误:检查数据格式
- 使用缓存机制
- 并行处理数据
- 优化数据库查询
- 定期清理缓存