Могу ли я использовать тернарный оператор Pine script, чтобы указать аргумент стиля в plotshape () или аргумент char в plotchar ()? - PullRequest
1 голос
/ 13 июля 2020

Я представляю, что прошу сценарий Pine сделать что-то, для чего он не предназначен, но я думал, что все равно поставлю вопрос.

Могу ли я использовать тернарный оператор Pine script для указания аргумента стиля в plotshape () или аргумент char в plotchar ()?

Например, что-то вроде этого:

plotshape(
     volume, 
     style = (close[0] >= close[1]) ? shape.square : shape.xcross,
     color = color.red
     )

или что-то вроде этого:

plotchar(
     volume, 
     char  = (close[0] >= close[1]) ? "#" : "•",
     color = color.red
     )

EDIT : добавлен пример применения label.new() к панели громкости, но без возможности правильно указать y, y_loc или style:

График объема

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Если вы хотите нарисовать разные символы, используйте v4 label. Строка в нем может быть непостоянной.

Пример: введите описание изображения здесь

0 голосов
/ 13 июля 2020

Нет, не можете. Тип 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)

введите описание изображения здесь

...