了解TradingView Pine Script中的固定数量默认订单大小
TradingView策略提供了几种默认的订单数量计算方法。其中一种选择是,始终使用一个固定的数量作为默认的订单大小。
有三种方式可以启用这种订单大小类型:我们可以在 strategy() 函数中将 default_qty_type 参数设置为 strategy.fixed;或者在策略的属性窗口的订单大小设置中选择合约选项;或者什么都不做,因为固定数量本就是Pine Script策略的默认下单方式。
但是,这种固定数量的订单大小会受到哪些因素的影响呢?让我们来探究一下它的计算公式。
订单大小的计算公式
当一个策略的默认订单大小被设置为固定数量时,TradingView是这样计算其规模的:
就这么简单,只涉及一个变量。order size(订单大小)是每个入场订单将要使用的默认大小;default quantity(默认数量)是每个订单要交易的合约、股数或单位的数量,TradingView会从 default_qty_value 参数,或是策略属性窗口中手动设置的订单大小来获取这个数值。如果两者都未设置,则默认使用1。
上面的公式相当直白。更有趣的是这个公式中缺失了什么。让我们看看在使用固定数量作为默认订单大小时,TradingView忽略了哪些因素。
哪些因素不影响固定数量的大小
当我们为每个订单使用固定数量时,交易品种的价格、策略的账户权益、保证金要求和交易货币这四个因素都不会影响订单的大小。然而,这些因素中的每一个,都实实在在地影响着策略的表现。让我们逐一来看。
先说交易品种的价格。对于固定数量的订单大小而言,品种的价格是无关紧要的。无论一个品种的价格是2.84还是4,630.50,一个设为100的默认订单大小,都会在每次下单时买入或卖出100股。
但是,显而易见,一笔价值284货币单位的交易和一笔价值463,050货币单位的交易,对账户权益的要求、潜在的盈亏以及风险敞口是截然不同的。
此外,当一个品种的价格在回测期间不断上涨时,策略依然会持续买入相同的固定数量。其结果是,随着时间的推移,头寸的绝对价值越来越大,权益波动也会愈发剧烈。
说到权益,策略的账户权益大小同样与固定数量的订单大小无关。使用这种默认下单方式时,策略在交易前并不要求账户具备一定的资金量。它只会简单地执行买入和卖出,即使这样做可能会导致账户无力承担。
其结果是,回测中的持仓规模可能远大于真实交易中可能达到的水平。假设默认订单大小是100股,策略的权益是48,329。根据股票价格的不同,这笔投资的影响可能会有天壤之别:
| 交易品种价格 | 100股的市值 | 市值占权益的百分比 |
|---|---|---|
| 3.89 | 389 | 0.805% |
| 51.39 | 5,139 | 10.633% |
| 346.04 | 34,604 | 71.601% |
| 3,421.08 | 342,108 | 707.873% |
当策略使用保证金时,它将无法交易超过其权益数倍的头寸。让我们更仔细地探讨一下这一点。
当一个策略设置了多头和空头保证金要求时,一个固定数量的订单只有在其所需的保证金少于策略的账户权益时才会被执行。换句话说,以下规则必须成立:
如果这个规则不成立,即固定数量订单所需的保证金超过了策略的账户权益,TradingView将不会执行这笔模拟订单。
所以,TradingView并不会自动调整订单大小以满足保证金要求。举个例子,假设我们的固定订单大小设为100股,但我们的资金只够支付95股的保证金。在这种情况下,TradingView会跳过这笔交易,而不是将订单大小降低到95股。
最后一个不影响固定数量订单大小的因素是货币。如果我们告诉策略每个订单都使用相同的大小,TradingView不会进行货币换算,来根据汇率差异调整默认订单大小。
但是,货币在实际交易中当然扮演着重要角色。当我们用相同的固定数量去交易不同计价货币的品种时,对我们策略本币的影响可能会截然不同。
假设一个使用美元的外汇策略,其权益为$125,000。当它为每个订单交易50,000个单位时,其实际的美元市值和占用的权益百分比会有显著差异:
| 交易品种和价格 | 市值 | 美元市值 | 占权益百分比 |
|---|---|---|---|
| EUR/GBP @ 0.85104 | GBP 42,552.00 | USD 56,348.06 | 45.08% |
| CNH/INR @ 11.8926 | INR 594,630.00 | USD 7,870.16 | 6.30% |
| NOK/JPY @ 12.5513 | JPY 627,565.00 | USD 5,518.95 | 4.42% |
| JPY/AUD @ 0.012246 | AUD 612.80 | USD 440.27 | 0.35% |
如表所示,同样是交易50,000个单位,其风险敞口可以是从几乎可以忽略不计,到占用将近一半的策略权益。
示例
让我们通过具体情境来看看固定数量订单大小是如何运作的。
先看一个股票示例。假设我们的策略交易以下情境:AMD(NASDAQ:AMD)的交易价格为$148.26;默认订单类型为每次交易固定数量(strategy.fixed);默认订单数量(default_qty_value)为100。由于默认订单大小是100,策略将会交易100股AMD股票:
再看一个期货示例。交易品种的类型及其杠杆,对于固定数量的订单大小来说是无关紧要的。假设策略交易以下情境:E-mini S&P 500期货(CME:ES1!)的交易价格为4,787.00;ES期货的点值为50,即一张期货合约代表50倍的S&P 500指数价值;默认订单类型为每次交易固定数量(strategy.fixed);默认订单数量(default_qty_value)为25;策略的权益为$12,425。
默认订单大小为25张合约,这便是策略将会交易的数量:
这同样看起来很直接。但让我们来思考一下这笔交易背后的资金管理问题。交易25张ES合约(不考虑策略权益)将导致高达481:1的杠杆:
换句话说,每1美元的权益,策略就在市场上控制了481美元的资产。由于如此高的杠杆,如果ES指数下跌10个点——从4,787降至4,777——策略的全部权益就将灰飞烟灭。
另一个资金管理的方面是,经纪商对这笔ES交易要求的保证金是多少。在当前,一张E-mini S&P 500期货的初始日内保证金约为$3,162。这意味着,策略需要将近$80,000的资金才能建立这笔交易:
由于策略的权益仅有$12,425,实际资金只够开立3张ES期货合约。
正如杠杆和经纪商保证金的例子所展示的,固定数量的订单大小方法,在应用于带杠杆的交易品种时,可能会带来过高的风险敞口。对于这类品种,更合适的默认订单大小方法是采用固定现金金额或权益百分比,或者使用我们自己编写的头寸规模模型。
总结
固定数量订单大小(strategy.fixed)对每个订单都使用相同的默认数量。影响这个数量的因素不包括:交易品种的价格、策略的账户权益、保证金要求和交易货币。由于忽略了这些关键变量,固定数量的订单大小方法可能会生成风险极高的订单。






