这将解决我遇到的一个更复杂的问题。
我的代码中有两行:
strategy.entry(id = "Long", long = true, when = upAllConditions, stop = upStopLoss)
strategy.entry(id = "Short", long = true, when = upAllConditions, stop = upStopLoss)
我似乎无法弄清楚如何检查自己是否处于这些职位之一。
如果我处于“多头”位置,我不想做空;如果我处于“空头”位置,我不想做多。
(更复杂的问题是,我实际上想根据我所处的位置使用不同的止损值,因此需要进行检查。这似乎是一种更容易提出的方法)
答案 0 :(得分:0)
使用内置变量strategy.position_size:
当前市场位置的方向和大小。如果该值> 0,则市场头寸很长。如果该值<0,则市场空头。绝对值是交易中合约/股份/手/单位的数量(头寸大小)。
答案 1 :(得分:0)
我认为,您应该通过以下方式通过历史记录该职位的状态:
IN_SHORT = 1
IN_LONG = 2
NONE = 3
status = NONE
status := nz(status[1], NONE)
if status != IN_SHORT and upAllConditions
strategy.entry(id = "Long", long = true, when = upAllConditions, stop = upStopLoss)
status = IN_LONG