Google Sheets条件计算后如何正确获取负数值结果?
交易日志Short仓位盈亏负号缺失修正方案
问题根源
你当前的公式仅实现了Long/Short的字符串匹配,没有对应适配两类仓位相反的盈亏计算逻辑:
- Long仓位盈亏计算逻辑:
(平仓价 - 开仓价) * 持仓数量 - Short仓位盈亏计算逻辑:
(开仓价 - 平仓价) * 持仓数量,等价于Long仓位计算结果乘以-1
现有公式对两类仓位使用了完全相同的计算逻辑,才会导致Short场景下负号丢失。
修正方案
电子表格场景(Excel/Google Sheets等)
假设你的表格对应字段列如下:
- A列:仓位方向,存储
Long/Short字符串 - B列:开仓价
- C列:平仓价
- D列:持仓数量
你可以直接用IF判断调整公式:
=IF(A1="Long", (C1-B1)*D1, (B1-C1)*D1)
如果希望公式更简洁,也可以用符号系数写法:
=(C1-B1)*D1*IF(A1="Long",1,-1)
代入你给出的Short场景数值验证:(204.9-205)*48.7804878*-1 = -4.88,和预期结果完全一致。
Python Pandas 数据处理场景
如果是用代码批量处理日志数据,可以用np.where实现相同逻辑:
import pandas as pd import numpy as np df['盈亏'] = np.where(df['仓位方向']=='Long', (df['平仓价']-df['开仓价'])*df['持仓数量'], (df['开仓价']-df['平仓价'])*df['持仓数量'])
内容的提问来源于stack exchange,提问作者Danish Xavier
相关产品推荐
相关产品推荐

