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

如何将TradingView Pine Script的TTF指标转换为Python实现?

解决Trend Trigger Factor(TTF)指标Pine Script转Python的计算错误问题

核心逻辑对比

先明确原Pine Script中关键代码的含义:

buyPower = hh - nz(ll[length])
sellPower = nz(hh[length]) - ll

这里的hh是当前周期的最高价,ll是当前周期的最低价;[length]表示往前偏移length个周期,nz()函数是将NaN值替换为0。所以两行的实际逻辑是:

  • buyPower = 当前最高价 - length周期前的最低价(空值补0)
  • sellPower = length周期前的最高价(空值补0) - 当前最低价

错误原因分析

你得到后期TTF全为0,大概率是以下问题:

  • 错误使用滚动窗口(如rolling().min()/rolling().max())计算ll和hh,而非直接取对应周期的原始高低价
  • 偏移周期数设置错误(比如用shift(1)代替shift(length))
  • 未正确处理空值,或分母为0时未做特殊处理

正确Python实现代码

假设你使用Pandas处理行情数据,DataFrame包含high(最高价)和low(最低价)列:

import pandas as pd
import numpy as np

def calculate_ttf(df, length=10):
    # 获取length周期前的高低价,空值用0填充(对应Pine的nz函数)
    prev_low = df['low'].shift(length).fillna(0)
    prev_high = df['high'].shift(length).fillna(0)
    
    # 计算buyPower和sellPower
    buy_power = df['high'] - prev_low
    sell_power = prev_high - df['low']
    
    # 计算TTF,处理分母为0的情况
    denominator = buy_power + sell_power
    ttf = np.where(denominator == 0, 0, (buy_power - sell_power) / denominator * 100)
    
    df['ttf'] = ttf
    return df

使用示例

# 假设df是你的行情数据DataFrame
df = calculate_ttf(df, length=10)

这样计算出来的TTF值就会和TradingView中的结果一致,不会出现后期全为0的问题。

内容的提问来源于stack exchange,提问作者YoYoYo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:05:56