Pine脚本-如何为多个获利目标编程

时间:2019-06-24 12:08:03

标签: pine-script

我正在尝试将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")

有人可以帮我定义多个获利水平吗?

1 个答案:

答案 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))