Pine script 根据上一次输入的价格更新止损
我想根据每个新订单的价格变化设置止损订单。问题是止损仅对第一个订单执行。我这样写代码:Pine script 根据上一次输入的价格更新止损,pine-script,Pine Script,我想根据每个新订单的价格变化设置止损订单。问题是止损仅对第一个订单执行。我这样写代码: //@version=4 strategy("Mutual funds RSI Index", "MF_RSI_IDX", default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000, calc_on_order_fills=true, currency=currency.USD,
//@version=4
strategy("Mutual funds RSI Index",
"MF_RSI_IDX",
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
initial_capital=1000,
calc_on_order_fills=true,
currency=currency.USD,
commission_type=strategy.commission.percent,
commission_value=0.29,
process_orders_on_close=true)
if (rsi(close, 14) < 30)
strategy.entry("buy", strategy.long)
stopLoss = strategy.position_avg_price * 0.80
lastPeak = close * 0.80
sellSignal0 = rsi(close, 14) > 70
sellSignal1 = falling(close, 5)
sellSignal2 = stopLoss >= close
sellSignal3 = lastPeak >= close
strategy.close("buy", when = sellSignal2 or sellSignal3)
plotchar(lastPeak, char="x", location=location.absolute)
plot(strategy.equity)
/@version=4
策略(“共同基金RSI指数”,
“MF_RSI_IDX”,
默认数量类型=策略。权益百分比,
默认数量值=10,
初始资本=1000,
计算顺序填充=真,
货币=货币.USD,
佣金类型=策略佣金百分比,
佣金_值=0.29,
处理订单(关闭=真)
如果(rsi(闭合,14)<30)
strategy.entry(“买入”,strategy.long)
止损=策略位置平均价格*0.80
lastPeak=close*0.80
卖出信号0=rsi(收盘,14)>70
信号1=下降(关闭,5)
sellSignal2=停止损失>=关闭
sellSignal3=最后峰值>=关闭
策略关闭(“买入”,当=sellSignal2或sellSignal3)
plotchar(lastPeak,char=“x”,location=location.absolute)
情节(策略、公平)
有人能解释一下这个代码有什么问题吗?/code>/@version=4
//@version=4
strategy("Mutual funds RSI Index",
"MF_RSI_IDX",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
initial_capital=1000,
currency=currency.USD,
commission_type=strategy.commission.percent,
commission_value=0.29)
strategy.entry("buy", strategy.long, when=rsi(close, 14) < 30)
stopLoss = 0.0
if strategy.position_avg_price != 0
stopLoss := max(strategy.position_avg_price * 0.9, nz(stopLoss[1]))
limitPrice = float(na)
// force exit
if rsi(close, 14) > 70
limitPrice := 0.0
strategy.exit("buy", stop=stopLoss, limit=limitPrice)
策略(“共同基金RSI指数”,
“MF_RSI_IDX”,
叠加=真,
默认数量类型=策略。权益百分比,
默认数量值=10,
初始资本=1000,
货币=货币.USD,
佣金类型=策略佣金百分比,
佣金(U值=0.29)
策略.进入(“买入”,策略.long,何时=rsi(收盘,14)<30)
停止损失=0.0
如果策略.position\u平均价格!=0
止损:=最大值(策略位置平均价格*0.9,新西兰(止损[1]))
限价=浮动(na)
//强制退出
如果rsi(闭合,14)>70
限价:=0.0
策略.退出(“买入”,止损=止损,限价=限价)
这就是你要找的吗?我认为最好通过退出来结束该头寸,并注意,我删除了订单上的计算,并在关闭时处理订单,因为它们非常有争议。几个问题:1)你是否试图实施跟踪止损?比如,如果价格上涨,你会提高止损水平,更接近当前价格?2) 你遇到的确切问题是什么?你不能离开你的位置还是什么?3) 测试的符号+分辨率是多少?4) 未定义变量
sellSignal0
。你能提供最小的工作片段吗?1)是的,我正在尝试实现跟踪止损。然而,我知道strategy.exit函数中的条件是同时工作的,而不是作为备选方案(因此在我的语句中,它既不像“stop”也不像“when”条件得到满足)。2) 订单执行两次,第二个条目永远不会关闭。3) ONCY(抗肿瘤生物技术);1天决议。4) sellSignal0=rsi(close,14)>70我认为值得一提的是,我正在尝试实施跟踪止损,以最新高点的百分比估算,而不是基于滴答声。在strategy()
函数中的参数是什么?订单执行两次,第二个条目从不关闭进入订单或退出?你能发布可以应用到图表的最小工作脚本吗?我能看到问题所在吗?在这种情况下nz()做什么?它是否会将偏移量序列更改为单个值?为什么您认为订单上的计算填充和关闭时的处理订单有争议?我稍微更改了止损计算:止损:=max(strategy.position\u avg\u price*0.9,nz(close[1])
。这样,每次市场上涨时止损都会上升。nz()
对历史上的第一个条返回0(因为第一个条之前的stopLoss
的值是na
)。它允许选择当前位置的最大值和0。我认为最好将止损设置回零,否则上一次止损会影响退出。注意:我已更改代码以适应此条件。calc\u on\u order\u fills
可以引发对未来的展望,因为它的实现。有一篇文章描述了这个案件即将发生,但我不知道它什么时候发表。希望很快<代码>在交易结束时处理订单
填充订单当前价格(已经发生的交易),但实际上,你不能以上一次交易的价格购买-下一次价格可能会有所不同,因此使用在交易结束时处理订单
会影响策略的准确性。