5

有人问了类似的问题,没有回应,我不允许添加。

Tradingview Pine 脚本在策略输入时保存收盘价

我正在尝试建立一个策略,该策略将在收盘前多次买入(金字塔式)以平均下跌,但我想检查之前的入场价格以确保它低于配置的百分比。

到目前为止我所拥有的:

lastBuy=0

if (condition)
    if (lastBuy==0)
        lastBuy=close
        strategy.entry("buy", true)
    else
        if ((close*1.01)<lastBuy)
            lastBuy=close
            strategy.entry("buy", true)

每次传递代码时,它都会将 lastBuy 重置为零,我永远无法检查之前的收盘价。如果我不设置它,我会收到未声明的错误。

提前感谢您的帮助!

4

4 回答 4

4

我如何将入场价格保存到变量中:

bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
于 2020-12-06T04:03:49.910 回答
3

这适用于入门价格。

entryPrice = valuewhen(strategy.opentrades == 1, strategy.position_avg_price, 0)

于 2021-03-13T22:14:12.837 回答
1

每次传递代码时,它都会将 lastBuy 重置为零,我永远无法检查之前的收盘价。如果我不设置它,我会收到未声明的错误。

发生这种情况是因为您的代码试图lastBuy重复声明相同的变量。这样做会得到TradingView 的未声明标识符错误

为了解决这种情况,首先用 . 声明你的变量=。然后用 更新它的值:=。请记住,您不能=在同一个变量上多次使用运算符。

因此,将您的代码更改为:

lastBuy = 0

if (condition)
    if (lastBuy == 0)
        lastBuy := close
        strategy.entry("buy", true)
    else
        if ((close*1.01)<lastBuy)
            lastBuy := close
            strategy.entry("buy", true)
于 2018-07-31T07:46:51.217 回答
0

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

https://www.tradingview.com/pine-script-docs/en/v4/language/Expressions_declarations_and_statements.html

你应该把“var”放在“lastBuy”之前,这样它就不会被重置。

var lastBuy = 0

if (condition)
    if (lastBuy == 0)
        lastBuy := close
        strategy.entry("buy", true)
    else
        if ((close*1.01)<lastBuy)
            lastBuy := close
            strategy.entry("buy", true)
于 2021-08-15T15:16:25.193 回答