Pine script 松树脚本订单。进入/关闭一天

Pine script 松树脚本订单。进入/关闭一天,pine-script,Pine Script,我创建了一个小策略,当价格超过抵消的VWAP时进行订单输入(当价格低于时关闭) 我看到的问题是,订单和退出是off-buy-1增量,我不知道确切的原因。我使用“plotshape”来显示后交叉点,它们总是在实际订单输入/关闭之前。你知道我错过了什么吗 strategy("VWAP Crossover", overlay=true) price = input(type=input.source, defval=ohlc4, title="source")

我创建了一个小策略,当价格超过抵消的VWAP时进行订单输入(当价格低于时关闭)

我看到的问题是,订单和退出是off-buy-1增量,我不知道确切的原因。我使用“plotshape”来显示后交叉点,它们总是在实际订单输入/关闭之前。你知道我错过了什么吗

strategy("VWAP Crossover", overlay=true)

price = input(type=input.source, defval=ohlc4, title="source")
vwapFunction = vwap(price)[3]

crossing_over = crossover(close,vwapFunction)
crossing_under = crossunder(close,vwapFunction)

plot(vwapFunction, title="VWAP", color=color.white, linewidth=2, transp=0, editable=true)
plotshape(series=crossing_over, title="Long", style=shape.triangleup, color=#7FFF33)
plotshape(series=crossing_under, title="Long", style=shape.triangledown, color=#FF746E)

if (crossing_over)
    strategy.entry("Buy", strategy.long,1)
if (crossing_under)
    strategy.close("Buy")

默认情况下,策略只计算每个栏的关闭,并输入逻辑上是下一个勾号的位置,即下一个栏的打开位置

对于历史条形图,您别无选择,只能在条形图收盘时计算,因为tradingview没有历史刻度数据。对于实时条,有一个选项可以设置策略来计算每个刻度,但我不建议使用它,除非您理解它的逻辑。为了得到与回溯测试一致的结果,必须对确认的数据执行。例如,如果采用plotshape并将其放置在指示器上,或将策略设置为“在每个刻度上计算”,则在观看该形状在实时交叉时,将看到该形状来回闪烁。如果你的策略是购买plotshape出现的每一个勾号,因为它可能会在每个条上消失并重新出现很多次,那么你的策略会如何表现

基本上,如果你使用一个指标来控制实时交易,你在做决定时只想使用最后一条的确认数据。战略测试人员会帮你解决这个问题

因此,基本上,间隔是一个刻度,而不是在酒吧的关闭,你是在下一个酒吧的开放执行。要使绘图形状匹配,只需在系列中添加一个
[1]

在strategy函数中,有一个选项可以设置
process\u orders\u on\u close=true
,但我不建议您使用它,除非您有充分的理由使用它。我对滴答频率及其实现的了解不多,因此无法确定,但它也可以: A.以高精度持续跟踪时间,以确定下一个勾号是否不可能出现在同一条线中,从而节省截止点和下一个勾号之间的时间。或 B.使用最后一个勾号根据历史数据进行计算,但它不会实时知道勾号是否是最后一个。或 C.其组合

首先,假设一个勾号不会否定你的策略的有效性,我会将它保留在默认设置

请注意,这也是为什么在谈论指标时,您会看到许多人提到重新绘制的原因,您的决策必须基于已确认的数据,以便与实时数据保持一致。从某种意义上讲,重新绘制是指当您在移动平均线交叉线上有一个plotshape时会看到的闪烁


编辑:因为我重读并看到你提到它一天关掉,你可能会考虑重新设计你的策略在一个较小的时间内运行。因为两天之间的滴答声对常规股票市场可能影响更大。

process\u orders\u on\u close=true正是我想要的。非常感谢。