TradingView的Pine Script策略所需保证金如何运作?
通过使用保证金,一个TradingView策略可以开立远超其账户资金规模的头寸。然而,仓位的大小是有限制的。正如在真实交易中一样,策略需要有足够的权益作为持仓的抵押品。那么,TradingView内部究竟是如何确定所需保证金金额的呢?让我们来一探究竟。
所需保证金的计算公式
当一个策略启用了多头保证金(long margin)和空头保证金(short margin)设置后,每当它生成一个订单,TradingView都会先计算该笔订单所需的保证金。TradingView使用的计算公式如下:
即:所需保证金 = 订单名义价值 × 保证金要求比例。公式中各变量的含义如下。
所需保证金(required margin):开立该笔订单所需的资金。这笔现金是经纪商要求我们必须拥有的、作为交易抵押品的金额。
订单名义价值(notional value):意向订单的总市值。其计算方式为:订单数量 × 品种价格 × 点值。通过乘以点值,这个价值也考虑了品种的合约乘数或标的资产。
保证金要求比例(margin requirement):开仓所需的保证金百分比。这个比例因交易品种和经纪商而异。我们可以在 strategy() 函数中通过 margin_long 和 margin_short 参数来配置这个比例。或者,也可以在策略设置窗口中,通过多头头寸保证金和空头头寸保证金的输入框来手动设置。
所需保证金的评估流程
当一个策略执行订单函数时,TradingView会首先用上述公式计算出该订单所需的保证金。然后,它会拿这个结果与策略的当前权益进行比较。
这个评估只有两种可能的结果:当策略权益大于所需保证金时,订单被视为有效,TradingView将继续模拟其成交过程;当策略权益等于或小于所需保证金时,策略无法支持该订单,TradingView会取消该订单,策略将无法按计划入场。
所以,没有足够的策略权益,交易便无法进行。让我们通过几个例子来加深理解。
所需保证金的计算示例
现在我们知道了TradingView是如何计算所需保证金的,让我们运用这些知识来看看在三种不同场景下,交易所需的具体保证金。
先看股票示例。假设一个策略遇到以下情况:交易品种为AMD(NASDAQ:AMD),价格为$132.56;交易指令为计划买入(开多仓)280股;保证金设置为多头保证金50%;策略当前权益为$20,504。这笔AMD交易所需的保证金计算如下:
由于在订单生成时,所需保证金($18,558.40)低于策略的当前权益($20,504),因此策略有足够的资金作为抵押来开立这笔交易。
再看外汇示例。如果我们交易外汇,可能会遇到这种情况:交易品种为英镑/美元(FX:GBPUSD),价格为1.36124;交易指令为计划卖出(开空仓)30,000单位;保证金设置为空头保证金7.5%;策略当前权益为$1,325。这笔订单所需的保证金计算如下:
所需保证金$3,062.79远高于策略的当前权益($1,325)。由于策略无法满足保证金要求,TradingView将取消这笔交易。因此,这个做空GBPUSD的信号将不会被执行(即使是减小订单规模也不行)。
最后是期货示例。一个交易期货的策略遇到了这个场景:交易品种为微型E-mini S&P 500期货(CME:MES1!),价格为4,653.50;点值为$5;交易指令为计划买入(开多仓)2份合约;保证金设置为多头保证金9%;策略当前权益为$5,301。要开立这两份期货合约,所需保证金计算如下:
因为策略权益($5,301)高于订单所需的保证金($4,188.15),TradingView将允许策略买入2份MES合约。
如何设定一个切合实际的保证金要求?
为了让回测能够真实地模拟保证金的影响,我们必须使用一个现实的保证金要求比例。但这个比例应该是多少呢?
你可以在你的经纪商官网上找到具体交易品种的精确保证金要求。不同的经纪商会提供不同的比例,即使是对于在同一交易所交易的品种(如期货),各家经纪商提供的保证金要求也可能不同。
为了给你一个大致的概念,以下是各类交易品种通常的保证金要求范围(占名义价值的百分比):现货外汇中流动性强的货币对(主要和次要货币对)约为2%至5%,奇异货币对可能在10%或以上;差价合约(CFDs)约为1%至5%;现货加密货币为10%至20%;加密货币期货约为2%至5%;股票为25%至50%;交易所交易的期货为2%至6%。
总结
当一个策略启用了多头保证金和空头保证金时,它只有在拥有足够权益来满足订单所需保证金的情况下,才能成功开仓。所需保证金的计算方式是:保证金要求比例 × 订单数量 × 点值 × 品种价格。当策略的权益高于所需保证金时,TradingView会执行该订单。如果权益低于所需保证金,TradingView则会跳过(取消)这笔交易。
保证金如何影响TradingView中的Pine Script策略?
TradingView策略可以使用 long margin(多头保证金)和 short margin(空头保证金)。当一个策略启用了保证金功能后,其行为会在几个方面发生变化。这些变化都围绕着一个核心关系:策略的账户权益(strategy equity)与订单的所需保证金(required margin)之间的比较。
这个比较的结果,决定了策略订单的最终命运。当一个策略使用保证金时,可能会发生以下四种情况:入场订单被跳过(即不执行);持有的仓位被追加保证金(强平)通知所平掉;不再接受任何新的入场订单(即策略停止交易);什么也不发生。让我们来逐一深入探讨每一种由保证金引发的可能后果。
1) 订单被跳过
当策略生成一个订单,并且该订单方向的保证金功能被启用时,TradingView会计算出这笔订单的所需保证金。
如果策略的账户权益大于订单的所需保证金,TradingView会批准该订单,并在图表上模拟其成交。但是,如果策略的账户权益不大于(即小于或等于)所需保证金,TradingView便会跳过这笔订单。该订单将不会被执行,策略也因此错失了一次交易机会。
因此,保证金影响订单成交行为的方式可以总结为两步。第一步,策略根据其代码逻辑生成一个入场订单。这个订单可以由 strategy.entry() 或 strategy.order() 函数生成,这是仅有的两个可以建立策略仓位的函数,且两者都会受到保证金设置的影响。第二步,TradingView计算该订单的所需保证金,然后产生两种结果:如果账户权益 > 所需保证金,TradingView执行该订单;如果账户权益 ≤ 所需保证金,策略无法满足保证金要求,TradingView会取消该订单。
请注意,TradingView不会做的是,自动调整订单大小以使其所需保证金低于账户权益。这是一项需要策略代码自己去完成的工作;TradingView倾向于直接取消整笔交易。
如果一个策略可用的权益远大于订单的所需保证金(例如,当策略交易的规模相对适中时),那么 long margin 和 short margin 的设置便不会对订单的成交行为产生影响。
2) 订单因追加保证金(强平)通知而被平仓
当策略确实建立了一个仓位后,保证金仍然可能影响这个已有的仓位。当这个持仓开始亏损时,策略的权益会随之下降。如果权益下跌到低于该持仓所需的保证金时,追加保证金(强平)通知(margin call)便会发生。
TradingView会以一个平仓订单的形式来执行这个追加保证金通知。这个订单通常会平掉仓位的一部分(但也可能平掉整个仓位)。其目标是减小仓位,使其所需的保证金能再次低于策略的账户权益。
请注意,追加保证金通知只有在策略的交易规模相对于其权益非常大时才会发生。如果策略交易的仓位不大,那么亏损的交易通常不会触发追加保证金通知。在这种情况下,保证金的这个特性就不会影响到策略。
3)(永久地)不再执行任何订单
保证金影响策略的第三种方式是,它可能导致策略完全停止交易。这可能以两种方式发生:要么策略从一开始就无法进行任何交易;要么在一系列亏损之后,策略无法再恢复交易。
在这两种情况下,根本原因都是相同的:策略的账户权益不足以满足任何一笔订单的所需保证金。这种资金的缺乏导致TradingView一个接一个地取消订单,这实际上就停止了策略的所有交易活动。
导致这种情况的原因有多种:策略可能已经亏损了大量权益,根本无法负担新的交易;或者它的订单规模设置得过大(导致所需保证金过高);它的初始资金可能设置得太低;或者我们错误地配置了 long margin 和 short margin 的设置。
4) 什么也不发生
第四种可能性是,保证金的设置对策略的行为毫无影响。这是我们最希望看到的理想情景。为什么?因为它表明,我们的策略没有承担过度的风险。
我们上面讨论的那些由保证金引发的负面后果,其实都暗示了策略在风险管理上可以做得更好。例如,当TradingView取消订单时,是因为订单的规模相对于账户权益来说太大了。当一个策略在启用保证金后完全无法交易时,是因为它根本无法负担其设定的订单规模。
相比之下,当我们在一个交易规模适中的策略上启用多头和空头保证金时,我们看不到策略的行为和表现有任何差异。这实际上是一个好迹象。
总结
long margin 和 short margin 的设置可以通过几种方式改变策略的行为。如果没有足够的权益来满足所需保证金,策略会跳过订单(有时甚至完全无法交易)。当一笔交易亏损,导致权益下降到低于所需保证金时,TradingView会通过追加保证金(强平)通知来强制平掉(部分)仓位。并非每个策略都会遭受保证金带来的负面影响。如果持仓规模不大,保证金的设置并不会改变策略的行为,这通常是良好风险管理的体现。






