Поиск баз на круглых уровнях для Thinkorswim

Многие мои знакомые трейдеры торгуют отбои от круглых уровней уровней. Фильтр, показывающий акции с такими проторговками досточно давно придуман в Strategy Desk. Но в этом терминале есть существенный недостаток – с некоторой задержкой грузятся графики. И некоторые трейдеры только из-за этого фильтра пользуются SD.

Недавно я решил поискать подобный фильтр для TOS в интернете, и таки наткнулся на форумную ветку с разработкой этой темы (я так понял, что автор изначального кода некий Amadey_MF. Лично с ним, к сожаленью, не знаком, но наверно хороший парень =). Ну вообщем мы легких путей не ищем, и значит я пришел к тому, что разобрался, как устроен язык программирования TOS, разобрал код найденного скрипта, нашел несколько ошибок, сделал несколько существенных исправлений и вуаля – появился очень хороший скрипт (на мой субъективный взгляд).

Теперь в подробностях:
Описание: фильтр анализирует последние 4 свечи, начиная с текущей. В них сначала ищет, где Hi каждой из свечей не отличается от максимального Hi больше чем на величину отклонения (указывается при настройке). Потом тоже самое для Low тех же 4 баров.
Дальше ищет, чтоб найденная база Hi\Low подходила снизу\сверху к ближайшему круглому уровню (50 или 100 центов), т.е. Hi\Low хотя бы одной из свечей базы был прямо на этом уровне цент в цент. Если такие варианты находятся, то ячейка напротив нужной акции подсвечивается зеленым (для лонговых вариантов) или красным (для шортовых вариантов). Соответственно значение в ячейке 1 или 2 для удобной сортировки.

Установка и настройка:
Нам нужно добвить новую колонку в WatchList. Для этого:
1. Щелкаем правой кнопкой мышки по заголовку любой колонки
2. В выпадающем меню выбираем пункт Customize

Шаг 1

3. В открывшемся окне Watchlist в левой колонке выбираем любой из пунктов Custom и
4. жмем на Add items (появляется окно Custom Quote Formula)
5. Придумываем название для колонки и вводим в поле Column name
6. В поле Aggregation указываем таймфрейм, на каком хотим искать проторговки.
7. Нужно снять галочку “Include Extended Session”, чтоб при расчетах не учитывались небиржевые котировки (или какие то скрытые, точно не понял как перевести). Тогда расчет будет точнее.
8. Потом переходим на вкладку thinkScript Editor
9. Вставляем в главное поле этот код:

def iDiff = 0.01; # задайте максимальное отклонение в центах/ Amadey_MF

def iLowest = lowest(low,4);
def iHighest = highest(high,4);

def bBaseLow = if 
((low[0]-iLowest)<=iDiff) and 
((low[1]-iLowest)<=iDiff) and 
((low[2]-iLowest)<=iDiff) and 
((low[3]-iLowest)<=iDiff)
then 1 else 0; 
def bBaseHigh = if 
((iHighest-high[0])<=iDiff) and 
((iHighest-high[1])<=iDiff) and 
((iHighest-high[2])<=iDiff) and 
((iHighest-high[3])<=iDiff)
then 1 else 0; 

def bFigureLow = if 
(low[1] == (Floor(low[1]*2))/2) or 
(low[2] == (Floor(low[2]*2))/2) or 
(low[3] == (Floor(low[3]*2))/2) or
(low[4] == (Floor(low[4]*2))/2) 
then 1 else 0;
def bFigureHigh = if
(high[1] == (Ceil(high[1]*2))/2) or
(high[2] == (Ceil(high[2]*2))/2) or 
(high[3] == (Ceil(high[3]*2))/2) or
(high[4] == (Ceil(high[4]*2))/2)
then 1 else 0;

plot bBase = if (bBaseLow and bFigureLow) then 1 else if (bBaseHigh and bFigureHigh) then 2 else 0;

AssignBackgroundColor (if (bBase == 1) then Color.LIGHT_GREEN else if (bBase == 2) then Color.LIGHT_RED else Color.black);
bBase.AssignValueColor (if (bBase > 0) then Color.black else Color.CURRENT);
 #Шаблон с форума Hamaha.net и переработан Игорем (www.nyser.ru).
 #Скрипт ищет базы из 4 последних свечей, привязанные к уровням 50 и 100 центов. 
 #Теперь скрипт понимает где может быть ближайший уровень - вверху или внизу (а не ищет всё, что выше цены, как раньше). 
 #Для более наглядной работы при установке скрипта необходимо снять галочку Include Extended Session (рядом с значком таймфрейма). 
 #Иначе будут считаться еще внебиржевые принты. 

10. Жмем ОК
11. Еще раз ОК
Шаг 2

Через несколько секунд ( у меня 16) подгрузится результат, примерно такой, как на картике ниже.
Итог

По поводу этого фильтра в планах хорошенько протестировать в торговле этот фильтр, и в ближайшем будущем доработать его дополнительными примочками по вкусу (добавить фильтр объема, АТР, тренда и т.д., к чему душа ляжет).
Короче если будет это интересно, то следите за новостями, мы с вами не прощаемся =))))).

Опубликовано 10 Авг 2012 39,721 просмотров | Рубрика: Инструменты торговли
Поделись с друзьями:

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

  1. #1Рустам @ 2012-8-15 02:15 Ответ

    Отлично сделано!!!

    Можешь пожалуйста сделать точно так же как и в SD, чтобы было 10 баров (можно использовать для отображения Quote Trend), и если тот или иной бар удовлетворяет требованиям фильтра, то тогда он окрашиваеться или в красный (под фигруой или .50) или зеленым (над фигурой или .50). Тогда можно улучшить фильтрацию и четко видеть, что происходит с бумагой возле того или иного уровня.

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

    PS Молодец что разобрался с языком и реализовал свою идею на практике! Далеко пойдешь.
    Если будут какие-то дополнительные вопросы – пиши в личку :)

    • #2IG @ 2012-8-15 07:31 Ответ

      Спасибо. :)
      Посмотрю на досуге, что можно замутить. Хотя так тоже получается неплохо, акции уже с готовыми базами всплывают из списка. Не надо сомневаться, плохая там база или не очень.
      А личка – это где? =)

  2. #3Сергей @ 2012-8-18 18:46 Ответ

    Спасибо. Фильтр хорош. А можно ли в TOS сделать еще один фильтр-на пробой. Чтобы подсвечивал не при подходе к уровню, а после пробития на 1-3 цента, а потом больше не светил. И чтобы уровень был только целое число и 50центов. У меня никак не получается.

    • #4IG @ 2012-8-19 09:53 Ответ

      Так то можно. Я даже где-то видел в инете подобное.

      • #7Сергей @ 2012-8-26 07:10 Ответ

        Полазил в инете-подобное не нашел. Если знаете где-киньте ссылку пожалуйста.

        • #11IG @ 2012-8-28 09:30 Ответ

          Вот что получилось. Я попробовал на закрытом рынке. Вроде корректно показывает.

          • #13Назар @ 2012-8-28 13:29 Ответ

            Спасибо.. =) супер..

    • #14Сергей @ 2012-8-30 23:28 Ответ

      Спасибо, но я хотел немного не то. Возможно ли сделать такой фильтр,чтобы подсвечивал не при подходе к хай или лоу сегодняшнего или предыдущего дня, а после пробития этих уровней на 1-3 цента, а потом больше не светил. И чтобы эти уровни были только целое число и 50центов.

    • #16Сергей @ 2012-9-6 16:29 Ответ

      Большое спасибо. Но, не сочтите назойливостью , я хотел немного не то. Посмотрите пожалуйста акции за 5 сентября. WLL-пробой 47, CTB-пробой вчерашнего хая по 20,5 и пробой по 21. GNC- пробой 40, HOLX-пробой 20, BONT-пробой 12. Возможно ли реализовать такой фильтр, чтобы отрабатывал уровни вчерашнего и сегодняшнего дня на целых числах и 50 центов. И чтобы подсвечивал не при подходе к хай или лоу сегодняшнего или предыдущего дня, а после пробития этих уровней на 1-3 цента, а потом больше не светил.

      • #17IG @ 2012-9-7 14:07 Ответ

        Короче пиши лучше в скайп. А то мы тут долго так будем общаться. :-D

  3. #5Рустам @ 2012-8-21 03:33 Ответ

    У тебя же видно, с какого имеила я написал :) Тут как раз надо смотреть каждую базу. А так получаеться полный список из всех баз за последние 10 свечей (если 5 мин, тогда почти за час), сколько свечей они коснулись или были у фигуры, их легко отфильтровать и мониторить.

    Если будет такая возможность написать, мы будем тебе ОЧЕНЬ признательны.

    • #6IG @ 2012-8-21 07:16 Ответ

      Да мне и самому интересно было бы такую штуку сделать. Буквально вчера пытался понять, как устроить такую штуку, как Quote Trend, но в языке не нашел инструкций на закрашивание квадратиков. Если бы найти хоть один уже написанный индикатор по этой технологии, то думаю, что сразу разобрался бы. Но в мануале TOSа не нашел нифига.. Может видел кто скрипты похожие?

  4. #8Назар @ 2012-8-26 22:59 Ответ

    Mне надо помощь.помогите если сможете.надо формула для watchlista,чтоби показывал акции в 15 центах от и в 15 цетах после цены high вчерашнего дня а потом больше не светил если выходит из диапазона..и то самое и для Low вчерашнего дня.
    найшов похожое… местонахождение ласта к хаю
    plot Diff = round((close-high[1]),2)*100;
    Diff.AssignValueColor(if Diff >= 0 then Color.GREEN else Color.ORANGE);
    AssignBackgroundColor(if Diff >= (high – high[1] – 0.15)*100 then Color.DARK_GREEN else Color.BLACK);

    plot Diff = round((low[1] – close),2)*100;
    Diff.AssignValueColor(if Diff >= 0 then Color.RED else Color.ORANGE);
    AssignBackgroundColor(if Diff >= (low[1] – low -0.15)*100 then Color.DARK_RED else Color.BLACK);

    но ето немного не то..мнеб по проще.чтобы напрыклад хай вчерашнего дня 39.00 то в вочлисте в диапазоне от 38.85-39.15 появилась зеленая единичка и тоже на лоу тикы красная двоичка

    • #9IG @ 2012-8-26 23:11 Ответ

      помогу, отчего же не помочь. на днях..

      • #10Назар @ 2012-8-26 23:40 Ответ

        Спасибо =) .буду ждать)

        • #12IG @ 2012-8-28 11:50 Ответ

          Вот лови. Отклонение от уровней можно задать по желанию.

  5. #18Roman @ 2012-9-10 10:21 Ответ

    Помогите написать формулу расхождения yesterday close с Last на пре-маркете, чтоб в watchlist’е видеть гайнеров и лузеров на пре-маркете

    • #19IG @ 2012-9-10 11:59 Ответ

      Так вроде там стандартный фильтр есть для этого. Зачем писать?

  6. #20Benzol @ 2012-9-10 17:01 Ответ

    А можно как-нибудь отвязать этот фильтр от 50, 100 уровней, что бы показывал на любой цене эти фигуры?

  7. #22Юра @ 2012-9-13 12:45 Ответ

    добрый день, а можно в формулу добавить опцию, чтобы еще подсвечивало базы на хай и лоу дня? спасибо.

    • #24IG @ 2012-9-13 13:26 Ответ

      вообще для вчерашних хай\лоу у меня есть код, сам им пользуюсь. а для текущих хай\лоу надо будет доработать.

  8. #23growex @ 2012-9-13 12:56 Ответ

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

    вот твой кусок кода:

    def bBaseLow = if
    ((low[0]-iLowest)<=iDiff) and
    ((low[1]-iLowest)<=iDiff) and
    ((low[2]-iLowest)<=iDiff) and
    ((low[3]-iLowest)<=iDiff)
    then 1 else 0;

    теперь то же самое:

    def bBaseLow = if sum(low-iLowest,4) == 4 then 1 else 0;

    если же текущий бар считать не нужно, то
    def bBaseLow = if sum(low[1]-iLowest,3) == 3 then 1 else 0;

    • #25IG @ 2012-9-13 13:27 Ответ

      о. спасибо, надо попрбовать, это удобно должно быть.

    • #30IG @ 2012-9-20 22:43 Ответ

      не. так не работает. надо будет подумать, как преобразовать правильно..

  9. #26Benzol @ 2012-9-17 17:12 Ответ

    Спасибо, что ответил, правда я не высидел и сам разобрался в скрипте)

    • #27IG @ 2012-9-17 17:20 Ответ

      фига ты нетерпеливый, я ж через 17 минут ответил :-D

  10. #28Юра @ 2012-9-20 22:32 Ответ

    поймал себя на мысли, что третий день юзаю и не видел зеленых единичек; не знаешь с чем это может быть связано? вроде все правильно сделал…

  11. #29Юра @ 2012-9-20 22:39 Ответ

    сори, переустановил, уже есть

  12. #31Роман @ 2012-9-26 16:10 Ответ

    Ищу формулу для thinkorswim, которая подсвечивала бы акции, когда они “бьются” в уровень и не пробивают ни на цент.. Формула баз не совсем подходит, т.к. необязательно это должна быть консолидация, достаточно что бы цена подходила к нужному уровню несколько раз.

    • #32IG @ 2012-9-26 18:33 Ответ

      буквально сегодня такая была написана. еще пару дней на тест и выложу в библиотеку

      • #33Денис @ 2012-11-23 00:48 Ответ

        Игорь, спасибо за формулу. Юзаю все время-очень помогает,-спасибо за труд. Спросить хотел, ты еще не сделал формулу о которой Роман спрашивал? А то я в загрузках не вижу ее. Спасибо заранее))

        • #34IG @ 2012-11-23 07:33 Ответ

          забыл совсем. извиняюсь. только что выложил. фильтр №30

          • #35Денис @ 2012-11-23 13:24 Ответ

            Спасибо огромное!

          • #36Денис @ 2012-11-23 13:32 Ответ

            Игорь, ошибки в формуле, не хочет работать,-можешь поправить?

            • #37IG @ 2012-11-23 20:39 Ответ

              пардон. поправил

  13. #38Михайло @ 2012-12-2 18:02 Ответ

    скажите пожалуйста а чи можно создать, который бы показывал в ТОС online акции в которых в течение последних 5-30хв.був очень большое движение, скажем акции которая по 20мин. сходила 1%, был бы очень благодарен за помощь или подсказки в направлении.

    • #39IG @ 2012-12-2 18:14 Ответ

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

  14. #40Михайло @ 2012-12-2 18:49 Ответ

    скайп свой пожалуста скинь!!

    • #41IG @ 2012-12-2 19:01 Ответ

      вверху же кнопка около поиска. нажми на значок скайпа и все )

  15. #42Александр @ 2013-3-3 04:00 Ответ

    Я хотел уточнить в чем фишка в вашей формуле, точнее:
    вы используете low[0] и high[0] как первые бары для базы, а для фигуры вы используете low[1] и high[1] тоесть предыдущий. Это опечатка или логика вычисления? Может я чтото не догоняю в 3 часа ночи? %)

  16. #43liltrader @ 2013-3-5 22:32 Ответ

    здравствуйте.
    очень помогли на самом деле формулами, за что вам спасибо…

    хотел бы спросить нет ли готовой формулы для тоса которая покаызывает крупного покупателя или продавца?

    • #44IG @ 2013-3-5 22:47 Ответ

      тос не позволяет это искать. уже пробовали.

  17. #45lilrader @ 2013-3-5 22:52 Ответ

    Спасибо за быстрый ответ.
    В Strategy Desk я просто слышал что можно было. =)))

  18. #46Андрей @ 2013-3-7 20:29 Ответ

    Всем привет Ребята подскажите пожалуйста как правильно вписать в эту формулу значения для максимального отклонения в центах у меня не получается.

  19. #47liltrader @ 2013-3-7 23:15 Ответ

    Андрей смотри в самом начале кода есть строчка:
    def iDiff = 0.01;

    это и есть отклонение в центах, если я верно вас понял.

  20. #48Дмитрий @ 2013-4-12 10:26 Ответ

    Спасибо, идея отличная. Еще допилил, сейчас показывает центовую часть цены базы. И круглые уровни видно, и четвертаки, и десятки.

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

    Не сочтите за рекламу, ссылка на скрипт на моем блоге

    • #49IG @ 2013-4-12 11:01 Ответ

      советую посмотреть в раздел “скачать”. там всё, во что развился в итоге этот скрипт

      • #50Дмитрий @ 2013-4-12 15:03 Ответ

        О, класс. Раньше этого не видел. Действительно удачная идея! Спасибо тому человеку, который это придумал ))

Ответить Александр

Отменить

(Ctrl + Enter)
» Подписаться на комментарии к этой статье по RSS