Нет, не можете. Тип style
- style (input string)
, что означает, что его значение должно быть известно до выполнения скрипта. Чтобы его значение было определено во время выполнения, оно должно иметь тип "series[string]"
.
Вы можете определить это, если попытаетесь скомпилировать то, что вы пытаетесь сделать.
Вы будете получите следующую ошибку.
line 7: Cannot call 'plotshape' with arguments (series=series[bool], title=literal string, style=series[string], location=const string); available overloads: plotshape(series[bool], const string, input string, input string, series[color], input integer, series[integer], const string, series[color], const bool, const string, input integer, const integer, string) => void; plotshape(fun_arg__<arg_series_type>, const string, input string, input string, fun_arg__<arg_color_type>, input integer, series[integer], const string, fun_arg__<arg_textcolor_type>, const bool, const string, input integer, const integer, string) => void
В самом первом парантезисе он сообщает вам, что он не может вызвать эту функцию с помощью style=series[string]
, что вы пытаетесь сделать, передав переменную, которая может иметь разные значения во время выполнения.
РЕДАКТИРОВАТЬ: Вы всегда можете комбинировать свои условия в параметре series
графика. Он будет строиться только в том случае, если серия оценивается как true
. Итак, две функции построения графиков для двух фигур.
//@version=4
study("My Script", overlay=true)
mainCond = close > 0
circleCond = close > open
squareCond = open >= close
plotshape(series=mainCond and circleCond, title="Circle", style=shape.circle, location=location.belowbar, color=color.green)
plotshape(series=mainCond and squareCond, title="Square", style=shape.square, location=location.belowbar, color=color.red)
введите описание изображения здесь