pine-script - 如何计算自“strategy.entry”以来的柱数
问题描述
我刚开始用 PineScript 编写代码,经过几次尝试,我想寻求帮助。
我试图计算从最后一个多头头寸入场时发生了多少条柱线。这个问题(或类似的问题)已经被问过好几次了,但我发现 barsince() 并没有解决问题。简单地说,它根本不起作用。
我想测试的策略如下:如果价格从之前的高点下跌 2.5%,我想关闭多头头寸。前一个高点不在一个固定长度的窗口中进行评估(例如,在最后 10 根柱线左右),但需要从完成多头进场的柱线开始评估。
我试图关闭一个多头头寸(以它的 id "buy" 开仓),如下所示:
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”变量不计算,无论哪种方式,它都保持未定义(nd)。
编辑#1:当多头头寸打开时,我再次尝试设置 op:=6.5(任何数字都可以,或布尔值),然后:
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”,但没有成功。但是,该代码仅适用于固定数量的柱:即使我尝试捕获负的 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”。仍然没有解决。
解决方案
barsince有一个你想要的快捷方式。
ta.barssince(strategy.position_size == 0)
推荐阅读
- c++ - 如何检查 C++ STL 列表是否为回文?
- php - 如何使用数据库 php 中的整数
- regex - Python,仅针对指定单词从字符串中删除所有非字母字符
- javascript - 从数组中扩展现有对象的数据
- java - 子节点的标签可以与根节点相同吗?
- javascript - How to store independent variables into an array as an object
- c# - Read SqlDataReader after Exception -- LIKE SSMS Result Pane
- mysql - count by name the number of all values, within a given DB SQL column
- mysql - 主机数据库服务器更改后,Wordpress 主题页面消失了
- javascript - 导出 vuejs 组件以重用