如何向量化Python Pandas中的追踪止损(trailing stoploss)函数代码?
向量化实现追踪止损(Trailing Stoploss)
你的原代码逻辑是:Long_TSL初始值等于LSL,后续每个位置的值取前一个Long_TSL与当前LSL的较大值——这本质就是对LSL序列计算从左到右的累积最大值,完全可以用pandas内置的向量化函数直接替代循环。
向量化实现代码
df['LSL'] = df.Close * 0.98 df['Long_TSL'] = df['LSL'].cummax()
逻辑说明
cummax()函数会逐行计算序列的累积最大值:
- 第一个元素直接取
LSL的第一个值,和原逻辑一致 - 从第二个元素开始,自动取当前
LSL值与之前所有LSL(及累积的Long_TSL)中的最大值,等价于原循环里"如果前一个Long_TSL更大就继承,否则用当前LSL"的判断
性能优势
这种向量化操作由pandas底层的C引擎执行,相比Python原生循环,在大数据量(比如十万+行)的情况下性能提升会非常明显,避免了循环带来的Python解释器开销。
内容的提问来源于stack exchange,提问作者Arunava Datta
相关产品推荐
相关产品推荐

