本文介绍了如果下一根蜡烛向我们移动的距离超过止损距离,止损就不会正确触发。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个策略,如果最后一支蜡烛收在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,那么脚本也会在完成订单后运行。这似乎解决了问题,因为一旦我进入多头头寸,脚本再次在当前蜡烛上运行,如果价格对我不利,就会触发止损。但是,这也会导致每次完成订单时都会运行整个脚本。有什么方法可以简单地实现以下行为吗?

  1. 如果满足入场条件,则按最后一支蜡烛闭合进位
  2. 根据入账位置设置止损
  3. 止损在进入价格达到止损水平后的任何时间触发

推荐答案

实际上,下一个代码应该可以根据您的需要工作,但在某些条形图中它以相同的价格退出,我还找不到原因。但我希望代码能对您有所帮助。

//@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

这篇关于如果下一根蜡烛向我们移动的距离超过止损距离,止损就不会正确触发。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 01:18