我正在尝试将3个获利目标设定为松散策略。
在下面的代码中,当条件变长时被触发时,将打开一个数量为100的条目。这很好。 valueTakeProfit1、2和3的值也正确。但是,一旦我将它们放入strategy.exit(),它们便会被触发或不被触发,或者利润处于错误的水平。 变量ATR1 / 2 / 3percent的值不是百分比,而是从通过strategy.entry()打开的100中取的值。
if(longCondition or re_entryCondition)
alertLine := 1
strategy.entry(id="Long Entry", long=true, when=alertLine==1, qty=100)
valueTakeProfit1 := close+ATR1*ma_function(tr(true), lengthATR)
valueTakeProfit2 := close+ATR2*ma_function(tr(true), lengthATR)
valueTakeProfit3 := close+ATR3*ma_function(tr(true), lengthATR)
strategy.exit("Take Profit 1 Long", from_entry="Long Entry", limit=valueTakeProfit1, qty=ATR1percent)
strategy.exit("Take Profit 2 Long", from_entry="Long Entry", limit=valueTakeProfit2, qty=ATR2percent)
strategy.exit("Take Profit 3 Long", from_entry="Long Entry", limit=valueTakeProfit3, qty=ATR3percent)
//End long positions
if(longCloseCondition)
strategy.close(id="Long Entry")
有人可以帮我定义多个获利水平吗?
答案 0 :(得分:0)
好,所以我发现了错误。 在脚本的开头,我确实声明了变量:
valueTakeProfit1 = 0.0
valueTakeProfit2 = 0.0
valueTakeProfit3 = 0.0
在if语句之前,我确实将变量重置为零:
valueTakeProfit1Short := 0.0
valueTakeProfit2Short := 0.0
valueTakeProfit3Short := 0.0
通过在if语句之前声明变量的正确值,确实解决了问题:
valueTakeProfit1 = close + (ATR1*ma_function(tr(true), lengthATR))
valueTakeProfit2 = close + (ATR2*ma_function(tr(true), lengthATR))
valueTakeProfit3 = close + (ATR3*ma_function(tr(true), lengthATR))