【问题标题】:Pinescript - coding a flip/flop arrayPinescript - 编码触发器/触发器数组
【发布时间】:2021-10-29 06:47:11
【问题描述】:

我使用布林带交叉作为进入/退出信号:

smaValue = sma(close, 20)
stdDev   = stdev(close, 20)
upperBand = smaValue + (stdDev * 2)
lowerBand = smaValue - (stdDev * 2)

buy = crossover(close, upperBand)
sell = crossunder(close, lowerBand)

我想创建一个类似触发器机制的信号数组:

https://www.amibroker.com/guide/afl/flip.html

所以 signalarray = 1 从给出买入开始,保持为 1,然后当给出卖出时,它变为 0 - 并保持 0 直到达成新的买入。

如何在 pine 中做到这一点?

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    您可以使用var 关键字来声明一个维护其状态的变量。该示例使用 bool 类型,但如果您更喜欢 1/0 翻转,则可以使用 int 类型和 1 & 0 而不是 true/false。

    //@version=4
    study("flip/flop", overlay = false)
    
    smaValue = sma(close, 20)
    stdDev   = stdev(close, 20)
    upperBand = smaValue + (stdDev * 2)
    lowerBand = smaValue - (stdDev * 2)
    
    buy = crossover(close, upperBand)
    sell = crossunder(close, lowerBand)
    
    var bool isBuy = na
    var bool isSell = na
    
    if buy
        isBuy := true
        isSell := false
    if sell
        isBuy := false
        isSell := true
        
    plot(isBuy ? 1 : 0, color = color.green)
    plot(isSell ? 1 : 0, color = color.red)
    

    【讨论】:

    • 太完美了,谢谢 rumpypumpydumpy :) 它还有助于解决我无法调用带有系列 [bool] 错误的情节 - 我需要转换为 int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2016-09-07
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多