понедельник, 5 сентября 2011 г.

Автоматическая окраска баз на графике ThinkOrSwim

Нажми на изображение для увеличения

Написал скрипт, который выкрашивает на графике бары базы в зеленый цвет. Мне он помогает делать домашку, т.к. позволяет быстро определять дает ли акция моменты для входа с маленьким риском. Базы более 5 центов скрипт не ищет. Вот код:



#by Egor Masalskiy
#last modify 08.09.2011
input period = {default DAY, WEEK};
input lenght = 3;
input periodRangeFor_base2cent =  0.3;
input periodRangeFor_base3cent = 0.5;
input periodRangeFor_base4cent = 0.8;
input periodRangeFor_base5cent = 1.2;
def BASE = Highest(high, lenght) - Lowest (low, lenght);
AssignPriceColor( if 
(high(period = period)[1] - low(period = period)[1]) > periodRangeFor_base5cent and BASE <= 0.05 then Color.CYAN else if
(high(period = period)[1] - low(period = period)[1]) > periodRangeFor_base4cent and (high(period = period)[1] - low(period = period)[1]) <= periodRangeFor_base5cent and BASE <= 0.04 then Color.CYAN else if
(high(period = period)[1] - low(period = period)[1]) <= periodRangeFor_base4cent and (high(period = period)[1] - low(period = period)[1]) > periodRangeFor_base3cent and BASE <= 0.03 then Color.CYAN else if
(high(period = period)[1] - low(period = period)[1]) <= periodRangeFor_base3cent and (high(period = period)[1] - low(period = period)[1]) > periodRangeFor_base2cent and BASE <= 0.02 then Color.CYAN else if
(high(period = period)[1] - low(period = period)[1]) <= periodRangeFor_base2cent  and BASE <= 0.01 then Color.CYAN
else Color.white);


Описание опций скрипта:
     period - выбор интервала для определения диапазона изменения цен в акци (день или неделя)
     lenght - выбор длины базы (кол-во баров), уменьшение параметра увеличивает чувствительность, увеличение параметра повышает качество определения баз
     periodRangeFor_base2cent - выбор размера диапазона изменения цен для окрашивания базы размером в 2 цента
     periodRangeFor_base3cent - выбор размера диапазона изменения цен для окрашивания базы размером в 3 цента
     periodRangeFor_base4cent - выбор размера диапазона изменения цен для окрашивания базы размером в 4 цента
     periodRangeFor_base5cent - выбор размера диапазона изменения цен для окрашивания базы размером в 5 центов
Последние четыре опции нужны для того что бы скрипт красил более узкие бары на акциях, которые ходят меньше, и красил более широкие базы на акциях, которые ходят больше. Если вам не важно соотношение размера базы и размера дневного движения акции, то просто поставьте значение periodRangeFor_base5cent минимальным.

P.S. Как вставить индикатор в ThinkOrSwim описано здесь.

12 комментариев:

  1. Здравствуйте. Не могли бы Вы переделать скрипт для 2х минутного графика, где подсвечивало базы до 7 центов? Заранее благодарен)

    ОтветитьУдалить
  2. #by Egor Masalskiy
    #last modify 05.09.2011
    input period = {default DAY, WEEK};
    input lenght = 4;
    input periodRangeFor_base2cent = 0.3;
    input periodRangeFor_base3cent = 0.5;
    input periodRangeFor_base4cent = 0.8;
    input periodRangeFor_base5cent = 1.0;
    input periodRangeFor_base7cent = 1.2;
    def BASE = Highest(high, lenght) - Lowest (low, lenght);
    AssignPriceColor( if
    (high(period = period) - low(period = period)) > periodRangeFor_base7cent and BASE <= 0.07 then Color.green else if
    (high(period = period) - low(period = period)) > periodRangeFor_base5cent and (high(period = period) - low(period = period)) <= periodRangeFor_base7cent and BASE <= 0.05 then Color.green else if
    (high(period = period) - low(period = period)) > periodRangeFor_base4cent and (high(period = period) - low(period = period)) <= periodRangeFor_base5cent and BASE <= 0.04 then Color.green else if
    (high(period = period) - low(period = period)) <= periodRangeFor_base4cent and (high(period = period) - low(period = period)) > periodRangeFor_base3cent and BASE <= 0.03 then Color.green else if
    (high(period = period) - low(period = period)) <= periodRangeFor_base3cent and (high(period = period) - low(period = period)) > periodRangeFor_base2cent and BASE <= 0.02 then Color.green else if
    (high(period = period) - low(period = period)) <= periodRangeFor_base2cent and BASE <= 0.01 then Color.green
    else Color.white);

    ОтветитьУдалить
  3. Здравствуйте! хотел поставить скрипт по базе, не получилось, пишет ,что ошибка. подскажите, что я не правильно делаю при установке. и возможно ли написать индикатор который отрисовывает горизонтальные линии по круглым числам. например-10,10.50,11,11.50 и так далее. С Уважением Юрий.

    ОтветитьУдалить
  4. Поищите в гугле как устанавливать индикаторы в ТОС. Написать индикатор отрисовывающий линии можно и это не сложно. Просто мне это не нужно и я его писать не буду! =) Вообще для ваших целей можно и без индикатора, просто поставьте в опциях чарта период сетки 50 центов и все. А если все же он необходим, то откройте окно создания индикатора, там по умолчанию будет написана строчка, замените слово close на нужную вам цифру и индикатор вам отрисует линию на этой цифре. Прокопируйте эту строку несколько раз и вбейте все необходимые вам уровни. На этом уроки программирования я заканчиваю, больше просьб что бы не было. Я вообще программировать не умею, неделю назад впервые открыл окно редактирования индикатора в ТОСе. Так что осваивайте этот процесс - это не сложно.

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

    ОтветитьУдалить
  6. Это реализовано в блоке фильтров для скринера.

    ОтветитьУдалить
  7. он некоректно показывает, думал, можно реализовать это графически

    ОтветитьУдалить
  8. У всех все корректно! А у вас не корректно... =)) Ну если сумели подумать, то и сами напишите что именно вам нужно! Я делаю только для себя. Я трейдер, а не программист!

    ОтветитьУдалить
  9. НАРОД! НЕ ХОТИТЕ УЧИТЬСЯ ДЕЛАТЬ САМИ - НАНИМАЙТЕ ТЕХ КТО БУДЕТ ДЕЛАТЬ ЭТО ЗА ВАС! Т.е. либо учитесь, либо ищите программистов, которые этим зарабатывают.

    ОтветитьУдалить
  10. извини, я не хотел ни чего обидного сказать...

    ОтветитьУдалить
  11. Да ничего обидного сказано и не было... Просто очень надоели те кто просит им какой-нибудь скрипт написать! Люди не хотят тратить время что бы учиться, а я значит должен тратить свое время, что бы кому то что-то писать?! Учитесь - самим пригодится! Ни кого не нужно будет просить, сами прокодируете всю свою стратегию...

    ОтветитьУдалить
  12. Best 10 Casinos Near Fort Lauderdale, Florida - MapYRO
    Mapyro is a top spot in 안성 출장안마 Florida, located 진주 출장안마 in Fort Lauderdale, Florida. Mapyro 시흥 출장샵 is a top spot in Florida, located 통영 출장안마 in Fort Lauderdale, 안동 출장마사지 Florida. Mapyro is a top spot in

    ОтветитьУдалить