【问题标题】:Array value is 0数组值为 0
【发布时间】:2021-04-18 09:32:20
【问题描述】:

我正在尝试通过使用买入警报蜡烛的值来构建退出策略。

global_l = array.new_float(2,0)

...code to generate longSingnal ...

if (longSignal) 
    sll = low
    tpl = close + ((close - low) * 2) 
    array.set(global_l, 0, sll)
    array.set(global_l, 1, tpl)
    strategy.entry("long", strategy.long) //, comment="Buy") //, when=longSignal)

if (strategy.position_size > 0)
    sl = array.get(global_l,0)
    tp = array.get(global_l,1)
    strategy.exit("SL/TP", stop=sl , limit=tp)

好吧,在“longSignal”蜡烛上,我得到了正确的数组值。购买我的数组值后的蜡烛都是 0。用标签栏测试。

我的错在哪里? ..感谢您的帮助

【问题讨论】:

    标签: arrays pine-script


    【解决方案1】:

    除非您使用var 前缀,否则每个柱都会重新初始化变量。使用var 前缀,您的变量仅在第一个栏上初始化一次,并在整个脚本中保持其状态。

    摘自Expressions, declarations and statements:
    var 关键字是一个特殊的修饰符,它指示编译器只创建和初始化一次变量。这种行为在变量的值必须通过脚本在连续柱上的迭代中保持不变的情况下非常有用。

    试试这个:

    var global_l = array.new_float(2,0)
    
    ...code to generate longSingnal ...
    
    if (longSignal) 
        sll = low
        tpl = close + ((close - low) * 2) 
        array.set(global_l, 0, sll)
        array.set(global_l, 1, tpl)
        strategy.entry("long", strategy.long) //, comment="Buy") //, when=longSignal)
    
    if (strategy.position_size > 0)
        sl = array.get(global_l,0)
        tp = array.get(global_l,1)
        strategy.exit("SL/TP", stop=sl , limit=tp)
    

    【讨论】:

    • 非常感谢!!!一个简单的词可以改变什么。我没有看到这一点真是太糟糕了。经过测试,现在它可以将值保存在数组中,直到下一次覆盖。
    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2018-01-05
    相关资源
    最近更新 更多