ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы

На рисунке ниже — Watchlist основных Futures (базовый Watchlist). Можно исполользовать любые списки, в том числе динамически-создаваемые «ловушки»-скринеры, как замена finviz.com. Правая часть таблицы (столбцы) — текущие (момент) уровни инструмента (в данном случае фьючерса) относительно того или иного уровня Camarilla Pivots, рассчитанного относительно предыдущего дня. Остование или опережение уровня показаны в относительных величинах (%) и помимо этого выставлена синяя сигнализация поля при близком нахождении (менее чем столько-то долей %).
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
Как я с этим работаю — сортирую нужные столбцы (например по столбцу Pivot Point) и дальше уже вывожу инструмент в графическое представление.
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы

На оперативном (внутриневном) графике так же отражены нужные уровни Camarilla (в данном случае — S3,S4,PP,R3,R4) и High,Low,Close предыдущего дня.

Как все это настроить?
Сперва настроим Watchlist просмотр.

ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы

Правой кнопкой мышки (или двумя пальцами на тачпаде), Customize.
Дальше выбираем доступные к настройкам Custom-вьюшки:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
В списке Custom1-19 выбираем любой двойным нажатием на символе слево от имени и видим вот это:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
Стираем содержимое и взамен вставляем код thinkscript для нужного уровня Camarilla и сохраняем этот Custom Colmn Name, задав ему удобное имя.

Коды для Camarilla в синтаксисе thinkscript (каждый блок кода — отдельный Custom Column):
plot S4=round((close-(close[1]-(high[1]-low[1])*1.1/2))/close*100,2); S4.AssignValueColor(if S4 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(S4)<0.05 then Color.Blue else Color.BLACK);
————
plot S3=round((close-(close[1]-(high[1]-low[1])*1.1/4))/close*100,2);
S3.AssignValueColor(if S3 <0 then Color.RED else Color.GREEN);
AssignBackgroundColor( if AbsValue(S3)<0.1 then Color.Blue else Color.BLACK);
————
plot S2=round((close-(close[1]-(high[1]-low[1])*1.1/6))/close*100,2); S2.AssignValueColor(if S2 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(S2)<0.05 then Color.Blue else Color.BLACK);
————
plot S1=round((close-(close[1]-(high[1]-low[1])*1.1/12))/close*100,2);
S1.AssignValueColor(if S1 <0 then Color.RED else Color.GREEN);
AssignBackgroundColor( if AbsValue(S1)<0.1 then Color.Blue else Color.BLACK);
————
plot P=round((close-(close[1]+high[1]+low[1])/3)/close*100,2);
P.AssignValueColor(if P <0 then Color.RED else Color.GREEN);
AssignBackgroundColor( if AbsValue(P)<0.1 then Color.Blue else Color.BLACK);
————-
plot R1=round((close-(close[1]+(high[1]-low[1])*1.1/12))/close*100,2); R1.AssignValueColor(if R1 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(R1)<0.05 then Color.Blue else Color.BLACK);
————-
plot R2=round((close-(close[1]+(high[1]-low[1])*1.1/6))/close*100,2); R2.AssignValueColor(if R2 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(R2)<0.05 then Color.Blue else Color.BLACK);
————-
plot R3=round((close-(close[1]+(high[1]-low[1])*1.1/4))/close*100,2); R3.AssignValueColor(if R3 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(R3)<0.05 then Color.Blue else Color.BLACK);
————-
plot R4=round((close-(close[1]+(high[1]-low[1])*1.1/2))/close*100,2); R4.AssignValueColor(if R4 <0 then Color.RED else Color.GREEN); AssignBackgroundColor( if AbsValue(R4)<0.05 then Color.Blue else Color.BLACK);
————-
Теперь вставляем Custom Column в правую часть нашего вида:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы 
Вторая часть — индикаторы на графике.
Создать собственный индикатор Studies-Edit Studies…-New…:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
Все что видим стираем:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
Вставляем код:
# CAMARILLAPIVOTS
# (c) 2009 www.thinkscripter.com
# thinkscripter@gmail.com
# Last Update 08 Feb 2009

input timeFrame = {default DAY, WEEK, MONTH};
input showOnlyToday = no;

def H = high(period = timeFrame)[1];
def L = low(period = timeFrame)[1];
def C = close(period = timeFrame)[1];

def R = H-L;
def calc_PP = (H + L + C) / 3;
def calc_H1 = C+(R*1.1/12);
def calc_H2 = C+(R*1.1/6);
def calc_H3 = C+(R*1.1/4);
def calc_H4 = C+(R*1.1/2);
def calc_L1 = C-(R*1.1/12);
def calc_L2 = C-(R*1.1/6);
def calc_L3 = C-(R*1.1/4);
def calc_L4 = C-(R*1.1/2);

plot H4;
plot H3;
plot H2;
plot H1;
plot PP;
plot L1;
plot L2;
plot L3;
plot L4;

PP.hide();
H1.hide();
H2.hide();
L1.hide();
L2.hide();

if (showOnlyToday and !IsNaN(close(period = timeFrame)[-1])) or
(getAggregationPeriod() > if timeframe == timeframe.DAY then AggregationPeriod.DAY else if timeframe == timeframe.WEEK then AggregationPeriod.WEEK else AggregationPeriod.MONTH)
then {
H1 = Double.NaN;
H2 = Double.NaN;
H3 = Double.NaN;
H4 = Double.NaN;
PP = Double.NaN;
L1 = Double.NaN;
L2 = Double.NaN;
L3 = Double.NaN;
L4 = double.NaN;
}
else {
H1 = calc_H1;
H2 = calc_H2;
H3 = calc_H3;
H4 = calc_H4;
PP = calc_PP;
L1 = calc_L1;
L2 = calc_L2;
L3 = calc_L3;
L4 = calc_L4;
}

PP.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
H1.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
H2.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
H3.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
H4.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);

L1.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
L2.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
L3.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);
L4.SetPaintingStrategy(if timeframe == timeframe.DAY then PaintingStrategy.LINE_VS_POINTS else if timeframe == timeframe.WEEK then PaintingStrategy.LINE_VS_TRIANGLES else PaintingStrategy.LINE_VS_SQUARES);

PP.SetDefaultColor(GetColor(0));
H1.SetDefaultColor(GetColor(5));
H2.SetDefaultColor(GetColor(5));
H3.SetDefaultColor(GetColor(5));
H4.SetDefaultColor(GetColor(5));
L1.SetDefaultColor(GetColor(6));
L2.SetDefaultColor(GetColor(6));
L3.SetDefaultColor(GetColor(6));
L4.SetDefaultColor(GetColor(6));

PP.SetStyle(Curve.POINTS);
H1.SetStyle(Curve.POINTS);
H2.SetStyle(Curve.POINTS);
H3.SetStyle(Curve.POINTS);
H4.SetStyle(Curve.POINTS);
L1.SetStyle(Curve.POINTS);
L2.SetStyle(Curve.POINTS);
L3.SetStyle(Curve.POINTS);
L4.SetStyle(Curve.POINTS);
——
Сохраняем, обзываем, вставляем в список индикатор в график (на рисунке сверху в правой части он изображен):
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы
Как итог видим примерно следующее:
ghostsky | Уровни Camarilla Pivots в виде сигнальной таблицы 
Надеюсь кому-то помог.