关于 pinescript-to-python-translator
pinescript-to-python-translator 将 TradingView PineScript 策略转为适用于无头回测和优化的 Python 组件。它分类参数、转换指标逻辑,并规定包含信号与 Optuna 搜索空间的输出结构。
主要功能
- 01分类信号、风险和显示参数
- 02提取 Optuna 参数边界
- 03将技术指标转换为 Python
- 04向量化入场与退出条件
- 05检查重绘和除零风险
适用场景
- 01将 TradingView 回测迁移到 Python
- 02为 Walk-Forward Analysis 准备策略
- 03构建 Optuna 超参数搜索空间
- 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)和蒙特卡洛模拟至关重要。
工作流
-
拆解与分类(构建 IR)
- 解析
.pine脚本,以识别input()、input.int()、input.float()和input.bool()。 - 将参数分为三类:
- 信号:决定入场的参数(例如,
length、crossover_threshold)。 - 风险:决定退出的参数(例如,
stop_ticks、trail_offset)。 - 显示:仅用于绘图/UI 的参数(丢弃这些参数)。
- 信号:决定入场的参数(例如,
- 解析
-
提取边界
- 对每个信号和风险参数,提取其提供的
minval、maxval和step。 - 将这些值格式化为 Optuna 试验建议(例如,
trial.suggest_int('length', 10, 50))。
- 对每个信号和风险参数,提取其提供的
-
逻辑转换
- 将 PineScript 技术分析函数(
ta.sma、ta.ema、ta.rsi)转换为pandas-ta或numpy等效函数。 - 对入场和退出条件进行向量化。除非路径依赖有严格要求,否则不要使用标准的行遍历
for循环。尽可能使用np.where和.shift()。
- 将 PineScript 技术分析函数(
-
加固与审计
- 重绘风险:检查转换后的代码是否依赖当前尚未收盘的 K 线数据。生成信号时强制使用
.shift(1)。 - 除以零:使用
np.maximum(denominator, 1e-8)保护所有分母,防止优化期间出现 NaN 爆炸。
- 重绘风险:检查转换后的代码是否依赖当前尚未收盘的 K 线数据。生成信号时强制使用
输出格式
输出应为一个 Python 文件,其中包含:
- 一个
extract_features(df, params)函数,用于根据参数字典构建所有指标。 - 一个
generate_signals(df)函数,用于创建signal列(多头为 1,空头为 -1,空仓为 0)。 - 一个
get_optuna_space(trial)函数,用于返回超参数搜索空间字典。
评论
支持 Markdown