Pine Script编写DCA策略:向Wundertrading Bot发送USD金额而非合约数量
在Pine Script中实现按USD金额向Wundertrading Bot发送DCA订单
核心逻辑
Wundertrading期货下单要求以USD金额为基准,因此需要将目标USD金额转换为对应合约数量,转换时需结合当前标的价格、合约乘数(不同品种/交易所存在差异),可选预留少量金额应对手续费或价格波动。
实现代码
//@version=5 strategy("DCA Strategy (USD Amount for Wundertrading)", overlay=true, initial_capital=10000) // 参数配置 dca_target_usd = input.float(100, title="单次DCA投入USD金额", minval=10) contract_multiplier = input.float(0.0001, title="合约乘数", tooltip="如BTCUSDT永续为0.0001,ETHUSDT为0.01") fee_reserve_pct = input.float(0.1, title="手续费预留比例(%)", minval=0, maxval=5) / 100 // 计算可用金额与合约数量 usable_usd = dca_target_usd * (1 - fee_reserve_pct) contract_qty = usable_usd / close / contract_multiplier // 对齐交易所最小合约单位(以BTCUSDT为例,最小0.0001) contract_qty := math.round(contract_qty / 0.0001) * 0.0001 // DCA触发条件示例(可替换为你的策略逻辑) dca_trigger = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) if (dca_trigger) strategy.entry("DCA多单", strategy.long, qty=contract_qty) // 调试用:输出计算后的合约数量 plot(contract_qty, title="计算合约数", color=color.blue, display=display.data_window)
关键细节说明
- 合约乘数:必须匹配交易品种,比如Binance BTCUSDT永续合约每手代表0.0001 BTC,ETHUSDT为0.01 ETH,需自行确认对应品种参数。
- 手续费预留:加入小比例预留是为了避免价格瞬间波动导致实际花费超出目标USD金额,可根据需求调整或设为0。
- 数量取整:必须符合交易所最小合约单位要求,否则订单会被拒绝,示例中针对BTCUSDT的0.0001单位做了取整处理,其他品种需对应修改。
Wundertrading配置注意事项
- 策略连接时选择对应期货品种,不要手动修改订单数量,让Pine Script计算的数值直接传递。
- 测试阶段先用小额验证,确认实际下单的USD金额与设置的
dca_target_usd一致。
内容的提问来源于stack exchange,提问作者turkprinting
相关产品推荐
相关产品推荐

