问题描述
我对pine脚本非常陌生,昨天才开始尝试了解它的工作原理。
我已复制从Tradingview粘贴的某个研究,现在正尝试进行调整以使其成为一种策略。
还有另一个问题,我也希望代码的plotshape行直接绘制到主图表上而不是窗口上。
有两件事,添加从研究到策略更改所需添加的内容,以及将代码的最后两条plotshape行从窗口移至主图表。
谢谢
这是我正在使用的代码。
strategy("RSI + BB (EMA)",overlay=true)
// Инициализация параметров
src = input(title="Source",type=source,defval=close)
for_rsi = input(title="RSI_period",type=integer,defval=14)
for_ma = input(title="Basis_BB",defval=20)
for_mult = input(title="Stdev",defval=2,minval=1,maxval=5)
for_sigma = input(title="Dispersion",type=float,defval=0.1,minval=0.01,maxval=1)
// Условия работы скрипта
current_rsi = rsi(src,for_rsi)
basis = ema(current_rsi,for_ma)
dev = for_mult * stdev(current_rsi,for_ma)
upper = basis + dev
lower = basis - dev
disp_up = basis + ((upper - lower) * for_sigma)
disp_down = basis - ((upper - lower) * for_sigma)
color_rsi = current_rsi >= disp_up ? lime : current_rsi <= disp_down ? red : #ffea00
// Дополнительные линии и заливка для областей для RSI
h1 = hline(70,color=#d4d4d4,linestyle=dotted,linewidth=1)
h2 = hline(30,linewidth=1)
fill (h1,h2,transp=95)
// Алерты и условия срабатывания
rsi_Green = crossover(current_rsi,disp_up)
rsi_Red = crossunder(current_rsi,disp_down)
alertcondition(condition=rsi_Green,title="RSI cross Above Dispersion Area",message="The RSI line closing crossed above the Dispersion area.")
alertcondition(condition=rsi_Red,title="RSI cross Under Dispersion Area",message="The RSI line closing crossed below the Dispersion area")
// Результаты и покраска
plot(basis,color=black)
plot(upper,color=#00fff0,linewidth=2)
plot(lower,linewidth=2)
s1 = plot(disp_up,color=white)
s2 = plot(disp_down,color=white)
fill(s1,s2,color=white,transp=80)
plot(current_rsi,color=color_rsi,linewidth=2)
plotshape(rsi_Green,title="RSI Buy Signal",location=location.belowbar,color=green,transp=0,style=shape.triangleup,text="Buy")
plotshape(rsi_Red,title="RSI Sell Signal",location=location.abovebar,color=red,style=shape.triangledown,text="Sell") ```
解决方法
如果脚本以“ study()”函数开头,而策略始终以“ strategy()”函数开头,则该脚本被视为TradingView中的研究。
例如,插入具有以下参数的函数将定义您的策略名称,将overlay设置为true会将其添加到主图表中,而不是在底部的单独指标图中显示。
strategy(title='MyStudy',overlay=true)
如果要将脚本中的叠加层从false更改为true,请记住要删除图表中现有的叠加层,然后再次添加;否则,情节可能不会刷新。
研究和策略之间的区别在于,策略脚本通常包含诸如strategy.entry()和strategy.exit()之类的函数,它们告知引擎何时进行买卖,而研究仅在图表中绘制数据。
您的脚本已被定义为策略。您所需要做的就是添加必要的strategy.entry()和strategy.exit()行以实施您的策略,并绘制要显示的行。