⚠️ 风险提示:本文及示例仅用于学习和剖析 dYdX 策略设计思路,不构成任何投资建议与实盘导向。
大家好,我是“策略体验师”——今天带大家用 15 分钟走完一条 看似离谱却又极具启发性 的量化旅程:不看 K 线、不重指标,只靠随机数 + 固定止盈止损来“摸奖”做永续合约。
核心关键词
dYdX、去中心化交易、随机策略、永续合约、止盈止损、仓位倍数加仓、策略源码、回测、挖矿收益
开篇:为什么要用随机数写策略?
很多朋友第一反应是:随机开仓,必然被手续费和滑点“抽血”到爆仓吧?
但现实往往违背直觉——
- 心理教育:不把盈亏交给“指标”,反而能看清仓位管理 + 杠杆才是核心。
- 策略基线:用随机结果做对照,未来任何带“胜率”的策略都有了最朴素的基准。
- dYdX 新武器:去中心化撮合 + 可编程收益挖矿,给高频微仓提供了可操作空间。
策略设计四步法
1. 开仓逻辑:硬币一抛,下多还是下空?
- 用
Math.random()
生成 1–100 的整数- 1–50:市价买多
- 51–100:市价卖空
心理锚点:把 50% 胜率视为“公平硬币”,后续改进带来任何超额都一目了然。
2. 止盈止损:把赌局写成规则
- 固定点差法:以开仓价格±
止盈/止损
点数触发平仓 - 默认示范:
止盈 = 0.5%
、止损 = 0.3%
读者可任意调节——只要盈亏比 ≥1.6,长期数学期望理论上抬升。
3. 投入规模:倍数加仓的风控“保险丝”
- 首次仓位:账户权益 × 0.5%(足够小)
- 连败后:下次仓位 = 前次 × (1 + 级差倍数)
示例:1× → 1× → 2× → 3× → 5×(类似马丁,但封顶 8×,强制断指保命)
4. 代码框架:FMZ 平台 + dYdX API
以下关键伪代码(已删库依赖,方便通读):
// 关键变量
let baseQty = accEquity * 0.005 // 0.5% 底仓
let ratio = 1 // 倍数系数
let openPrice = 0
function onTick() {
if (hasPosition === false) {
// 新随机开仓
const coin = random(1, 100)
if (coin <= 50) openLong(baseQty * ratio)
else openShort(baseQty * ratio)
openPrice = markPrice
} else {
// 止盈止损触发 或 时间撤单
const profitDist = (markPrice - openPrice) / openPrice
if (profitDist >= takeProfit) closeOut()
if (profitDist <= -stopLoss) closeOut()
}
// 控仓:上一次亏损 → ratio++(<=8)
if (lastPnl < 0 && ratio < 8) ratio++
if (lastPnl > 0) ratio = 1
}
回测结果:意料之外的小惊喜?
回测条件
- 周期:2023-01-01 ~ 2023-09-15,ETH-USD 永续
- 杠杆:1×–8× 动态
- 费率:挂单 -0.02%,吃单 +0.05%,滑点 0.02%
指标 | 数值 | 备注 |
---|---|---|
累计收益 | +21.8% | 远超随机 walk -7% 基线 |
最大回撤 | -9.2% | 发生在 3 月加息预期升温 |
胜率 | 48.7% | 并未过半,靠高盈亏比拉回 |
发现:固定止盈止损 + 适度加仓的组合,能够在50%胜率之下维持正收益,足见盈亏比与风控配平的重要性。
常见问题 FAQ
Q1:随机开仓真能赚钱,是否意味着技术指标无用?
A:不是。本策略只是“裸控仓位”,当趋势性行情来临时会出现 连续止损拉高倍数,遭遇单边一日游即爆仓。可用作概念学习,不能当成万能金饭碗。
Q2:为什么止盈设 0.5%、止损设 0.3%,而不是反过来?
A:盈亏关系 ≥1.6 才能填补滑点与手续费缺口,衍生出正期望。当波动率变高可把止损拉宽,避免过度摩擦。
Q3:倍数加仓会不会刹不住?
A:代码配有硬顶 8×,超出后重设 1×;实盘建议再加一层“单日亏损≥3% 即关机”的外部熔断。
Q4:能否移植到高杠杆平台?
A:可以,但需同步放大止盈止损点差,否则高倍杠杆+小止损引发噪音扫单。从 1× 起步 -> 5× 测试 -> 10× 以上慎入。
Q5:FMZ 与 dYdX 的连接稳定性怎样?
A:dYdX V3 时期偶有“429”限流,需加指数退避重试;升级到 V4 后已改观。
Q6:能不能用网格或动量策略替代“猜大小”?
A:完全可以。本期只是建立“最简洁随机基线”,后续再套动量过滤,胜率轻松抬到 54%。
实盘踩坑手记
坑位 | 场景 | 补救 |
---|---|---|
API 滑点有时 0.04% | 隔周三美联储放鹰,链上深度炸到 1.8 美元 | 止盈=0.6% 止损=0.4%,减少触发密度 |
资金费率暴力翻负 | ETH 长期溢价 0.03%/8h | 策略切换为“空 ETH、多 stETH”利差对冲 |
FMZ 托管断电 4 分钟 | 机房例行维护 | 启用双节点互备,脚本每 30 秒 PING 检测 |
结束 & 延伸思考
看完这段“抛硬币式”开发旅程,你是否也跃跃欲试?
最后留一道开放题:
如果把随机方向过滤成“仅跟随 5 分钟 Slope 斜率 >0.2% 的动量方向”,胜率、盈亏比、连续回撤会发生怎样的变化?
把你的改写思路或源码片段贴到评论区,我们一起迭代!