本文介绍了如果下一根蜡烛向我们移动的距离超过止损距离,止损就不会正确触发。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个策略,如果最后一支蜡烛收在4均线上方,我会用100%的资本建立多头头寸。我将止损设定在平均入场价的1%以下,在这种情况下,入场价在1152,因此止损被设定在1152*0.99,即1140.48。理想的行为是,我在1152点进场,止损一旦价格跌破1140.48就触发。
我被止损在下一支蜡烛开盘价1005.5,损失12.72%.我试过减少订单规模,但没有什么不同,头寸都是在同一个地方退场。这与派恩计算剧本的时间有关吗?当下一支蜡烛离入场的距离大于我的止损距离时,这似乎是一个问题。
//@version=4
strategy("Stoploss", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sma_per = input(4, title='SMA Lookback Period', minval=1)
sl_inp = input(1.0, title='Stop Loss %', type=input.float) / 100
sma = sma(close, sma_per)
stop_level = strategy.position_avg_price * (1 - sl_inp)
strategy.entry("L", strategy.long, when=close > sma)
// Stop loss should trigger whenever we hit stop_level once we are in a position
strategy.exit("Stop Loss", "L", stop=stop_level)
plot(sma, color=color.orange, linewidth=2)
请注意,我还尝试使用:
strategy.order("Stop Loss", long=strategy.short, qty=strategy.position_size, stop=stop_level)
我的止损而不是strategy.exit()
,但我得到了相同的结果。
这是交易清单,上面显示了我们的损失。请注意,交易2也会发生同样的情况--我们在下一支蜡烛上损失的比我们应该失去的更多:
我知道Pine会在每个蜡烛结束后计算脚本,如果我将calc_on_order_fills
设置为TRUE,那么脚本也会在完成订单后运行。这似乎解决了问题,因为一旦我进入多头头寸,脚本再次在当前蜡烛上运行,如果价格对我不利,就会触发止损。但是,这也会导致每次完成订单时都会运行整个脚本。有什么方法可以简单地实现以下行为吗?- 如果满足入场条件,则按最后一支蜡烛闭合进位
- 根据入账位置设置止损
- 止损在进入价格达到止损水平后的任何时间触发
推荐答案
实际上,下一个代码应该可以根据您的需要工作,但在某些条形图中它以相同的价格退出,我还找不到原因。但我希望代码能对您有所帮助。
//@version=4
strategy("Stoploss", overlay=true)
sma_per = input(4, title='SMA Lookback Period', minval=1)
sl_inp = input(1.0, title='Stop Loss %', type=input.float) / 100.0
var nextTickToEntry = false
stop_level = 0.0
if nextTickToEntry
nextTickToEntry := false
stop_level := open * (1 - sl_inp)
strategy.exit("Stop Loss", "L", stop=stop_level)
plot(stop_level)
if close > sma(close, sma_per)
strategy.entry("L", strategy.long)
nextTickToEntry := true
这篇关于如果下一根蜡烛向我们移动的距离超过止损距离,止损就不会正确触发。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!