[英]TradingView Pine Script : check previous strategy.entry price before new entry
有人问了类似的问题,没有回应,我不允许添加。
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 重置为零,我永远无法检查之前的收盘价。 如果我不设置它,我会收到未声明的错误。
提前感谢您的帮助!
我如何将入场价格保存到变量中:
bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
这适用于入门价格。
entryPrice = valuewhen(strategy.opentrades == 1, strategy.position_avg_price, 0)
每次传递代码时,它都会将 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)
var 关键字是一个特殊的修饰符,它指示编译器只创建和初始化一次变量。 这种行为在变量的值必须通过脚本在连续柱上的迭代中保持不变的情况下非常有用。
你应该把“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)
last_entry_price = strategy.opentrades.entry_price(strategy.opentrades - 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.