FOREX,1H Chart,// version = 3 pinescript
我还不熟悉Pinescript,但我注意到使用close
或open
会返回不是当前收盘价或开盘价的数据。即使使用close[1]
,也会返回与前一个蜡烛的结束完全不同的数量。
这是为什么?我是否错误地解释了这些数据?
在我完成的研究中,我看到了这篇文章:https://www.tradingcode.net/tradingview/operators/history-referencing-operator/:
从技术上讲,历史引用运算符不会返回单个运算符 value但返回一系列具有特定偏移量的值,甚至 虽然我们一般认为历史引用运算符 访问第n个元素。
这意味着,例如,
close[5]
不会返回单个 收盘价但是一系列收盘价等于 收盘价5个月前。
上面那个大胆的陈述 - "一系列收盘价" ;这是否意味着close[5]
本身不是第五支蜡烛的收盘价?
如果是这种情况,那么我该如何用以下方式显示该蜡烛的当前收盘价:
strategy.entry("SHORT", strategy.short, comment=tostring(close[1]) )
答案 0 :(得分:4)
我还是Pinescript的新手,但我注意到使用close或open返回的数据不是当前的收盘价或开盘价。即使使用
close[1]
,也会返回与前一个蜡烛的结束完全不同的数量。(...)
strategy.entry("SHORT", strategy.short, comment=tostring(close[1]) )
不幸的是,这是一个TradingView限制。当您对tostring()
参数使用comment
函数时(如在代码片段中),TradingView仅为返回测试发生的第一个条生成该字符串。
但是,对于整个回溯测试,该文本仍然是相同的,这解释了为什么您看到价格出现在策略测试程序'根据您对close[1]
等的理解,这与您的期望大相径庭。
我们可以使用以下代码轻松测试:
//@version=3
strategy(overlay=true, title="Example strategy")
longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", long=strategy.long,
comment=tostring(dayofmonth) + "-" +
tostring(month) + "-" + tostring(year))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
在这里,我们生成一个订单评论,其中包含当前柱的日,月和年。或者至少,应该如何工作。
对于策略测试员的第一次交易'它显示正确:
然后,对于后期测试中的交易,TradingView仍然使用旧的缓存订单评论:
总结:您遇到的奇怪行为是由于具有tostring()
功能和订单评论的TradingView限制。
答案 1 :(得分:2)