如何将研究变为策略?

时间:2020-09-16 14:05:16

标签: pine-script

我对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", type=integer, defval=20)
for_mult = input(title="Stdev", type=integer, 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, color=#d4d4d4, linestyle=dotted, 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, color=#00fff0, 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, transp=0, style=shape.triangledown, text="Sell") ```

1 个答案:

答案 0 :(得分:0)

如果脚本以“ study()”函数开头,而策略始终以“ strategy()”函数开头,则该脚本被视为TradingView中的研究。

例如,插入具有以下参数的函数将定义您的策略名称,将overlay设置为true会将其添加到主图表中,而不是在底部的单独指标图中显示。

strategy(title='MyStudy', overlay=true)

如果要将脚本中的叠加层从false更改为true,请记住要删除图表中现有的叠加层,然后再次添加;否则,情节可能不会刷新。

研究和策略之间的区别在于,策略脚本通常包含诸如strategy.entry()和strategy.exit()之类的函数,它们告知引擎何时进行买卖,而研究仅在图表中绘制数据。

您的脚本已被定义为策略。您所需要做的就是添加必要的strategy.entry()和strategy.exit()行以实施您的策略,并绘制要显示的行。