Pine脚本带有两个指标,一个重叠在图表上,另一个独立显示?

13

我正在尝试编写一个pine脚本,其中包括两个指标,一个(EMA)叠加在图表上,另一个(Stoch)单独展示。我找不到如何在视觉上分开这些指标但仍在同一个pine脚本中保留它们的任何信息,即能够基于这些指标做交易决策。

3个回答

19

Luc的早期回答是正确的,不幸的是。每个脚本只能创建覆盖默认价格图表或在不同窗格中显示的图形,但不能两者兼备。但有一个解决方法。

假设您的脚本进行了一些非平凡的计算,并且您想将其放在不同的窗格中。例如下面的代码:

//@version=4
study(title="Stochastic", shorttitle="Stoch", format=format.price, precision=2)
periodK = input(14, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(3, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

// This next plot would work best in a separate pane
someNonTrivialCalculatedSeries = close
plot(ema(someNonTrivialCalculatedSeries, 25), title="Exporting Plot")

由于它们具有不同的刻度,其中一个指标很可能会破坏另一个指标的刻度。

所以您要在不同的松木中显示Stoch,而ema()应该与主图叠加。 为此,您应该执行以下步骤:

  1. 在研究中关闭额外的绘图以将比例返回到正常状态: enter image description here

  2. 将下面的脚本应用于图表:

//@version=4
study("NonOverlayIndicator", overlay=true)
src = input(defval=close, type=input.source)
plot(src)
  • 在第二个脚本中选择需要的情节源自第一个脚本: enter image description here

  • 然后,您就可以得到不同PIN的情节: enter image description here

    但是,如果您想要拆分这些情节,因为您被允许申请的研究数量有限制(例如,免费帐户只能申请3个)-那么这并没有帮助您。


    很好的答案,帮助我很多,非常感谢Michel。改进的小细节是覆盖层应该为false。 - bevada
    谢谢!这个回答真的很有帮助。由于其他人已经发布了一个名为“Line Chart Source”的脚本,类似于你提到的第二个,你可以将其应用于你的图表并选择源。但是,是的,它也会占用额外的研究插槽。 - Simon East
    第一个脚本中的变量没有列在第二个脚本的输入源选择中,我可以知道如何使它们在那里显示吗? - Beeing Jk
    我用一个技巧实现了无限窗格,但问题是这些窗格是空的,没有绘制。如果有人能找到绘制的解决方法,那就太好了。 技巧:打开控制台(Ctrl+Shift+I),然后输入 window.user.is_pro=true;window.user.pro_plan="pro_premium"; - lxkarthi

    4
    无法实现。脚本可以在图表上使用overlay=true模式运行,但是它不能将绘图直接指向其他位置;或者在单独的窗格中运行,此时overlay=false(默认)。当脚本在窗格中运行时,它可以使用barcolor()更改图表柱的颜色,但这是它修改图表的唯一方法。有可能重新缩放信号,以使一个脚本生成的多个有界信号(例如0-100、-1到+1)重叠在一起,但通常情况下,在覆盖模式下这是不可能的,因为垂直比例尺随着图表上的柱而变化。覆盖脚本与其自己的比例尺一起工作的唯一方法是使用无比例尺,但这会防止指标的绘图相对于价格和图表的柱进行绘制。

    感谢 PineCoders-LucF 的快速回复。 - Brandon Saccone

    2

    Michael提供了一个不错的解决方法。但是,这个方法似乎只能用于传递一个图表的数据。 我想要将3个不同的图表的数据传递到股票价格图表中。 如果我尝试这样做,对于“input.source”,我只能选择标准来源:“open,high,low,close……”。我无法选择来自其他指标的数据。 如果我删除第2和第3个图表,那么它就像Michael所描述的那样工作。 有人有对这个解决方法的变通方法吗?;-)


    这似乎是一个已记录的限制: “策略一次只能使用一个外部输入。” https://www.tradingview.com/blog/zh-cn/use-an-input-from-another-indicator-with-your-strategy-19584/ - Ray Johnson
    需要创建两个指标,一个适用于图表,另一个适用于面板。 - AnyDozer
    1
    是的,如下所示的例子。问题在于,您只能将一个图表从非叠加指标传递到叠加指标。 - Ray Johnson
    是的,我也看到了这个限制。如果脚本A有多个图表,那么在脚本B中的“input.source”选择器中似乎没有一个会显示出来。令人沮丧。 - Simon East

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接