mcpField
P
pinescript-to-python-translator

pinescript-to-python-translator

github.com/mphinance开发3296 次安装2 天前更新
代码仓库

关于 pinescript-to-python-translator

pinescript-to-python-translator 将 TradingView PineScript 策略转为适用于无头回测和优化的 Python 组件。它分类参数、转换指标逻辑,并规定包含信号与 Optuna 搜索空间的输出结构。

主要功能

  1. 01分类信号、风险和显示参数
  2. 02提取 Optuna 参数边界
  3. 03将技术指标转换为 Python
  4. 04向量化入场与退出条件
  5. 05检查重绘和除零风险

适用场景

  1. 01将 TradingView 回测迁移到 Python
  2. 02为 Walk-Forward Analysis 准备策略
  3. 03构建 Optuna 超参数搜索空间
  4. 04审计转换后信号的重绘风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mphinance/alpha-skills --skill pinescript-to-python-translator

安装后在 Claude Code 中输入/pinescript-to-python-translator确认已加载。

附带文件README.md

详细介绍

🌲 PineScript to Python 翻译器

此技能旨在接收原始 TradingView PineScript 文件(.pine),并将其严格拆解为 Python 原生组件,以便使用向量化和 Optuna 等工具进行优化。

何时使用此技能

当你想将回测从 TradingView 生态系统迁移到无头 Python 环境时,请使用此技能。这对于运行 TradingView 无法处理的多折 Walk-Forward Analysis(WFA)和蒙特卡洛模拟至关重要。

工作流

  1. 拆解与分类(构建 IR)

    • 解析 .pine 脚本,以识别 input()、input.int()、input.float() 和 input.bool()。
    • 将参数分为三类:
      • 信号:决定入场的参数(例如,length、crossover_threshold)。
      • 风险:决定退出的参数(例如,stop_ticks、trail_offset)。
      • 显示:仅用于绘图/UI 的参数(丢弃这些参数)。
  2. 提取边界

    • 对每个信号和风险参数,提取其提供的 minval、maxval 和 step。
    • 将这些值格式化为 Optuna 试验建议(例如,trial.suggest_int('length', 10, 50))。
  3. 逻辑转换

    • 将 PineScript 技术分析函数(ta.sma、ta.ema、ta.rsi)转换为 pandas-ta 或 numpy 等效函数。
    • 对入场和退出条件进行向量化。除非路径依赖有严格要求,否则不要使用标准的行遍历 for 循环。尽可能使用 np.where 和 .shift()。
  4. 加固与审计

    • 重绘风险:检查转换后的代码是否依赖当前尚未收盘的 K 线数据。生成信号时强制使用 .shift(1)。
    • 除以零:使用 np.maximum(denominator, 1e-8) 保护所有分母,防止优化期间出现 NaN 爆炸。

输出格式

输出应为一个 Python 文件,其中包含:

  1. 一个 extract_features(df, params) 函数,用于根据参数字典构建所有指标。
  2. 一个 generate_signals(df) 函数,用于创建 signal 列(多头为 1,空头为 -1,空仓为 0)。
  3. 一个 get_optuna_space(trial) 函数,用于返回超参数搜索空间字典。

评论

支持 Markdown