thinkorswim
Продолжая тему фильтра уровней... http://hamaha.net/view/post:211467/maximiliano-%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81_%D0%BF%D0%BE_%D0%BF%D0%BE%D0%B2%D0%BE%D0%B4%D1%83_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B9_Plot_base.html Есть решение проблемы погрешности, благодаря помощи коллег с других форумов и знакомых программистов, за что им огромное спасибо. def otkl = 0.01; # задайте отклонение в центах/ Amadey_MF def base = if (((-lowest(low,4)+low[0]) 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 из них подходили к уровню, то эта акция должна выделятся.. Я уверен что это написать можно.. и думаю это будет тот фильтр который всем нам нужен..
постить скрипты лучше в комментарии, так они имеют более менее нормальный вид.
Июл 29 2012, 11:57def otkl = 0.01; # задайте отклонение в центах/ Amadey_MF
Июл 29 2012, 12:12def 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);
Можно ли сделать более строгими условия формулы? Чтобы показывало отклонение только с одной стороны уровня и если происходит прокол то больше не подсвечивает. А то показывает много акций размазанных по уровню с обоих сторон.
Июл 31 2012, 12:30def basep = (if (((low[0] == low[1]) and (low[2] == low[1]) and (low[2] == low[3]))or((high[0] == high
Июл 31 2012, 13:42[1]) and (high[2] == high[1]) and (high[2] == high[3]))) then 0 else 1);
Plot base = (if(basep == 0) and ( ((low[1] == (Ceil(low[1]*2))/2)or(high[1] == (Ceil(high[1]*2))/2)) or
((low[1] == -(Ceil(low[1]*10))/10)or(high[1] == -(Ceil(high[1]*10))/10))) then 0 else 1);
AssignBackgroundColor(if (base == 0) and ((low[1] == (Ceil(low[1]*2))/2)or(high[1] == (Ceil(high[1]
*2))/2)) then Color.red else if (base == 0) and ((low[1] == -(Ceil(low[1]*10))/10) or(high[1] == -(Ceil
(high[1]*10))/10)) then Color.green else Color.black);
тут с одной стороны не пробивает ни на цент. подсвечивает 50 и 100-центовые уровни.
Здесь формула когда каждая свеча цент в цент бьет в уровень. А вот чтобы все равно подсвечивало когда одна или две свечи из заданных четырех по этой формуле 1-2 цента до уровня не дотягивает?
Июл 31 2012, 15:59maximiliano.....
100% это еще не всё.....
Июл 31 2012, 21:02это точно
Июл 31 2012, 21:28voland, ну это все что у меня есть
я сам никак не соберу то что мне надо, так же надеюсь на помощь thinkscriptеров. по идее нам надо одна и та же формула, которая качественно находила бы уровни, но увы что то тяжело она дается.
Июл 31 2012, 21:33она тяжело дается потому что
Июл 31 2012, 23:001. нет определенных критериев для поиска того что вам нужно.
2. не все идеи (особенно скальперские) можно реализовать на этой платформе.
ну а то что я спрашивал изначально в теме можно реализовать? что бы смотрел не только 4 последние свечки а около 10-ти?
Авг 01 2012, 18:38Попробовал переделать. Получилось на 8 свечей только на low. Большее количество данных Thinkorswim не жует. На high не смог. 0,02-отклонение. Подсвечивает 100, 50 и 25 центов. Собственно формула: def base = if ((-lowest(low,8)+low[0])<0.02) and ((-lowest(low,8)+low[1])<0.02) and ((-lowest(low,8)+low[2])<0.02) and ((-lowest(low,8)+low[3])<0.02) and ((-lowest(low,8)+low[4])<0.02) and ((-lowest(low,8)+low[5])<0.02) and ((-lowest(low,8)+low[6])<0.02) and ((-lowest(low,8)+low[7])<0.02) then 1 else 0;def base1 = (if(base > 0 ) and (((low[1] == (Ceil(low[1]*4))/4))) then 0 else 1);def base2 = (if(base > 0 ) and (((low[2] == (Ceil(low[2]*4))/4))) then 0 else 1);def base3 = (if(base > 0 ) and (((low[3] == (Ceil(low[3]*4))/4))) then 0 else 1);def base4 = (if(base > 0 ) and (((low[4] == (Ceil(low[4]*4))/4))) then 0 else 1);def base5 = (if(base > 0 ) and (((low[5] == (Ceil(low[5]*4))/4))) then 0 else 1);def base6 = (if(base > 0 ) and (((low[6] == (Ceil(low[6]*4))/4))) then 0 else 1);def base7 = (if(base > 0 ) and (((low[7] == (Ceil(low[7]*4))/4))) then 0 else 1);def base8 = (if(base > 0 ) and (((low[8] == (Ceil(low[8]*4))/4))) then 0 else 1);;plot baseall = if(base1 == 0 or base2 == 0 or base3 == 0 or base4 == 0 or base5 == 0 or base6== 0 or base7 == 0 or base8
Авг 01 2012, 22:48== 0 ) then 0 else 1;AssignBackgroundColor (if (baseall == 0) then Color.green else Color.black);
Тут вот какое дело. Перелицевать готовую формулу сложности то особой нет. Но вот такую, которая подсвечивала бы моменты когда акция лупит в уровень с заданным отклонением но не перелетает его, у меня сделать тямы нет.
Авг 01 2012, 23:37наверное ошибка.. когда первый раз упоминается then 1 else 0, а надо наоборот then 0 else 1
Авг 02 2012, 17:12Проверяйте. У меня работает.
Авг 02 2012, 17:50Всем привет. Тоже торгую по похожей формуле на Strategy Desk. Как раз задумался о ней на Thinkorswim.
Авг 07 2012, 21:42В коде разобрался за исключением момента расчета круглых уровней. Точнее расчет расшифровал, но ведь получается, что уровни ищутся всегда выше цены. т.е. если цена 23.02, то поиск идет по 23.50, а не по 23.00. А если цена 48.53, то поиск идет уровня 49, а не 48.50.
Хотя проверил и такая тактика тоже работает неплохо, и случайно захватывает и нижние уровни иногда..
Короче я участвую в разработке ))) На досуге подумаю, как получше сформулировать код..
вот тут дофига для баз скриптов сделал. все на основе выложенного родилосьhttp://nyser.ru/download/
Мар 04 2015, 10:37