вторник, 4 декабря 2012 г.

Triangular MA band и лейбл для него.


Вот это уже скрипт на основе индикатора. А именно - на основе Triangular MA. Для меня он служит фильтром точек входа, что бы не попадать в позиции, когда стак не достаточно отстоялся перед началом движения. Смысл в том что триангулярные вычисления определяют не простую среднюю, а точку от которой экстремумы чарта за определенный промежуток времени будут равноудалены. Это по сути та точка от которой и сверху и снизу прошло одинаковое кол-во сделок за определенный промежуток времени. Это конечно не буквальное значение, а статистическое, т.к. у нас нету информации о конкретных сделках. Я стараюсь брать только те точки входа, которые находятся в 10% диапазоне от TriangularMA. По идее чем ближе к основной линии - тем лучше. Этот скрипт видно на моих скринах как 3 скользящих кривых. (Параметры подобраны под минутный график, на другие таймфреймы выбирайте сами.)

Скрипт так же рисует лейбл, который сигналит о направлении предполагаемой точки входа и ее наличии вообще. Принцип основан на положении цены относительно Triangular MA и направлении последней.

#by Egor Masalskiy
#last modify 03.12.2012

input price = close;
input length = 89;
input displace = 0;
input period = {default DAY, WEEK};
input percent = 10;

def effectiveLength = Ceil((length + 1) / 2);
def dayrange1 = (high(period = period)[1] - low(period = period)[1]);
def dayrange2 = (high(period = period)[2] - low(period = period)[2]);
def dayrange3 = (high(period = period)[3] - low(period = period)[3]);
def dayrange4 = (high(period = period)[4] - low(period = period)[4]);
def dayrange5 = (high(period = period)[5] - low(period = period)[5]);
def dayrange = (dayrange1 + dayrange2 + dayrange3 + dayrange4 + dayrange5)/5;

plot AvgTri = Average(Average(price[-displace], effectiveLength), effectiveLength);
AvgTri.SetDefaultColor(GetColor(1));

plot AvgTri_up = AvgTri + (percent/100) * dayrange;
AvgTri.SetDefaultColor(GetColor(1));

plot AvgTri_down =  AvgTri - (percent/100) * dayrange;
AvgTri.SetDefaultColor(GetColor(1));

#-----------------------------Label---------------------------------------------------
AddLabel(yes, Concat("TMA ", Round(AvgTri, 2)), (if (Price < AvgTri_up and Price > AvgTri_down and AvgTri > AvgTri[1] and price > AvgTri) then color.GREEN else if (Price < AvgTri_up and Price > AvgTri_down and AvgTri < AvgTri[1] and price < AvgTri ) then Color.RED else Color.BLACK));

P.S. О том как и куда вставлять эти скрипты в терминале ThinkOrSwim написано здесь.

Комментариев нет:

Отправить комментарий