#pine-script
Вопрос:
С помощью max_bars_back()
удалось выполнить код, но затем plot
(строки 35 и 36 — когда они будут закомментированы, скрипт запустится) ошибка вернулась. Я бы подумал, что все вычисления были бы выполнены, и на графике должны были отображаться только результаты, поэтому я был немного удивлен этим результатом.
Я также попытался установить буфер с max_bars_back()
большим числом, например 10000
, и все равно получил ошибку, поэтому я решил, что проблема не только в том, что буфер слишком мал.
Этот код еще не закончен, и даже с исправленной ошибкой он еще не будет делать именно то, что я хочу, но я должен пройти этот этап, чтобы закончить его. То, что я пытаюсь сделать, — это построить линию, показывающую самую высокую и самую низкую точку свечей для длины свечей, где isSideways
она остается истинной, а затем ничего не строить, когда isSideways
она ложна. Я упоминаю об этом, потому что, если совершенно другой подход является правильным решением, пожалуйста, просветите меня, так как я довольно новичок в pine script.
//@version=4
study("My Script")
sidewaysBbSource = input(close, "Source" , type=input.source , group="Sideways Detection")
sidewaysBbLength = input( 50 , "Length" , type=input.integer , minval=1 , group="Sideways Detection")
sidewaysBbrLen = input( 21 , "Signal Smoothing" , type=input.integer , minval=1 , maxval=50, group="Sideways Detection")
sidewaysBbMult = input( 4.0, "Std Deviation" , type=input.float , minval=0.001 , maxval=50, step=0.001, group="Sideways Detection")
sidewaysBbrStdThresh = input( 0.08, "Std Deviation threshold" , type=input.float , step=0.01 , group="Sideways Detection")
// Sideways indicator
sidewaysBasis = sma(sidewaysBbSource, sidewaysBbLength)
sidewaysStdDev2 = sidewaysBbMult * stdev(sidewaysBbSource, sidewaysBbLength)
sidewaysUpper = sidewaysBasis sidewaysStdDev2
sidewaysLower = sidewaysBasis - sidewaysStdDev2
sidewaysBbr = (sidewaysBbSource - sidewaysLower)/(sidewaysUpper - sidewaysLower)
sidewaysStdDev = stdev(sidewaysBbr, sidewaysBbrLen)
isSideways = (sidewaysBbr > 0.0 and sidewaysBbr < 1.0) and sidewaysStdDev <= sidewaysBbrStdThresh
int le = 0
max_bars_back(le, 300)
le := barssince(not isSideways)
le := le == 0 ? 1 : le
//plot(le, color=color.new(color.blue, 0), style=plot.style_cross)
float L = 0
float H = 0
//max_bars_back(L, 300)
//max_bars_back(H, 300)
L := lowestbars(high, le)
H := highestbars(low, le)
//L := le == 1 ? na : L
//H := le == 1 ? na : H
plot(L, "Lowest sideways" , color=color.new(color.blue, 0), style=plot.style_cross)
//plot(H, "highest sideways", color=color.new(color.red, 0), style=plot.style_cross)
bgcolor( title="Sidways", color=isSideways ? color.rgb(236, 64, 122, 50) : color.new(color.white, 100))
plot(sidewaysStdDev, title="Standard Deviation", color=color.new(color.blue, 0), style=plot.style_line)
plot(sidewaysBbrStdThresh, title="Standard Deviation Threshold", color=color.new(color.white, 50), style=plot.style_cross)
Ответ №1:
Я попросил поддержки у пайна, и это ответ:
//@version=4
study("My Script", max_bars_back = 4999)
...