保持敬畏之心
交易是一场持久战

Pine Script(57):策略脚本核心函数 - strategy()

#Pine Script入门教学

在TradingView里,strategy()函数是每个策略脚本的心脏,每一个策略都必须调用它,否则脚本就只是个普通的指标,无法执行回测。

更重要的是,一些决定策略回测真实性的高级功能,比如滑点、手续费、保证金等,并没有手动设置的入口,只能通过strategy()函数在代码层面进行配置。可以说要让你的回测尽可能贴近实战,就必须先搞定strategy()

strategy()函数只有一个必填参数:title,也就是给你的策略起个名字。

所以一个最简单的策略声明就是这样:

strategy(title="我的策略")

这段代码会给策略命名,这个名字会显示在图表和下方的策略测试器窗口中。

虽然strategy()函数可以放在代码的任何位置,但一定要把它放在版本声明//@version=6的下一行,这让任何读你代码的人都能第一眼就看到策略的核心配置。

//@version=6
strategy(title="我的策略")

// 交易逻辑、下单指令

一个专业的策略远不止起个名字这么简单,我们需要配置各种参数,来模拟真实世界的交易环境。

  • 示例1:订单与绘图
//@version=6
strategy(title="我的策略", process_orders_on_close=true,
    max_labels_count=100, max_lines_count=250)

这里process_orders_on_close=true是一个非常关键的设置,它让策略在当前K线收盘时就立刻处理订单成交,而不是等到下一根K线的开盘价,这更符合很多交易者的操作习惯。max_labels_countmax_lines_count则增加了策略在图上能画的标签和线条数量。

  • 示例2:交易成本与初始资金
//@version=6
strategy(title="我的策略", backtest_fill_limits_assumption=2,
    slippage=2, margin_long=10, margin_short=10, initial_capital=100000)

这个例子就非常贴近实战了,initial_capital设定了10万的初始资金、slippage=2为市价单和止损单设置了2个点的滑点、margin_longmargin_short将保证金比例都设为10%。backtest_fill_limits_assumption=2则模拟了限价单需要价格超过2个点才能成交,让回测更保守、更真实。

很多新手写策略,从不设置手续费和滑点,看到漂亮的回测曲线就沾沾自喜,一旦实盘,结果往往惨不忍睹。记住不考虑交易成本的回测,都是自欺欺人。

  • 示例3:仓位管理与订单设置
//@version=6
strategy(title="我的策略", overlay=true, pyramiding=10,
    default_qty_type=strategy.cash, default_qty_value=2000)

这个例子展示了仓位管理的设置,overlay=true让策略的绘图直接叠加在主图上,pyramiding=10是加仓的关键,它允许在同一方向上最多持有10笔订单,default_qty_typedefault_qty_value则设定了默认的下单方式:每次开仓动用2000美元的仓位(这个和mt4的余额类似但也有一些差异,平时大家提到的仓位是手数)。

strategy()参数详解

strategy()的参数非常多,但幸运的是,你不需要全部记住。下面是完整的参数列表,我会帮你解读其中最重要的部分。

参数 描述解读
title (必填) 策略的名称。
shorttitle 策略的简称,能让图表界面保持整洁。
overlay true叠加在主图,false在下方独立窗口显示。
pyramiding 金字塔加仓,定义同方向最多能开多少笔仓位。0代表禁止加仓。
calc_on_order_fills true时,订单成交后会立刻重新计算一次策略。适合需要精密即时反应的策略。
calc_on_every_tick true时,实盘中每个价格跳动都会计算一次策略。这会引发大量重绘,慎用!
initial_capital 初始资金,回测开始时的本金。
currency 账户货币,如currency.USD。所有盈亏将以此货币计算。
slippage 滑点,按ticks(最小价格变动单位)计算,模拟市价单和止损单的成交价差。必设项!
commission_type 手续费类型,如按百分比strategy.commission.percent或固定金额strategy.commission.fixed
commission_value 手续费具体数值。例如,设为0.1,如果类型是百分比,那就是0.1%的手续费。必设项!
process_orders_on_close true时,K线收盘时即可成交订单,而不是等下一根K线开盘。
margin_long/short 多头和空头订单的保证金比例。

总结

  • 每个TradingView策略都必须有且仅有一次strategy()函数调用。
  • title是唯一必填的参数。
  • 为了让回测结果不失真,initial_capital, slippage, commission_type, commission_value这几个模拟真实交易环境的参数,是你每次写策略时都应该优先考虑配置的。
  • 虽然可以在图表界面上手动修改策略参数,但把所有核心设置都写在strategy()函数里,是更专业、更便于分享和复现的做法。
赞(0)
未经允许不得转载:图道交易 » Pine Script(57):策略脚本核心函数 - strategy()
分享到

评论 抢沙发

登录

找回密码

注册