【发布时间】:2022-09-24 12:12:12
【问题描述】:
我正在尝试在警报框中创建警报,如下所示:
Test Signal (Nifty Spot price) {{time}}:
{{ticker}} Recommendation {{strategy.order.action}} at CMP: {{close}} with SL:{{plot(\"StopLoss\")}} Target(with 1:1 Risk-to-Reward Ratio): {{plot(\"Target\")}}.
但是,最终消息中的止损和目标不会被替换。
最后的警报消息如下:
我的代码是这样的:
buyTarget = close + ((close - atrLow) * rrRatio)
sellTarget = close - ((atrHigh - close) * rrRatio)
// Trading
var float sl = na
var float tgt = na
h = hour(time(\'1\'), syminfo.timezone)
m = minute(time(\'1\'), syminfo.timezone)
hourVal = h * 100 + m
if (mktAlwaysOn or (hourVal < endOfDay))
// Entry
var string alert_msg = na
if (sureBuyInTrend)
alert_msg := \'Buy: \' + syminfo.ticker + \' , SL: \' + str.tostring(math.floor(atrLow[0])) + \', Target(RR=1:1):\' + str.tostring(math.floor(buyTarget)) + \'. CMP: \' + str.tostring(close)
strategy.entry(\"enter long\", strategy.long, lotSize, limit=na, stop=na, comment=\"Enter Long\", alert_message=alert_msg)
sl := atrLow
tgt := buyTarget
// alert(\'Buy:\' + syminfo.ticker + \' ,SL:\' + str.tostring(math.floor(atrLow[0])) + \', Target:\' + str.tostring(math.floor(buyTarget)), alert.freq_once_per_bar)
if (sureSellInTrend)
alert_msg := \'Sell: \' + syminfo.ticker + \' , SL: \' + str.tostring(math.floor(atrHigh[0])) + \', Target(RR=1:1): \' + str.tostring(math.floor(sellTarget)) + \'. CMP: \' + str.tostring(close)
strategy.entry(\"enter short\", strategy.short, lotSize, limit=na, stop=na, comment=\"Enter Short\", alert_message=alert_msg)
sl := atrHigh
tgt := sellTarget
// alert(\'Sell:\' + syminfo.ticker + \' ,SL:\' + str.tostring(math.floor(atrHigh[0])) + \', Target:\' + str.tostring(math.floor(sellTarget)), alert.freq_once_per_bar)
alert(alert_msg, alert.freq_once_per_bar)
// Exit: target or SL
shortExitComment = (close > sl) ? \"Short SL hit\" : sureBuyInTrend ? \"Short target hit\" : na
var string exit_msg = na
if (sureSellInTrend or (close < sl) or (close > buyTarget))
exit_msg := (close < sl) ? \"Long SL hit. Sorry\" : (close > buyTarget) ? \'Long target hit. Enjoy\': sureSellInTrend ? \'Next Sell signal came. Exiting\' : na
strategy.close(\"enter long\", comment=close < sl ? \"Long SL hit\" : \"Long target hit\", alert_message=exit_msg)
if (sureBuyInTrend or (close > sl) or (close < sellTarget))
exit_msg := (close > sl) ? \"Short SL hit. Sorry\" : (close < sellTarget) ? \'Short target hit. Enjoy\': sureBuyInTrend ? \'Next Buy signal came. Exiting\' : na
strategy.close(\"enter short\", comment=close > sl ? \"Short SL hit\" : \"Short target hit\", alert_message=exit_msg)
else if(not mktAlwaysOn)
// Close all open position at the end if Day
strategy.close_all(comment = \"Close all entries\", alert_message=\"Closing all the pending open positions as market close is near. Thanks.\")
// Hack for alerts
targetPrice = sureBuyInTrend ? buyTarget : sureSellInTrend ? sellTarget : na
plot(math.round(sl,2), title=\"StopLoss\", display = display.all)
plot(math.round(targetPrice,2), title=\"Target\", display = display.all)
所以逻辑很简单:
对于 SL,我正在考虑 ATR,并以此为基础推导出 buySL 和 sellSL。 对于目标,我们只考虑 R:R = 1:1 并从价格中加/减。 但是我正在做的一些错误没有出现。
任何帮助将不胜感激。
-
你有多少地块?您确定您的地块在发出警报时具有有效值(不是
na)吗? -
是的。因为我刚刚更改了颜色并看到图表正确显示在图表中。一个是SL,另一个是目标。两者都在带有值的图表中绘制。
-
也许您使用的是两个单引号而不是一个双引号。检查您的策略代码和警报设置
标签: pine-script