Можно ли изменить масштабирование на основе входных данных? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть индикатор, который я хотел бы иметь возможность строить как в окне графика, так и на нижней панели, используя plotshape. Если он строит график в окне графика, то plotshape - это location.belowbar, если он строит график в нижнем окне, plotshape = 3, location.absolute, и я использую изменения цвета для отображения сигналов. Я выяснил, как скрыть формы графиков ниже.бара, если они отображаются в нижнем окне, и как скрыть местоположение. Абсолют, если оно отображается в верхнем окне.

Проблема в масштабировании: если я изменю входные данные, чтобы скрыть plotshape ниже .bar и отобразить plotshape со значением «3», и переместлю индикатор на нижнюю панель, он все равно будет использовать цену масштаб из графика. Шкала не настраивается автоматически. Так что, если я строю график на нижней панели со значением «3» на графике с SPY, правильная шкала по-прежнему учитывает цену SPY @ ~ 280.

Я пробовал «overlay = true, scale = scale.none / left / right "и без инструкций наложения. Ничего не работает Несмотря ни на что, шкала цен всегда учитывается.

'любая помощь или идеи будут СУПЕР оценены !!!!!

// ----------- -

All_Plot_Loc_Upper = if (Plot_Loc == "Chart Window")
    All_Plot_Loc_Upper = 1
else
    na


Plot_Loc_Lower_NPA = if Plot_Loc == "Chart Window"
    na
else
    3

plotshape(DS_Long_PB_HHV > 0 and All_Plot_Loc_Upper == 1, style=shape.triangleup, location=location.belowbar, size=size.tiny) 
plotshape(series = -Plot_Loc_Lower_NPA, style=shape.triangleup, location=location.absolute, size=size.tiny)

1 Ответ

0 голосов
/ 02 мая 2020

Это потому, что использование location=location.belowbar приведет в действие шкалу цен, даже при построении графика na. Этот код заменяет местоположение чем-то другим, когда не используется режим наложения.

Когда вы перемещаете ind ie на панель, снимите флажок chartMode в Inputs и нажмите на диаграмма; масштаб панели будет правильным:

//@version=4
study("")
chartMode = input(false)

All_Plot_Loc_Upper = if chartMode
    1
else
    na
Plot_Loc_Lower_NPA = if chartMode
    na
else
    3

plotshape(All_Plot_Loc_Upper, style=shape.triangleup, location=chartMode ? location.belowbar : location.bottom, size=size.tiny) 
plotshape(series = -Plot_Loc_Lower_NPA, style=shape.triangleup, location=location.absolute, size=size.tiny)

enter image description here

...