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
可以引发对未来的展望,因为它的实现。有一篇文章描述了这个案件即将发生,但我不知道它什么时候发表。希望很快<代码>在交易结束时处理订单
填充订单当前价格(已经发生的交易),但实际上,你不能以上一次交易的价格购买-下一次价格可能会有所不同,因此使用
在交易结束时处理订单
会影响策略的准确性。