PineScript / 交易视图:如何检查策略中的未平仓订单

1 pine-script pine-script-v4

pma = sma(maSource, periods)
entryLong = close * 1.10
longCondition = close >= pma

if longCondition
   strategy.entry(id = "Long Entry", long = true, stop = entryLong)
Run Code Online (Sandbox Code Playgroud)

多个柱可以连续满足这个 long 条件,但我不希望后续柱覆盖前面的柱。理想情况下,我想添加一个检查来查看是否strategy.openentries == 0,但当然这样的变量在Tradingview中不存在。

想做这样的事情:

pma = sma(maSource, periods)
entryLong = close * 1.10
longCondition = close >= pma

if longCondition and strategy.openorders == 0
   strategy.entry(id = "Long Entry", long = true, stop = entryLong)

if barssince(longCondition) = 3
   strategy.cancel(id = "Long Entry")
Run Code Online (Sandbox Code Playgroud)

e2e*_*2e4 5

您可以检查上一柱的条件是否为真,并忽略当前柱。因此连续出现的事件将被忽略。

pma = sma(close, 10)
entryLong = close * 1.10
longCondition = close >= pma
long = longCondition and not nz(longCondition[1])

// debug
bgcolor(longCondition ? color.green : na)
bgcolor(long ? color.blue : na)
Run Code Online (Sandbox Code Playgroud)

您还可以使用内置的strategy.position_size函数。

strategy.position_size > 0  // long is opened.
strategy.position_size < 0  // short is opened.
strategy.position_size == 0  // no opened positions
Run Code Online (Sandbox Code Playgroud)