如何解决Tradingview pine script 策略故障排除 -> 研究转换
我一直在将 pine 脚本中的 Tradingview 策略 转换为 研究,但我收到了额外的买入和卖出信号,我不知道为什么。我相信该脚本不会重绘,并且可以改编为机器人的盈利触发器。
这是一张图片,其中向上或向下三角形显示触发器(在警报之前一个条)。尽管正确的触发器也存在,但您可以从策略中看到许多额外的三角形与空头和多头订单。 screenshot of chart with strategy short/long versus alerts as triangles
我的问题可能与我如何替换策略跟踪未结订单和止盈的方式有关。
在原始脚本中,长条目由 up7
和 up8
信号指示,但 up8
使用 strategy.position_avg_price
,这些数据在研究中不可用。
strategy.entry
还使用了一些 if/else 语句 (? :),我不确定我是否 100% 确定我正确适应。
这是原始脚本:
//Noro
//2018
//@version=2
strategy("Noro's Bands Scalper Strategy v1.6",shorttitle = "Scalper str 1.6",overlay = true,default_qty_type = strategy.percent_of_equity,default_qty_value = 100.0,pyramiding = 0)
//Settings
needlong = input(true,defval = true,title = "Long")
needshort = input(true,title = "Short")
takepercent = input(0,defval = 0,minval = 0,maxval = 1000,title = "take,%")
needbe = input(true,title = "Bands Entry")
needct = input(false,defval = false,title = "Counter-trend entry")
bodylen = input(10,defval = 10,maxval = 50,title = "Body length")
trb = input(1,defval = 1,minval = 1,maxval = 5,title = "Trend bars")
len = input(20,defval = 20,minval = 2,maxval = 200,title = "Period")
needbb = input(true,title = "Show Bands")
needbg = input(true,title = "Show Background")
fromyear = input(1900,defval = 1900,minval = 1900,maxval = 2100,title = "From Year")
toyear = input(2100,defval = 2100,title = "To Year")
frommonth = input(01,defval = 01,minval = 01,maxval = 12,title = "From Month")
tomonth = input(12,defval = 12,title = "To Month")
src = close
//PriceChannel 1
lasthigh = highest(src,len)
lastlow = lowest(src,len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist,len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]
//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]
//Lines
colo = needbb == false ? na : black
plot(hd2,color = colo,linewidth = 1,transp = 0,title = "High band 2")
plot(hd,title = "High band 1")
plot(center,title = "center")
plot(ld,title = "Low band 1")
plot(ld2,title = "Low band 2")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col,transp = 80)
//Body
body = abs(close - open)
smabody = ema(body,30) / 10 * bodylen
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0
if up7 == 1 or up8 == 1
strategy.entry("Long",strategy.long,needlong == false ? 0 : trend == -1 and needct == false ? 0 : na,when=(time > timestamp(fromyear,frommonth,01,00,00) and time < timestamp(toyear,tomonth,31,00)))
if dn7 == 1 or dn8 == 1
strategy.entry("Short",strategy.short,needshort == false ? 0 : trend == 1 and needct == false ? 0 : na,00)))
if time > timestamp(toyear,00)
strategy.close_all()
这是我的版本,仅在 //Signals
部分之后进行了更改。它使用 lastLong
和 lastShort
作为本来是 strategy_position_avg_price
的占位符。 (我的版本还绘制了买入和卖出信号的形状以与策略进行比较)
//@version=2
study("RSTU-Noro's Bands Scalper",shorttitle = "RSTUD Scalper 1.6",overlay = true)
//Settings
needlong = input(true,defval = 19,defval = 4,30) / 10 * bodylen
//Signals
lastLong = 0
lastShort = 0
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > lastShort * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < lastLong * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0
longEntry = up7 == 1 or up8 == 1 and needlong == true and needct == true
alertcondition(longEntry and trend == -1,title="Long",message="Long")
plotshape(longEntry,style=shape.triangleup,location=location.belowbar,color=green)
if longEntry and trend == -1
lastLong = open
shortEntry = dn8 == 1 or dn7 == 1 and needshort == true and needct == true
alertcondition(shortEntry and trend == 1,title="Short",message="Short")
plotshape(shortEntry,style=shape.triangledown,location=location.abovebar,color=red)
if shortEntry and trend == 1
lastShort = open
任何帮助使其正常工作都会很棒。 ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。