Устанавливаете как индикатор на чарт ....на 15мин работает лучше всего. В скрипте полностью отключен фильтр сигналов...это место где #and close > ma и #and close < ma ....чтобы его включить нужно просто удалить символ # в обоих местах. Если у вас есть идея как это можно отфильтровать более качественно, например каким то вашим индикатором, то напишите здесь. Вдруг найдете что то интересное...
input TrendAverageType = AverageType.WILDERS;
input price = hl2;
input length = 13;
input displace = 8;
def ma = MovingAverage(TrendAverageType, price, length)[displace];
def Upcond1 = (low[1] - low)/low[1] >= 0.0009;
def Upcond2 = low < low[1] and low < low[2] and low < low[3];
def Upcond3 = ((close - low)/(high-low))<= 0.33;
def Upcond4 = low[1] < low[2];
def Upcond5 = close[1] < close[2];
def Upcond6 = high[1]<=high[2];
plot Upsignal = if Upcond1 and Upcond2 and Upcond3 and Upcond4 and Upcond5 and Upcond6 #and close > ma
then 1 else double.nan;
def Dncond1 = (high - high[1])/high[1] >= 0.0009;
def Dncond2 = high > high[1] and high > high[2] and high > high[3];
def Dncond3 = ((high - close)/(high-low))<= 0.33;
def Dncond4 = high[1] > high[2];
def Dncond5 = close[1] > close[2];
def Dncond6 = low[1]>=low[2];
plot Dnsignal = if Dncond1 and Dncond2 and Dncond3 and Dncond4 and Dncond5 and Dncond6 #and close < ma
then 1 else double.nan;
Upsignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
Dnsignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
В видео детально описываю процесс регистрации аккаунта в TD Ameritrade. На выходе получаем возможность пользоваться одновременно STRATEGY DESK и thinkorswim, без задержек, со всеми подписками первого уровня в Level II
Продолжая тему фильтра уровней... http://hamaha.net/view/post:211467/maximilian..._base.html Есть решение проблемы погрешности, благодаря помощи коллег с других форумов и знакомых программистов, за что им огромное спасибо. def otkl = 0.01; # задайте отклонение в центах/ Amadey_MF def base = if (((-lowest(low,4)+low[0])<otkl) and ((-lowest(low,4)+low[1])<otkl) and ((-lowest(low,4)+low[2])<otkl) and ((-lowest(low,4)+low[3])<otkl))then 1 else if(((highest(high,4)-high[0])<otkl) and ((highest(high,4)-high[1])<otkl) and ((highest(high,4)-high[2])<otkl)and ((highest(high,4)-high[3])<otkl)) then 2 else 0; def base1 = (if(base > 0 ) and (((low[1] == (Ceil(low[1]2))/2)or(high[1] == (Ceil(high[1]2))/2))) then 0 else 1); def base2 = (if(base > 0 ) and (((low[2] == (Ceil(low[2]2))/2)or(high[2] == (Ceil(high[2]2))/2))) then 0 else 1); def base3 = (if(base > 0 ) and (((low[3] == (Ceil(low[3]2))/2)or(high[3] == (Ceil(high[3]2))/2))) then 0 else 1); def base4 = (if(base > 0 ) and (((low[4] == (Ceil(low[4]2))/2)or(high[4] == (Ceil(high[4]2))/2))) then 0 else 1); plot baseall = if(base1 == 0 or base2 == 0 or base3 == 0 or base4 == 0 ) then 0 else 1; AssignBackgroundColor (if (baseall == 0) then Color.red else Color.black); Этот скрипт находит уровни с погрешностью, которую можно указывать самому. Он показывает только 50 и 100-центовые уровни (если надо скрипт который показывает ВСЕ уровни, напишите в приват). Единственный нюанс который хотелось бы улучшить в нем это количество свечей которые надо проверять. Он смотрит только последние 4-е свечки, и если совпадают условия, то эти акции подсвечиваются. А хотелось бы что бы он смотрел к примеру последние 10 свечек, и если хотя бы 3 из них подходили к уровню, то эта акция должна выделятся.. Я уверен что это написать можно.. и думаю это будет тот фильтр который всем нам нужен..
Всем привет. Тоже торгую по похожей формуле на Strategy Desk. Как раз задумался о ней на Thinkorswim.
В коде разобрался за исключением момента расчета круглых уровней. Точнее расчет расшифровал, но ведь получается, что уровни ищутся всегда выше цены. т.е. если цена 23.02, то поиск идет по 23.50, а не по 23.00. А если цена 48.53, то поиск идет уровня 49, а не 48.50.
Хотя проверил и такая тактика тоже работает неплохо, и случайно захватывает и нижние уровни иногда..
Короче я участвую в разработке ))) На досуге подумаю, как получше сформулировать код..
Компании торгуются выше на пост маркете, реакция на отчёты: MERU +18.3%, BCOR +15.7%, DECK +15.4%, EXPE +14.0%, AMZN +1.1% Компании торгуются выше на пост маркете, реакция на новости: APPY +7.5% (участвует Tiberend Strategic Advisors в качестве инвестора), MRVL +1.3% (David Einhorn's Greenlight Capital раскрыла 5,3% акций). Компании торгуются ниже на пост маркете, реакция на отчёты: GDOT -20.1%, NTGR -15.1%, APKT -14.5%, CSTR -13.2%, FB -11.1%, SBUX -9.9%. Компании торгуются ниже на пост маркете, реакция на новости: HZNP -11.5% (FDA получено одобрение Rayos), GMCR -3.7% (слабые квартальные отчёты).
Если используете в своем трейдинге статистические параметры, такие как скошенность распределения и куртосис, то в первом комменте лежит такой скрипт...Period - количество значений выборки, здесь чем больше тем лучше. Observation Period - вводите свое значение для интересующего периода. Работает в нижнем окне, чтобы посмотреть по отдельности нужно будет что то одно отключить.....
Постоянно встречаю здесь торговые стратегии основанные на базах....Предлагаю вашему для тестирования индикатор определяющий сколько раз цена касалась сформированной базы. Работает он на 1м и 5м графиках и в виде гистограммы показывает число касаний поддержки. Соответственно чем оно больше тем сильнее уровень....Любые пожелания приветствуются. Индикатор в комментарии.
понятно....насчет таймфрейма.....это было пожелание одного человека чтобы индикатор сигналил несколько касаний одной цены после отката от дневного хая.....там привязки к ТФ нет никакой.
написать формулу для отображения нужных вам уровней не проблема.....основная трудность заключается в том что в кастом запросах не допускаются рекурсии и циклы то есть как индикатор на открытом графике это будет работать но в вотчличсте - нет. Обойти это дело (например заменить rec на несколько условных операторов) не получается так как здесь мы упираемся в другое ограничение.
Так что ждем пока починят сканер.
@growex Добрый день. Не могли бы Вы написать формулу для следующей ситуации: стак находится выше хая вчерашнего дня, откатывает от хая сегоднешнего и рисует базу на 5 мин ,скажем 4 бара. откат от хая в пределах 30%,если это как то можно обыграть.Наоборот для шорта.
Значит вот что получается.....насчет 30% отката я не стал заморачиваться,....сделал вам настраиваемый индикатор который показывает сколько раз цена своим лоу дотронулась до поддержки. В индикаторе так же заложены дневные максимумы и минимумы. Условие пока одно -
Если инструмент торгуется выше вчерашнего максимума, затем сформировал в нисходящем движении уровень поддержки, коснулся минимумами трех и более свечек этой поддержки то появляется стрелка(и) вверх.
#VM_Support_Attacks #By Vyacheslav Moskalev, "Growex".
# 06.17.2012
declare upper;
input support_attacks = 3;
rec x = if low[1] <= low then Min(low, x[1]) else low;
def PrevHigh = Highest(high(period = AggregationPeriod.DAY)[1], 1);
def PrevLow = Lowest(low(period = AggregationPeriod.DAY)[1], 1);
def CurrHigh = Highest(high(period = AggregationPeriod.DAY), 1);
def CurrLow = Lowest(low(period = AggregationPeriod.DAY), 1);
def signal = if x == x[1] and low[0] == Min(low, x[1]) then 1 else 0;
rec c = if x==x[1] then c[1] + signal else 0;
def sum = c;
def buy_alert = if currhigh > prevhigh and sum >=support_attacks then 1 else 0;
plot up = buy_alert;
up.SetPaintingStrategy( PaintingStrategy.BOOLEAN_ARROW_UP);
werd, вот этот код нужно вставить в сканер. Количество касаний цены задаете в первой строчке.
def support_attacks = 3;
rec x = if low[1] <= low then Min(low, x[1]) else low;
def signal = if x == x[1] and low[0] == Min(low, x[1]) then 1 else 0;
rec c = if x==x[1] then c[1] + signal else 0;
def sum = c;
plot result = sum >= support_attacks;
Предварительно создаете вотчлист из акций где есть откат от хая, затем в настройках сканера показываете ему что нужно искать именно в этом вотчлисте....
Только что попробовал, все работает.
@StRat Вот тут кусок кода который считает хейкен аши.....думаю разберешься как его в вочлист адаптировать, в верхней строчке коммент где какая переменная определяется....
growex помоги плиз, никак не могу написать код на пробитие!!!Вот такой код получился, что не так? declare lower; input data = close; def name = low ("period" = AggregationPeriod.DAY)[1]; def name1= high("period" = AggregationPeriod.DAY)[1]; def condition1 = Crosses(name, CrossingDirection.above, direction = CrossingDirection.above); def condition2 = Crosses(name1, CrossingDirection.below, direction = CrossingDirection.below); plot name3 = condition1 or condition2; AssignBackgroundColor(if name3 then Color.DARK_GREEN else Color.black);
def condition1 = NewStudy41().cond1;
def condition2 = NewStudy41().cond3;
Plot name = (condition1 or condition2);
AssignBackgroundColor(if name then Color.DARK_GREEN else Color.black);
все ровно сложности у него с реальным временем.. Даже не знаю куда проще сделать =) или индюк надо перебирать уже?
мммда.....скорее всего придется написать новый индюк.
Там ведь например красный бар это составляющая и синего и желтого и розового, и белый насколько я помню завязан с желтым....закручено очень, получаются многоуровневые условия.
проще будет определить условия только для интересующих тебя моментов по VSA, описать их в отдельном индикаторе и ссылаться уже на него....
что это? можно скачать посмотреть?
Авг 21 2012, 18:54Устанавливаете как индикатор на чарт ....на 15мин работает лучше всего. В скрипте полностью отключен фильтр сигналов...это место где #and close > ma и #and close < ma ....чтобы его включить нужно просто удалить символ # в обоих местах. Если у вас есть идея как это можно отфильтровать более качественно, например каким то вашим индикатором, то напишите здесь. Вдруг найдете что то интересное...
Авг 21 2012, 19:55input TrendAverageType = AverageType.WILDERS;
input price = hl2;
input length = 13;
input displace = 8;
def ma = MovingAverage(TrendAverageType, price, length)[displace];
def Upcond1 = (low[1] - low)/low[1] >= 0.0009;
def Upcond2 = low < low[1] and low < low[2] and low < low[3];
def Upcond3 = ((close - low)/(high-low))<= 0.33;
def Upcond4 = low[1] < low[2];
def Upcond5 = close[1] < close[2];
def Upcond6 = high[1]<=high[2];
plot Upsignal = if Upcond1 and Upcond2 and Upcond3 and Upcond4 and Upcond5 and Upcond6 #and close > ma
then 1 else double.nan;
def Dncond1 = (high - high[1])/high[1] >= 0.0009;
def Dncond2 = high > high[1] and high > high[2] and high > high[3];
def Dncond3 = ((high - close)/(high-low))<= 0.33;
def Dncond4 = high[1] > high[2];
def Dncond5 = close[1] > close[2];
def Dncond6 = low[1]>=low[2];
plot Dnsignal = if Dncond1 and Dncond2 and Dncond3 and Dncond4 and Dncond5 and Dncond6 #and close < ma
then 1 else double.nan;
Upsignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
Dnsignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);