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 из них подходили к уровню, то эта акция должна выделятся.. Я уверен что это написать можно.. и думаю это будет тот фильтр который всем нам нужен..


Проголосовало: 0

Июл 29 2012, 02:57


Комментарии
growex

постить скрипты лучше в комментарии, так они имеют более менее нормальный вид.

Июл 29 2012, 11:57
maximiliano

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);

Июл 29 2012, 12:12
voland100

Можно ли сделать более строгими условия формулы? Чтобы показывало отклонение только с одной стороны уровня и если происходит прокол то больше не подсвечивает. А то показывает много акций размазанных по уровню с обоих сторон.

Июл 31 2012, 12:30
maximiliano

def basep = (if (((low[0] == low[1]) and (low[2] == low[1]) and (low[2] == low[3]))or((high[0] == high

[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-центовые уровни.

Июл 31 2012, 13:42
voland100

Здесь формула когда каждая свеча цент в цент бьет в уровень. А вот чтобы все равно подсвечивало когда одна или две свечи из заданных четырех по этой формуле 1-2 цента до уровня не дотягивает?

Июл 31 2012, 15:59
growex

maximiliano..... ;) 100% это еще не всё.....

Июл 31 2012, 21:02
maximiliano

это точно :)

Июл 31 2012, 21:28
maximiliano

voland, ну это все что у меня есть :) я сам никак не соберу то что мне надо, так же надеюсь на помощь thinkscriptеров. по идее нам надо одна и та же формула, которая качественно находила бы уровни, но увы что то тяжело она дается.

Июл 31 2012, 21:33
growex

она тяжело дается потому что
1. нет определенных критериев для поиска того что вам нужно.
2. не все идеи (особенно скальперские) можно реализовать на этой платформе.

Июл 31 2012, 23:00
maximiliano

ну а то что я спрашивал изначально в теме можно реализовать? что бы смотрел не только 4 последние свечки а около 10-ти?

Авг 01 2012, 18:38
voland100

Попробовал переделать. Получилось на 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
== 0 ) then 0 else 1;AssignBackgroundColor (if (baseall == 0) then Color.green else Color.black);

Авг 01 2012, 22:48
voland100

Тут вот какое дело. Перелицевать готовую формулу сложности то особой нет. Но вот такую, которая подсвечивала бы моменты когда акция лупит в уровень с заданным отклонением но не перелетает его, у меня сделать тямы нет.

Авг 01 2012, 23:37
maximiliano

наверное ошибка.. когда первый раз упоминается then 1 else 0, а надо наоборот then 0 else 1

Авг 02 2012, 17:12
voland100

Проверяйте. У меня работает.

Авг 02 2012, 17:50
igstik

Всем привет. Тоже торгую по похожей формуле на Strategy Desk. Как раз задумался о ней на Thinkorswim.

В коде разобрался за исключением момента расчета круглых уровней. Точнее расчет расшифровал, но ведь получается, что уровни ищутся всегда выше цены. т.е. если цена 23.02, то поиск идет по 23.50, а не по 23.00. А если цена 48.53, то поиск идет уровня 49, а не 48.50.

Хотя проверил и такая тактика тоже работает неплохо, и случайно захватывает и нижние уровни иногда..
Короче я участвую в разработке ))) На досуге подумаю, как получше сформулировать код..

Авг 07 2012, 21:42
igstik

вот тут дофига для баз скриптов сделал. все на основе выложенного родилось http://nyser.ru/download/

Мар 04 2015, 10:37
Наш канал