Здесь размещены описания и функциональное предназначение соответствующего кода для использования в платформе Thinkorswim в качестве индикаторов, колонок или сканеров. Раздел Help платформы: http://tlc.thinkorswim.com/center/charting/thinkscript.html


Индикаторы (studies) для отображения в любом окне графиков.


Для интеграции кода необходимо: пройти в меню Edit studies->Create..., присвоить собственное название индикатору и воспользоваться вкладкой thinkScript Editor.

STUDY 01
Отображает текущую цену в виде горизонтальной линии во весь график.

#STUDY01
#Copyright AT Group AT-EDUCATION.RU
plot uc = highestAll(if isNan(close[-1]) and !isNAN(close) then close else double.nan);
uc.SetPaintingStrategy( paintingStrategy.HORIZONTAL ); uc.SetDefaultColor (CreateColor(50,50,50));
uc.SetLineWeight(1); uc.HideTitle(); uc.HideBubble();

STUDY 02
Отображает High, Low, Close предыдущей основной торговой сессии на графике во время сегодняшнего дня, включая pre-market и post-market.


#STUDY02
#Copyright AT Group AT-EDUCATION.RU
def Today = yes; #yes = showOnlyToday, no = showEveryDay
def Open_T = 0405; def Close_T = 1955;
def day = getDay(); def last = getLastDay();
def isToday = if(day==last,1,0); def s = if(Today and isToday, 1,if(!Today,1,0));
def pastOpen = if((secondsTillTime(Open_T) > 0), 0,1);
def pastClose = if((secondsTillTime(Close_T) > 0), 0,1);
def mOpen = if(pastOpen and !pastClose, 1, 0);
plot PrevH = if(mOpen and s, high(period = "DAY")[1], double.nan); PrevH.SetDefaultColor(CreateColor(0,75,0));
PrevH.SetPaintingStrategy(PaintingStrategy.LINE); PrevH.SetLineWeight(1); PrevH.HideBubble();
plot PrevL = if(mOpen and s, low(period = "DAY")[1], double.nan); PrevL.SetDefaultColor(CreateColor(75,0,0));
PrevL.SetPaintingStrategy(PaintingStrategy.LINE); PrevL.SetLineWeight(1); PrevL.HideBubble();
plot PrevClose = if(mOpen and s, close(period = "DAY")[1], double.nan); PrevClose.SetDefaultColor(CreateColor(95,95,0));
PrevClose.SetPaintingStrategy(PaintingStrategy.LINE); PrevClose.SetLineWeight(1); PrevClose.HideBubble();
def TodayY = yes; #yes = showOnlyToday, no = showEveryDay
def Open_TY = 1600; def Close_TY = 1955;
def dayY = getDay(); def lastY = getLastDay();
def isTodayY = if(dayY==lastY-1,1,0); def sY = if(TodayY and isTodayY, 1,if(!TodayY,1,0));
def pastOpenY = if((secondsTillTime(Open_TY) > 0), 0,1);
def pastCloseY = if((secondsTillTime(Close_TY) > 0), 0,1);
def mOpenY = if(pastOpenY and !pastCloseY, 1, 0);
plot PrevCloseY = if(mOpenY and sY, close(period = "DAY")[0], double.nan); PrevCloseY.SetDefaultColor(CreateColor(95,95,0));
PrevCloseY.SetPaintingStrategy(PaintingStrategy.LINE); PrevCloseY.SetLineWeight(1); PrevCloseY.HideBubble();

STUDY 03
Отображает на графике тф=5мин: среднюю экспоненциальную цену AverageExp(34) по данным ценовых свечей тф=5мин (зеленая линия) и среднюю экспоненциальную цену AverageExp(34) по данным ценовых свечей тф=15мин (фиолетовая линия).

#STUDY03
#Copyright AT Group AT-EDUCATION.RU
def price = close; def length = 34; def displace = 0;
def agg15 = AggregationPeriod.FIFTEEN_MIN; plot MAexp15 = ExpAverage(close(period = agg15)[-displace], length);
MAexp15.SetDefaultColor(CreateColor(50,0,50));MAexp15.SetStyle(Curve.FIRM);MAexp15.HideBubble();MAexp15.HideTitle();
def agg5 = AggregationPeriod.FIVE_MIN; plot MAexp5 = ExpAverage(close(period = agg5)[-displace], length);
MAexp5.SetDefaultColor(CreateColor(0,50,20));MAexp5.SetStyle(Curve.FIRM);MAexp5.HideBubble();

STUDY 04
Отображает на графике: цену средневзвешенную объемом VWAP (Volume Weighted Average Price).

#STUDY04
#Copyright AT Group AT-EDUCATION.RU
plot myVWAP = reference VWAP(AggregationPeriod.DAY);
myVWAP.SetDefaultColor (CreateColor(0, 99, 99)); myVWAP.SetLineWeight(1); myVWAP.HideBubble(); myVWAP.HideTitle();

STUDY 05
Отображает на графике тф=5мин или менее: торговый диапазон первых 60 минут сегодняшней основной сессии.

#STUDY05
#Copyright AT Group AT-EDUCATION.RU
def agg = AggregationPeriod.FIVE_MIN;
def showOnlyToday = 1; #отображать ТОЛЬКО для последней сессии = 1, для всех сессий = 0
def day = getDay(); def lastDay = getLastDay();
def isToday = if(day==lastDay,1,0);
def shouldPlot = if(showOnlyToday and isToday, 1,if(!showOnlyToday,1,0));
def pastOpen = if((secondsTillTime(1025) > 0), 0,1);
def pastClose = if((secondsTillTime(1030) > 0), 0,1);
def marketOpen = if(pastOpen and !pastClose, 1, 0);
def firstBar =if (day[1] != day, day-1, 0);
#====candle
rec iho = if(highest(open(period = agg),12) != iho[1] and marketOpen, highest(open(period = agg),12), if(!firstBar, iho[1], 0));
rec ihc = if(highest(close(period = agg),12) != ihc[1] and marketOpen, highest(close(period = agg),12), if(!firstBar, ihc[1], 0));
plot hhcc = if(shouldPlot, Max(iho, ihc), Double.nan); hhcc.SetPaintingStrategy( paintingStrategy.HORIZONTAL);
hhcc.SetDefaultColor (CreateColor(95,95,0)); hhcc.SetLineWeight(1); hhcc.HideBubble();
#=====bar
rec ih = if(highest(high(period = agg),12) != ih[1] and marketOpen, highest(high(period = agg),12), if(!firstBar, ih[1], 0));
plot hh = if(shouldPlot, ih, Double.nan); hh.SetPaintingStrategy( paintingStrategy.HORIZONTAL);
hh.SetDefaultColor (CreateColor(0,95,95)); hh.SetLineWeight(1); hh.HideBubble();
#====candle
rec ilo = if(lowest(open(period = agg),12) != ilo[1] and marketOpen, lowest(open(period = agg),12), if(!firstBar, ilo[1], 0));
rec ilc = if(lowest(close(period = agg),12) != ilc[1] and marketOpen, lowest(close(period = agg),12), if(!firstBar, ilc[1], 0));
plot ilcc = if(shouldPlot, Min(ilo, ilc), Double.nan); ilcc.SetPaintingStrategy( paintingStrategy.HORIZONTAL);
ilcc.SetDefaultColor (CreateColor(95,95,0)); ilcc.SetLineWeight(1); ilcc.HideBubble();
#=====bar
rec il = if(lowest(low(period = agg),12) != il[1] and marketOpen, lowest(low(period = agg),12), if(!firstBar, il[1], 0));
plot ll = if(shouldPlot, il, Double.nan); ll.SetPaintingStrategy( paintingStrategy.HORIZONTAL);
ll.SetDefaultColor (CreateColor(0,95,95)); ll.SetLineWeight(1); ll.HideBubble();

STUDY 06
Отображает на графике: горизонтальные линии, кратные по цене 0.25$, если High или Low свечи располагается достаточно близко.

#STUDY06
#Copyright AT Group AT-EDUCATION.RU
plot LINEu = Round(Round(low[0]*4, 0)/4, 2); LINEu.SetDefaultColor (CreateColor(35, 35, 35)); LINEu.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); LINEu.SetLineWeight(1); LINEu.HideBubble(); LINEu.HideTitle();
plot LINEd = Round(Round(high[0]*4, 0)/4, 2); LINEd.SetDefaultColor (CreateColor(35, 35, 35)); LINEd.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); LINEd.SetLineWeight(1); LINEd.HideBubble(); LINEd.HideTitle();

STUDY 07
Отображает в нижнем графике диаграмму количества проторгованных акций, окрашенную следующим образом: зеленый цвет, если объем в текущей свече выше объема предыдущей свечи; красный цвет, если объем в текущей свече ниже объема предыдущей свечи.

#STUDY07
#Copyright AT Group AT-EDUCATION.RU
declare lower; plot Vc=volume();
Vc.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); Vc.SetLineWeight(3); Vc.HideBubble();
Vc.DefineColor("Up", CreateColor(0,85,55)); Vc.DefineColor("Down", CreateColor(105,5,35));
Vc.AssignValueColor(if Vc[0]>=Vc[1] then Vc.color("Up") else Vc.color("Down"));

STUDY 08
Отображает в нижнем графике диаграмму количества совершенных сделок в текущей свече.

#STUDY08
#Copyright AT Group AT-EDUCATION.RU
declare lower; plot count = tick_count();
count.SetPaintingStrategy(PaintingStrategy.HISTOGRAM); count.SetDefaultColor (CreateColor(0, 99, 99)); count.HideBubble();


Колонки (columns) для отображения и сортировки в любом окне Watchlist.


Для интеграции кода необходимо: пройти в меню Customize…->Available Items, выбрать свободный из числа вариантов CustomXX, добавить в качестве колонки в текущий вотчлист Add Item(s)>>, перейти в режим редактирования, присвоить собственное название колонке Column name и воспользоваться вкладкой thinkScript Editor.

COLUMN 01
Отображает положение текущей цены относительно диапазона сегодняшней основной торговой сессии: в районе High - ближе к 100%, в районе Low - ближе к 0%. Если текущая цена находится в верхней четверти сегодняшнего торгового диапазона - ячейка подкрашивается в зеленый цвет. Если текущая цена находится в нижней четверти сегодняшнего торгового диапазона - ячейка подкрашивается в красный цвет. В настройках колонки использовать тф=DAY.

#COLUMN01 R%
#Copyright AT Group AT-EDUCATION.RU
def k=100;
plot R=(close-low)/(high-low)*k;
AssignBackgroundColor(if R>=0.75*k then CreateColor(0,55,0) else if R<=0.25*k then CreateColor(75,0,0) else CreateColor(25,25,25));

COLUMN 02
Отображает положение текущей цены относительно цены Close предыдущей торговой сессии в процентном изменении. Если текущая цена в положительной зоне - ячейка подкрашивается в зеленый цвет. Если текущая цена в отрицательной зоне - ячейка подкрашивается в красный цвет. В настройках колонки использовать тф=DAY.

#COLUMN02 CC%
#Copyright AT Group AT-EDUCATION.RU
plot cc = (close[0]-close[1])/close[1]*100;
AssignBackgroundColor(if cc>0 then CreateColor(0,55,0) else CreateColor(75,0,0));

COLUMN 03
Отображает размер гэпа Gap: положение цены Open текущей сессии относительно цены Close предыдущей торговой сессии в процентном изменении. Если Open текущей сессии выше вчерашнего High - ячейка подкрашивается в зеленый цвет. Если Open текущей сессии ниже вчерашнего Low - ячейка подкрашивается в красный цвет. В настройках колонки использовать тф=DAY.

#COLUMN03 GAP%
#Copyright AT Group AT-EDUCATION.RU
plot g = (open[0]-close[1])/close[1]*100;
AssignBackgroundColor(if g>0 and open[0]>high[1] then CreateColor(0,55,0) else if g<0 and open[0]<low[1] then CreateColor(75,0,0) else CreateColor(25,25,25));

COLUMN 04
Отображает положение текущей цены относительно цен и диапазона предыдущих торговых сессий.
Если текущая цена выше High предыдущих 2-х сессий: ячейка подкрашивается в светло-зеленый цвет.
Если текущая цена выше High предыдущей сессии: ячейка подкрашивается в зеленый цвет.
Если текущая цена в положительной зоне, но находится в диапазоне предыдущей сессии: ярко-зеленый шрифт на сером фоне.
Если текущая цена в отрицательной зоне, но находится в диапазоне предыдущей сессии: ярко-красный шрифт на сером фоне.
Если текущая цена ниже Low предыдущей сессии: ячейка подкрашивается в красный цвет.
Если текущая цена ниже Low предыдущих 2-х сессий: ячейка подкрашивается в светло-красный цвет.
В настройках колонки использовать тф=DAY.

#COLUMN04 CY
#Copyright AT Group AT-EDUCATION.RU
def YHL2=(high[1]+low[1])/2;
def RHL=(high[1]-low[1]);
def H1=high[1]; def L1=low[1];
def D2 = if(close[0]>high[1] and close[0]>high[2],3,if(close[0]<low[1] and close[0]<low[2],-3,0));
def D1 = if(close[0]>high[1],2,if(close[0]<low[1],-2,0));
def DC = if(close[0]>close[1],1,if(close[0]<close[1],-1,0));
plot net=if(close[0]>YHL2,(close[0]-L1)/RHL,(close[0]-H1)/RHL);
AssignBackgroundColor(if D2==3 then CreateColor(55,205,55) else if D2==-3 then CreateColor(205,55,55) else if D1==2 then CreateColor(0,105,0) else if D1==-2 then CreateColor(105,0,0) else if (DC==1 and net>0) then CreateColor(25,25,25) else if (DC==-1 and net<0) then CreateColor(25,25,25) else CreateColor(0,0,0));
net.AssignValueColor(if D2==3 then CreateColor(5,5,5) else if D2==-3 then CreateColor(5,5,5) else if D1==2 then CreateColor(175,175,0) else if D1==-2 then CreateColor(175,175,0) else if (DC==1 and net>0) then CreateColor(0,255,0) else if (DC==-1 and net<0) then CreateColor(255,0,0) else CreateColor(125,125,125));

COLUMN 05
Отображает абсолютную разницу (в количестве центов) текущей котировки Bid и цены Close последней основной торговой сессии.
Целесообразно использовать на pre-market. В настройках колонки использовать тф=DAY.

#COLUMN05 BID
#Copyright AT Group AT-EDUCATION.RU
def netpre = 100*AbsValue(bid-close[0]);
plot net=netpre/close[0];

COLUMN 06
Отображает абсолютную разницу (в количестве центов) текущей котировки Ask и цены Close последней основной торговой сессии.
Целесообразно использовать на pre-market. В настройках колонки использовать тф=DAY.

#COLUMN06 ASK
#Copyright AT Group AT-EDUCATION.RU
def netpre = 100*AbsValue(ask-close[0]);
plot net=netpre/close[0];


Иллюстрации к статье выполнены с использованием платформы Thinkorswim www.thinkorswim.com

Направьте интересующие Вас вопросы или свои пожелания в наш адрес ...

Scroll to top