Pine script PineScript-递减MACD直方图

Pine script PineScript-递减MACD直方图,pine-script,Pine Script,我在空闲时间学习了一些PineScript,我发现和它一起工作真的很困难。我基本上是在尝试重新创建一个我在C#中编写的复杂指示器,我正在为简单的事情而挣扎 关于复杂的东西,假设我想在MACD的行为如下图所示时绘制箭头: 这是我当前的尝试,基本上应该检查我们是否处于峰值,找到直方图高,找到低于零的列,然后找到高于零的列,并检查它们是否包含高于当前列的直方图值: [macdLine, signalLine, hist] = macd(close, 12, 26, 9) float ind = na

我在空闲时间学习了一些
PineScript
,我发现和它一起工作真的很困难。我基本上是在尝试重新创建一个我在
C#
中编写的复杂指示器,我正在为简单的事情而挣扎

关于复杂的东西,假设我想在MACD的行为如下图所示时绘制箭头:

这是我当前的尝试,基本上应该检查我们是否处于峰值,找到直方图高,找到低于零的列,然后找到高于零的列,并检查它们是否包含高于当前列的直方图值:

[macdLine, signalLine, hist] = macd(close, 12, 26, 9)
float ind = na

if hist[2] > 0 and hist[1] < hist[2] and hist < hist[1] and hist[3] < hist[2]
    bool maxHistFound = false
    bool lowerFound = false
    bool upperFound = false
    bool candidateFound = false
    float maxHist = hist[2]

    for i = 1 to 1000

        if not maxHistFound 
            if hist[i] < 0
                maxHistFound := true
            else
                if hist[i] > maxHist
                    maxHist := hist[i]

        if not lowerFound
            if hist[i] < 0
                lowerFound := true

        if not upperFound
            if hist[i] > 0
                upperFound := true

        if maxHistFound and lowerFound and upperFound
            if hist[i] > 0 and hist[i + 1] <= hist[i] and hist[i - 1] <= hist[i]
                if hist[i] > maxHist // and macdLine[i] > 0 and signalLine[i] > 0 and hist[i] > 0.10 
                    candidateFound := true
                    maxHist := hist[i]

            if hist[i] < 0
                if candidateFound
                    ind := -1
                    break

alertcondition(ind == -1, title='Short', message='Short')

plotarrow(ind, colorup=#008000, colordown=#FF3030, transp=0, minheight=50, maxheight=50)
[macdLine,signalLine,hist]=macd(关闭,12,26,9)
浮动ind=na
如果hist[2]>0且hist[1]maxHist
maxHist:=hist[i]
如果不是更低的话
如果hist[i]<0
lowerFound:=真
如果没有找到
如果hist[i]>0
upperFound:=真
如果maxHistFound和lowerFound和upperFound
如果hist[i]>0和hist[i+1]0以及信号线[i]>0和hist[i]>0.10
candidateFound:=真
maxHist:=hist[i]
如果hist[i]<0
如果是候选人
ind:=-1
打破
alertcondition(ind=-1,title='Short',message='Short')
绘图箭头(ind,向上着色=008000,向下着色=FF3030,传输=0,最小高度=50,最大高度=50)
它显示信号,即使信号与我描述的不一致


主要的问题是,我可能可以自己修复它,但我不知道如何用这种语言正确地调试,我试图通过绘制所有东西来完成它,但是绘制调试东西是很麻烦的,不幸的是,在我的无知中,我找不到更好的解决方案。如果我知道如何在
PineScript

中的断点处停止,我可能很容易发现发生了什么。我遇到了一个类似的问题,我发现这个脚本已经在TradingView上编写好了

看看吧。效果很好。

您能在出现错误的地方添加一个symbol+分辨率吗
无效序列长度
?感谢您对我的问题表示出兴趣。这个问题不够清楚,所以我改进了描述。我为什么会出错其实并不重要,重要的是如何确保我能够验证每一段代码,以了解它为什么不能按预期工作。目前我不知道该怎么做。请考虑当前的例子。作为你的信息,我也很乐意接受一个答案,告诉我如何有效地调试这个东西。实际上,绘制一个值是调试脚本的主要方式。下面是一篇关于pine脚本调试的短文。它展示了一些澄清脚本中发生了什么的方法。事实上,这不是调试代码最方便的方法,但现在没有更好的方法了。它基本上都显示了如何绘制“部分”的曲线,我们称之为复合指示器,你得到了5个均线,rsi和第二个均线不符合条件-你都已经设置好了。我需要迭代历史,所以如果我必须这样做,我需要为每个“当前时间点”绘制许多历史值,这只会比我发布的简单示例更加棘手。我在电视上看到了一些相当复杂的事情,很难相信他们必须一个接一个地策划所有这些事情才能让它正常工作。好的,那么请告诉我你将如何处理这个特殊的例子。如何检查哪些不起作用?没有pine调试器,我们可以在调试器中设置断点,然后研究变量并跟踪脚本。仅硬核,仅打印/
plot()
。我同意,这很麻烦,但是没有其他的调试方法,直到最近,还没有任何功能可以调试字符串值。因此,拥有复杂脚本的人拥有难以置信的耐心,我认为他们找到了禅,这有助于他们编程。谢谢,但脚本不是开源的,所以我无法检查或修改代码以满足我的需要。