如何在PineScript中获取策略pyramiding参数用于代码逻辑?
解决Pine Script中获取策略加仓次数(pyramiding)的问题
在Pine Script里,strategy对象并没有直接的pyramiding属性可以读取,所以直接写strategy.pyramiding会触发报错。下面是两种可靠的解决方法:
方法1:手动同步输入参数(推荐)
自己定义一个输入变量,和策略设置里的加仓次数保持同步,代码内就能直接调用这个变量:
- 先定义加仓次数的输入参数:
// 定义与策略设置匹配的加仓次数输入 pyramiding_input = input.int(1, title="加仓次数", minval=0)
- 初始化策略时,将这个输入参数传给
strategy的pyramiding参数:
strategy("你的策略名称", pyramiding=pyramiding_input, overlay=true) // 可添加其他策略参数,比如initial_capital等
- 在逻辑中直接使用
pyramiding_input:
if strategy.opentrades == 2 or entry_long or pyramiding_input == 1 long_stop_level := entry_price - nLoss
这种方法能保证代码内使用的加仓次数和策略实际生效的参数完全一致,不会出现偏差。
方法2:通过最大持仓数间接计算
策略的strategy.max_entries属性代表允许的最大同时持仓数,加仓次数(pyramiding)等于max_entries - 1(pyramiding是初始仓位之外允许的加仓次数)。可以这样计算:
pyramiding_value = strategy.max_entries - 1 if strategy.opentrades == 2 or entry_long or pyramiding_value == 1 long_stop_level := entry_price - nLoss
注意:这种方式依赖strategy.max_entries和pyramiding的关联关系,如果手动修改了max_entries而非pyramiding参数,计算结果会不准确,因此更推荐第一种方法。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

