写一个Pine策略,就像是组建一支准备上战场的军队,strategy()
函数里的各种设置,就是你为这支军队制定的作战条例和后勤规范。这些规则决定了你的策略如何交易、如何管理资金、以及回测报告的真实性。所有的策略设置我们可以清晰地分为两大类:一个是只有策略脚本才有的独门兵法;另一个是和指标脚本通用的基础装备。
我们先从最重要的独门兵法讲起,以下这些设置是策略脚本专属的,它们直接定义了交易行为和回测环境,是决定一个回测是否具有参考价值的关键。
一、 交易规则
- pyramiding:金字塔加仓。默认情况下,一个方向只允许持有一笔订单,通过这个参数,你可以设定在盈利方向上最多能加多少次仓,这是实现让利润奔跑的关键工具。
- close_entries_rule:平仓顺序。当你有多个仓位时,这个参数能让你自定义平仓顺序,比如后进先出。
- margin_long / margin_short:保证金比例。设定多头和空头订单需要占用的保证金百分比,直接关系到策略的杠杆水平。
二、 资金与成本
下面这组参数是区分业余回测和专业回测的分水岭,如果你忽略它们,你的回测报告将毫无实战意义。
- initial_capital:初始资金。设定回测开始时你有多少本金。
- currency:账户货币。你可以指定策略用什么货币来计算盈亏。
- slippage:滑点。模拟市价单和止损单在真实市场中可能遇到的不理想成交价。强烈建议所有策略都设置一个合理的滑点!
- commission_type / commission_value:手续费。模拟真实交易中不可避免的成本,可以按固定金额或成交额百分比设置,强烈建议所有策略都根据你的经纪商标准进行设置!
三、 订单与计算
- process_orders_on_close:
true
时,允许策略在K线收盘那一刻就成交订单,而不是等到下一根K线的开盘,这更符合收盘价交易的逻辑。 - backtest_fill_limits_assumption:限价单成交模拟。默认情况下,价格触碰到限价单就会成交,这个参数可以要求价格必须穿过限价单几个点才算成交,让回测更保守、更真实。
- calc_on_order_fills:
true
时,订单一旦成交,会立刻触发一次额外的计算,适合那些需要对成交回报做出即时反应的策略。 - calc_on_every_tick:严重警告,这是一个潘多拉魔盒!
true
时,实盘中价格每次跳动都会计算一次策略,这在回测中会导致你的回测报告极度虚高,新手请永远不要打开这个开关!
四、 仓位管理
- default_qty_type:默认下单量的计算方式。你可以选择按固定手数、固定现金价值,或者总权益的百分比来下单。
- default_qty_value:配合上一条使用,设定具体的下单数值。
另一部分设置,则是策略和指标通用的基础装备,它们主要负责脚本的外观显示和性能限制,如果你熟悉指标的设置,那么这部分对你来说就是老朋友了。
这些共享设置在策略和指标中的作用完全相同,包括:
- title / shorttitle (脚本名称)
- overlay (是否叠加在主图)
- format / precision / scale (数值格式与坐标轴)
- max_bars_back (历史数据回溯数量)
- max_lines_count / max_labels_count / max_boxes_count (绘图对象数量上限)
- linktoseries (与主图表视觉外观保持一致)
- explicit_plot_zorder (绘图元素的图层顺序)
总结
你无需死记硬背所有参数,但为了回测的真实性,你必须重点掌握并设置关于初始资金、滑点、手续费的核心参数。请务必远离calc_on_every_tick=true
这个回测陷阱,除非你百分之百熟练这个设定,掌握了这些规则,你才能真正开始构建一个有实战参考价值的交易策略。