策略属性

每个 Pine 策略都有许多决定其行为的属性:

  1. 初始资金
  2. 基础货币
  3. 订单数量
  4. 金字塔式
  5. 手续费
  6. 对限价单核对价格
  7. 滑点
  8. 保证金
  9. 重新计算
  10. 填写订单 

它们在策略设置的“属性”标签中可用:

通过在相应的Pine脚本中编辑strategy()函数调用的参数,可以更改策略属性中指定的每个参数:

 

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

让我们来看看“属性”菜单中的每个输入参数及其在 Pine 语言中的对应参数:  

1 - 初始资金(参数:initial_capital)表示最初可用于交易策略的资金量,以基础货币中定义的货币计。默认情况下,此值等于 100,000。您可能需要增加此值才能在某些商品上进行交易。

2 - 基础货币(参数:currency)指定用于计算的货币。出现在策略测试器标签中的结果(盈利、亏损、回撤等)以该货币表示。 可用的选择是:

默认、美元、欧元、澳元、英镑、新西兰元、加元、瑞士法郎、港元、日元、挪威克朗、瑞典克朗、新加坡元、土耳其里拉、南非兰特。如果选择默认选项,该策略将使用该商品的默认货币,并且没有货币转换。

3 - 订单数量(参数:default_qty_value、default_qty_type)。这需要一个值和一个计算模式。请注意,由于商品的最小可交易数量,计算值可能会受到限制:

  • 合约(参数:strategy.fixed) - 策略将以指定数量的合约/股票/手数进入。
  • 货币金额(参数:strategy.cash)- 策略将输入以基础货币指定的金额。
  • 权益百分比(参数:strategy.percent_of_equity)- 仓位规模将计算为交易开始时可用权益的百分比。您可以指定一个大于 100% 的值。

4 - 金字塔式(参数: pyramiding)指定在同一方向上允许的最大连续挂单数。当金字塔式被禁用时,即使满足入场条件,该策略也只能开设一个多头或空头仓位。金字塔只影响使用 strategy.entry() 函数创建的挂单。它对使用 strategy.order() 创建的订单没有影响。

5 - 手续费(参数:commission_type、commission_value)。它是为每笔交易支付的交易费用金额。必须提供值和计算模式。请注意,佣金适用于进场和出场,当使用百分比时,计算的佣金将随交易价值而变化:

  • 交易价值的百分比(参数:strategy.commission.percent) - 对每个订单征收等于指定百分比的手续费。
  • 货币 每份合约(参数:strategy.commission.cash_per_contract) - 对每份合约收取手续费。
  • 货币 每个订单(参数:strategy.commission.cash_per_order) - 对每个订单收取手续费。

6 - 对限价单核对价格(参数:backtest_fill_limits_assumption)让使用限价订单开仓的条件更加严格。默认情况下,此值为 0,即一旦达到订单中指示的价格,就会根据历史数据执行限价订单。如果该参数不为零,则限价订单只有在市场价格超过限价订单水平指定的tick数时才能在K线内建仓。

7 - 滑点(参数:slippage)指定要添加到市价单或止损单的成交价的tick值。它可以用来解释点差。

8 - 多头/空头头寸保证金(参数:margin_long、margin_short)指定每笔交易的保证金,即交易者必须提供资金的仓位百分比。 例如,如果多头仓位的保证金设置为 25%,则交易者必须有足够的资金来覆盖 25% 的未平仓交易,并且有可能在每笔交易中花费高达 400% 的净值。如果一笔交易已经开始,并且开始亏损,而交易者的资金不足以支付其部分交易,则会发生追加保证金通知,并强制清算部分原始仓位。您可以在这篇帮助中心文章中了解有关此功能及其计算方式的更多信息。

 

9 - 重新计算 选项指定应重新计算策略的频率。默认情况下,策略在每根K线收盘时重新计算,但使用以下选项也可以重新计算:

  • 订单成交之后(参数:calc_on_order_fills) - 允许策略在订单完成后立即执行额外的K线内订单计算。额外的计算发生在历史和实时K线上。
  • 在每个Tick上(参数:calc_on_every_tick)。默认情况下,策略仅在实时K线收盘时计算。此参数允许策略计算实时K线的每次更新,就像做研究一样。请注意,图表刷新时tick数据会丢失,因此使用此选项的策略将重新绘制。此参数不会影响策略在历史K线上的行为。另请注意,使用此功能的策略不会在历史K线上显示真实结果,因为它们不包含tick数据。

Translation results

10 - 填写订单

使用K线放大镜(参数:use_bar_magnifier)- 指示经纪商模拟器在历史回测期间使用更精确、更低的时间周期价格,以获得更真实的结果。请在帮助中心了解有关此功能的更多信息。

在K线收盘时(参数:process_orders_on_close)。如果为 true,则该策略会在K线收盘且策略计算完成后生成额外的执行订单尝试。如果订单是市价订单,经纪商模拟器会在下一个K线开盘之前执行它们。如果订单与价格相关,则只有在满足价格条件时才会执行。如果您希望在创建订单的同时执行订单,则此选项非常有用:默认情况下,订单在当前K线的收盘价时创建,并在下一个K线的开盘价时执行;启用此设置后,它们将在创建订单的同一收盘价处执行。请注意,在创建订单的同一时间点入仓可能会产生误导,因为这在实际交易中是不可能实现的。

使用标准 OHLC(参数:fill_orders_on_standard_ohlc)强制在 Heikin Ashi 图表上运行的策略使用实际 OHLC 价格填写订单,以获得更现实的结果。默认情况下,策略脚本使用图表的价格填写订单,无论图表类型如何。对于 Heikin Ashi 图表,此设置可防止使用可能与现实不符的合成价格。例如,我们已将这一策略应用于每日 NASDAQ:AAPL Heikin Ashi 图表,并于 2023 年 9 月 25 日以 175.61 美元的合成价格填写了订单。 然而,在启用“使用标准 OHLC”选项后,同一订单以 174.20 美元的标准图表价格成交。