本篇接上一篇也就是Pine Script(60),继续聊一下代码配置和手动配置,配置Pine策略就像调校一辆赛车。
我们有两种方式:一是代码配置 (strategy()函数)。这是策略的出厂设置或默认参数,你在这里定义策略的核心、可靠的基准参数,比如交易成本、初始资金等。二就是手动配置 (图表界面的设置):这是你根据当前情况做快速微调,它让你无需修改代码就能快速测试新想法。
核心法则:手动设置永远覆盖代码设置! 理解这一点至关重要,你在界面上做的任何改动,优先级都高于代码里的原始设定。
一个专业的工作流程是:先用strategy()函数在代码里设定好一套最接近真实的默认参数,保证策略的基准是可靠的。然后在日常研究和测试中,灵活运用手动设置去探索各种What-if的可能性。
要进行手动微调,首先需要打开设置窗口。最常用的三种方法是:
- 点击图表上策略名称右侧的齿轮图标
- 在策略名称上右键或左键单击,然后选择“格式…”
- 直接双击策略在图表上绘制的任何图形(比如均线、背景色等)
下面这张表,清晰地展示了strategy()函数里的代码参数与手动设置界面选项的对应关系,你可以把它当作一份速查手册。
| 功能描述 | 代码设置 (strategy()参数) |
手动设置 | 解读 |
| 显示位置 | overlay |
移动到上方/下方窗口 | 决定策略是叠加在主图K线上,还是在下方独立窗口显示。 |
| 数值精度 | precision |
样式 -> 精度 | 控制策略绘图数值的小数位数,让图表更清爽。 |
| 价格坐标轴 | scale |
样式 -> 坐标轴 | 绑定到左轴、右轴或不绑定。当指标数值与价格差异巨大时非常有用。 |
| 加仓(金字塔) | pyramiding |
属性 -> 加仓 | 定义在同一方向上允许的最大开仓次数。 |
| 订单后计算 | calc_on_order_fills |
属性 -> 订单成交后重新计算 | 订单成交后,立即在K线内部额外计算一次,反应更灵敏。 |
| 实时计算 | calc_on_every_tick |
属性 -> 逐笔实时重新计算 | 此项会导致回测与实盘行为不一致,强烈建议不勾选! |
| 限价单成交 | backtest_fill_limits_assumption |
属性 -> 验证限价单的价格 | 模拟限价单的滑点,让回测更保守、更真实。 |
| 默认下单量 | default_qty_type / default_qty_value |
属性 -> 订单大小 | 设置默认的仓位大小,支持固定手数、固定金额或权益百分比。 |
| 初始资金 | initial_capital |
属性 -> 初始资金 | 设定回测的起始本金,务必设一个符合你实际情况的数值。 |
| 账户货币 | currency |
属性 -> 基准货币 | 指定策略的计价和报告货币,让盈亏计算更贴近你的账户。 |
有几个参数是设置仪表盘上没有的,它们只能在代码的strategy()函数中进行一次性设定:
title:策略的名称,这是唯一必填的参数,无法手动更改。max_bars_back:设定策略计算所需的最大历史K线回溯数量。通常系统会自动估算,仅在极少数复杂策略中需要手动指定。
总结
现在你应该对代码和手动设置的关系有了清晰的理解,记住这个最佳实践工作流:
- 用
strategy()函数构建你的默认设置:把所有核心的、模拟真实环境的参数(如手续费、滑点、初始资金、保证金模型等)都在代码里定义好,这保证了你的策略无论加载到哪张图表,都有一个专业、可靠的起点。 - 用手动设置进行快速探索和微调:当你需要测试不同仓位大小、不同加仓次数或不同货币对策略的影响时,使用手动设置。它能让你在几秒钟内看到结果,而无需反复修改代码。
把代码当作策略的地基,把手动设置当作灵活的装修,两者完美配合,才能发挥出Pine策略最强大的威力。



