You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TradingView的Pine Script中截断订单合约数量的小数位

Pine Script 合约数量小数位截断实现方案

核心逻辑

要实现截断小数位而非四舍五入,核心思路是将原数值放大对应小数位的倍数后取整,再缩小回原倍数即可。

代码修改步骤

  1. 新增通用截断函数
// number:待处理数值,decimals:要保留的小数位数
truncate(number, decimals) =>
    factor = math.pow(10, decimals)
    int(number * factor) / factor
  1. 下单前手动计算可开仓数量,调用截断函数处理后传入下单接口
    你原有策略中设置的是固定850USDT的现金下单,因此可开仓数量为850 / 当前K线收盘价,将该值截断到3位小数后传入strategy.entry的qty参数即可。

修改后完整代码

strategy(title="IN USE  [bch-usdt]  [strat cash <850usd>]  [close <sma 100>]", default_qty_type=strategy.cash,
     default_qty_value=850)

// 新增截断函数
truncate(number, decimals) =>
    factor = math.pow(10, decimals)
    int(number * factor) / factor

angle(_src) =>
    rad2degree=100/3.14159265359  //pi
    ang=rad2degree*atan((_src[0] - _src[1])/atr(14))
    
ma_slope=angle(sma(close, 100))

longCondition = crossover(sma(close, 1), sma(close, 100))
if (longCondition)
    stop_level = close*0.95
    // 计算并截断下单数量到3位小数
    trade_qty = truncate(strategy.default_qty_value / close, 3)
    strategy.entry("My Long Entry Id", strategy.long, qty=trade_qty)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level)
    
shortCondition = crossunder(sma(close, 1), sma(close, 100))
if (shortCondition)
    strategy.close("My Long Entry Id")
    
plot(strategy.netprofit)

调整说明

如果需要修改保留的小数位数,只需调整truncate函数的第二个参数即可,例如要保留2位小数就改为truncate(strategy.default_qty_value / close, 2)。


内容的提问来源于stack exchange,提问作者Michael O'Brien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:36:04