gpt4 book ai didi

pine-script - 如何计算自 `strategy.entry` 以来的柱数

转载 作者:行者123 更新时间:2023-12-02 18:50:33 25 4
gpt4 key购买 nike

我刚刚开始使用 PineScript 进行编码,经过多次尝试,我想寻求帮助。

我试图计算与最后一次多头头寸入场相比发生了多少根柱线。这个问题(或类似的问题)已被问过几次,但我发现barssince()并不能解决问题。简单来说,它根本不起作用。

我想测试的策略如下:如果价格比之前的高点下跌 2.5%,我想平掉多头头寸。前一个高点不需要在固定长度的窗口中评估(例如,在最后 10 个柱左右),但需要从完成多头入场的柱开始评估。

我尝试平掉多头头寸(以其 ID“买入”开仓),如下所示:

npastdays=barssince(strategy.position_size > 0)

prevHigh=highest(close, npastdays)
if (close < 0.975*prevHigh)
strategy.close("buy")

我什至尝试了其他方法,例如,在开仓时将“op”变量设置为非零值,而不是使用“change(op > 0)”或类似的“crossover(op, value) )”。无论哪种方式,“npastdays”变量都不会计算,它保持未定义状态(n.d.)。

编辑#1:当开多头仓位时,我再次尝试设置 op:=6.5(任何数字都可以,或者 bool 值),然后:

npastdays=barssince(op==6.5)
if (npastdays!=0) // else, I just opened a long position
prevHigh=highest(close, npastdays)
if (close < 0.975*prevHigh)
strategy.close("buy")

我得到了一个不同的错误,“Pine无法确定系列的引用长度。尝试在研究或策略函数中使用max_bars_back。”。仍然没有解决。

编辑#2:当长条目完成时,我尝试使用内置的“bar_index”和指令“posLong := bar_index”,但没有成功。但是,该代码仅适用于固定数量的柱:即使我 try catch 负 nPastDays 值(其第一个值似乎是 -1096 但 posLong 应该 > posLong[1]...)

// Determine trail stop loss prices
float longStopPrice = 0.0
int nPastDays = 4
float prevHigh = 0.0
longStopPrice := if (strategy.position_size > 0)
nPastDays := posLong - posLong[1]
if nPastDays > 0
prevHigh := highest(close, nPastDays)
else
prevHigh := highest(close, 4)

prevHigh * 0.975

// stopValue = close * (1 - longTrailPerc)
// max(stopValue, longStopPrice[1])
else
0

// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
strategy.exit(id="buy", stop=longStopPrice)

解释器给出有关负 nPastDays 值的错误,或者在建议使用 max_bars_back 时给出错误。但我已经在策略声明中设置了“max_bars_back=50”。仍然没有解决。

最佳答案

通过 barssince 可以找到您想要的快捷方式.

ta.barssince(strategy.position_size == 0)

关于pine-script - 如何计算自 `strategy.entry` 以来的柱数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66846409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com