Терминал Thinkorswim

dmitrytkachev

NYSE-трейдер
Thinkorswim формулы и фильтры для ТОС



разница хаев:
plot Diff = round((high-high[1]),2)*100;
Diff.AssignValueColor(if Diff >= 0 then Color.GREEN else Color.ORANGE);
AssignBackgroundColor(if open - high[1] > 0.1 then Color.DARK_GRAY else Color.BLACK);

местонахождение ласта к хаю (при приближении к хаю на 15 центов -подсвечивает):
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 = high;
AssignBackgroundColor(if Diff > close then Color.BLACK else Color.GREEN);

спред:
plot Diff = round((Ask - Bid), 2) * 100;
Diff.AssignValueColor(if Diff <= 5 then Color.PINK else Color.BLUE);

Спред 2
plot Diff = round((Ask - Bid), 2) * 100;
Diff.AssignValueColor(if Diff <= 5 then Color.YELLOW else Color.RED);


разница лоу:
plot Diff = round((low[1] - low),2)*100;
Diff.AssignValueColor(if Diff >= 0 then Color.RED else Color.ORANGE);
AssignBackgroundColor(if low[1] - open > 0.1 then Color.DARK_GRAY 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);

лоу:
plot Diff = low;
AssignBackgroundColor(if Diff < close then Color.Black else Color.RED);

База
Plot base = Highest(high, 5) - lowest (low, 5); ( cтавим Agrigation 1 m). (цифра 5 это количество баров взятых в базу,можно ее менять)

База на хай или лоу
High-low - plot Diff = (close-high[1])*100>= (high - high[1] - 0.08)*100 or (low[1] - close)*100 >= (low[1] - low -0.08)*100 or close >= high or close >= high; AssignBackgroundColor( if close >= high then Color.Green else if close <= low then Color.RED else Color.BLACK); (Agrigation ставим D)

Формула для опеределения плавности в акции :
plot bu = high-low < 0.1 and high[1]-low[1] < 0.1 and high[2]-low[2] < 0.1 and high[3]-low[3] < 0.1 and high[4]-low[4] < 0.1 and high[5]-low[5] < 0.1 and high[6]-low[6] < 0.1 and high[7]-low[7] < 0.1 and high[8]-low[8] < 0.1 and high[9]-low[9] < 0.1 and high[10]-low[10] < 0.1 and high[11]-low[11] < 0.1 and high[12]-low[12] < 0.1 ; bu.assignValueColor (if high-low < 0.1 and high[1]-low[1] < 0.1 and high[2]-low[2] < 0.1 and high[3]-low[3] < 0.1 and high[4]-low[4] < 0.1 and high[5]-low[5] < 0.1 and high[6]-low[6] < 0.1 and high[7]-low[7] < 0.1 and high[8]-low[8] < 0.1 and high[9]-low[9] < 0.1 and high[10]-low[10] < 0.1 and high[11]-low[11] < 0.1 and high[12]-low[12] < 0.1 then color.WHITE else color.BLACK); assignBackgroundColor (if highest(high, 5) >= highest (high,200) then color.DARK_GREEN else if lowest (low,5) <= lowest (low,200) then color.DARK_RED else color.BLACK);
1- показывает если последние 11 свечек акции имеют размер менее 10 центов каждая. +подсвечивает если хай/лоу последних 5 свечей больше или равен хаю/лоу за последние 200 свечей.. Ставится на М5, М1, для определения плавности акции, в которой уже была обнаружена сверх-активность..

Сортировка списка по хай/лоу.
Подсветит обновления хай/лоу. Агригейшн дневка.
plot Diff = (close-high[1])100>= (high - high[1] - 0.08)100 or (low[1] - close)100 >= (low[1] - low -0.08)100 or close >= high or close >= high; AssignBackgroundColor( if close >= high then Color.Green else if close <= low then Color.RED else Color.BLACK);

Формула фиксирующая изменение обьема
plot Diff = (if volume > 10000 then round ((((high - low)/(AverageTrueRange(ATRLength = 10) ) 100 ))-100, 2) else 0);

Формула показывает уровни, по типу чашек с ручками и треугольники
plot hi = (highest(high,120)[5]+0.01)- close <=0.05 and (highest(high,120)[5]+0.01) >=highest (high, 6) or close - (lowest(low, 120)[5]-0.01) <=0.05 and (lowest(low, 120)[5]-0.01) <=lowest (low,6); AssignBackgroundColor (if (highest(high,120)[5]+0.01)- close <=0.02 and (highest(high,120)[5]+0.01) >=highest (high, 6) then color.GREEN else if close - (lowest(low, 120)[5]-0.01) <=0.02 and (lowest(low, 120)[5]-0.01) <=lowest (low,6) then color.RED else color.BLACK);

Показывает цену возле хая/лоу за последние 50 свечек в пределах 10 центов при условии что текущая цена не выше хай/лоу последних 10 свечек + текущий объем более 30000 и текущий хай/лоу еще не обновил хай/лоу за 50 свечек. + подсвечивает сигналы соответствующим цветом . Агригейшн 1 день -
plot Diff = Highest(high, 50)[1]-close <=0.1 and close < Highest(high, 10)[1]+0.06 and high < Highest(high, 50)[1] and volume > 30000 or close- lowest(low, 50)[1] <=0.1 and close > lowest(low, 50)[1]-0.06 and low > lowest(low, 50)[1]-0.06 and volume > 30000; AssignBackgroundColor (if Highest(high, 10)[1]-close <=0.1 and close < Highest(high, 10)[1]+0.06 and high < Highest(high, 10)[1] then color.DARK_green else if close- lowest(low, 10)[1] <=0.1 and close > lowest(low, 10)[1]-0.06 and low > lowest(low, 10)[1]-0.06 then color.DARK_RED else color.BLACK);

Показывает разницу объемов в thinkorswim + светит если стак обновил хай/лоу за 30 свечек на объеме.
plot Diff=round((volume-volume[1])/1000); Diff.AssignValueColor(if volume-volume[1] >= 0 then Color.white else Color.gray); AssignBackgroundColor (if volume > volume[1] and high-low>=0.1 and high == highest (high, 30) or volume > volume[1] and high-low>=0.1 and low ==lowest (low , 30) then color.VIOLET else Color.black);

Показывает разницу движения за 10 свечей и текущей свечки + подсвечивает, когда цена приближается а хай или лоу. агригейшн 1 день
plot Diff = round ((AverageTrueRange(ATRLength = 10) - (high - low)), 2) * 100; AssignBackgroundColor(if (close-high[1])100>= (high - high[1] - 0.08)100 then Color.DARK_GREEN else if (low[1] - close)100 >= (low[1] - low -0.08)100 then Color.DARK_RED else Color.BLACK);

Разница между текущим обьемом и прошлым + подсвечивает всплески обьема с движением.
plot Diff=round((volume-volume[1])/1000); Diff.AssignValueColor(if volume-volume[1] >= 0 then Color.white else Color.gray); AssignBackgroundColor (if volume > volume[1] and high-low>=0.1 then color.VIOLET else Color.black);

Расстояние до лоу, за последние 150 свечей + счетит, если оно меньше 10 центов.
plot h = Lowest (low, 150)-close; assignBackgroundColor (if Lowest (low, 150)-close then color.DARK_rED else color.BLACK);

Расстояние до хай, за последние 150 свечей + счетит, если оно меньше 10 центов.
plot h = Highest (high, 150) - high; assignBackgroundColor (if highest (high,150) - close <0.1 then color.DARK_GREEN else color.BLACK);

Берет размер текущей свечи и отнимает это значение от размера среднедневного движения. В итоге если текщая свеча получается больше чем средние свечи за последнее время, то можно утверждать, что в текущей свече интерес трейдеров больше чем обычно. Ставим на дневку и можем в реальном времени отслеживать все самые интересные акции за сегодняшний день з нашего списка. Зеленым цветом подсвечивает формацию "внутренний день". Т.е. если у акции был рост и хай/лоу сегодняшнего дня находятся в пределах хай/лоу вчерашнего дня, то оно будет его подсвечивать Зеленым и красным цветами соответственно.
AssignBackgroundColor (if low>low[1] and high<high[1] and high[2]>=highest (high, 20) then color.GREEN else if low>low[1] and high<high[1] and low[2]<=lowest (low, 20) then color.RED else color.BLACK);

Сколько прошла акция от среднего значения
plot Diff = (if volume > 10000 then round ((((high - low)/(AverageTrueRange(ATRLength = 10) ) *100 ))-100, 2) else 0);

Подсвечивает, когда стохастик заходит в зоны перепроданности перекупленности
Plot s = stochasticFull(DPeriod = 3, KPeriod = 8, smoothingType = "EMA"; AssignBackgroundColor (if s >= 80 then color.DARK_RED else if s <=20 then color.DARK_GREEN else color.BLACK); ..... DPeriod, KPeriod,
smoothingType можно менять по своему усмотрению.
 

Misanthrope

Активный участник
Дмитрий, есть ли какое-нибудь руководство по написанию формул для ТОС на русском?
Есть отл. идея. Надо формулу написать. В Strategy Desk в скринере неосуществима, может в ТОСе получится.
 

dmitrytkachev

NYSE-трейдер
Дмитрий, есть ли какое-нибудь руководство по написанию формул для ТОС на русском?
Есть отл. идея. Надо формулу написать. В Strategy Desk в скринере неосуществима, может в ТОСе получится.
Мне такое не известно. Попробуйте обратиться на _http://hamaha.net/dashboard/tab:group/g:thinkorswim_skachat_na_russkom - там вроде есть спецы в написании формул

а с какого сайта регистрироваться?захожу на thinkorswim.com ,все равно в TD Ameritrade отправляет.я уже там 15 раз регился.банят и все,незнаю как уже быть
Там и надо регистрироваться. Если банят значит что то делаете не по инструкции. Данные правильные (реальные, не абракадабру) вводите? У меня одному аккаунту уже года полтора, другому около года - и не один не банят.
 

Dendiamond

Прохожий
Мне такое не известно. Попробуйте обратиться на _http://hamaha.net/dashboard/tab:group/g:thinkorswim_skachat_na_russkom - там вроде есть спецы в написании формул


Там и надо регистрироваться. Если банят значит что то делаете не по инструкции. Данные правильные (реальные, не абракадабру) вводите? У меня одному аккаунту уже года полтора, другому около года - и не один не банят.

и реальные и не реальные вводил.в тех поддержку писал,сказали,что вас заблокировали,потому-что не получили от вас W-8BEN.стабильно 2 дня после реги работает и банят.делал все как по инструкции.года 3 назад я тоже регился,когда ещё Америтрейда не было,все работало.но последние полгода не было возможности торговать и не заходил в ТОС и они видимо из-за этого мой старый аккуант удалили.что теперь делать,фиг знает
 

Teminson

Новичок форума
Подскажите можно ли в Thinkorswim смотреть историю цен по сельхозтоварам, металлам.
Только историю не на срок фьючерсов (1-2 мес.) а более длинную (за год).

Если не Thinkorswim то где возможно?
 

dmitrytkachev

NYSE-трейдер
Подскажите можно ли в Thinkorswim смотреть историю цен по сельхозтоварам, металлам.
Только историю не на срок фьючерсов (1-2 мес.) а более длинную (за год).

Если не Thinkorswim то где возможно?
e645d0ddc456.png


На представленном графике платина с апреля 2003 года
 

dmitrytkachev

NYSE-трейдер
Ели вы имеете ввиду внутридневную историю то 20 последних дней доступно в интервале до 1 часа и 180 дней от 1 часа.
 

dmitrytkachev

NYSE-трейдер
Thinkorswim Base Indicator


Формула
plot Diff = (close-high[1])*100>= (high - high[1] - 0.08)*100 or (low[1] - close)*100 >= (low[1] - low -0.08)*100 or close >= high or close >= high; AssignBackgroundColor( if close >= high then Color.Green else if close <= low then Color.RED else Color.BLACK);
 

koligor7

Почетный гражданин
Дмитрий, помогите, пожалуйста, разобраться с настройками Volume Profile или TPO Profile. В мануале вроде написано, что можно разбивать профиль на неск. периодов, но не вижу как это сделать? Хочу его делить по времени на евросессию и амер. сессию. И еще - я так понял, что нач. баланс IB не отображается? Также не ясно по параметрам on expansion и profiles.
 
Последнее редактирование:

dmitrytkachev

NYSE-трейдер
Никакими индикаторами не пользуюсь поэтому к сожалению ничем не смогу помочь. Если владеете английским попробуйте спросить в чате платформы.
 

koligor7

Почетный гражданин
Никакими индикаторами не пользуюсь поэтому к сожалению ничем не смогу помочь. Если владеете английским попробуйте спросить в чате платформы.
Я тоже не использую, но это не классич. индикатор на средних, а скорее - визуализация гор. объемов, т.е. ленты. Будем искать (с) ))
 
Последнее редактирование:

dmitrytkachev

NYSE-трейдер
Индикаторы для thinkorswim

Рисует горизонтальные уровни : вчерашние опен, хай, лоу, клоуз, + еще сегодняшний опен код :
input offset = 1; input offset2 = 1; input offset3=0; input period = {default DAY, "2 DAYS", "3 DAYS", "4 DAYS", WEEK, MONTH, "OPT EXP"}; input period2 = {default DAY, "2 DAYS", "3 DAYS", "4 DAYS", WEEK, MONTH, "OPT EXP"}; plot Data = high(period = period)[offset]; Data.SetPaintingStrategy(PaintingStrategy.DASHES); Data.SetDefaultColor(GetColor(1)); plot Data2 = low(period = period)[offset2]; Data2.SetPaintingStrategy(PaintingStrategy.DASHES); Data2.SetDefaultColor(GetColor(5)); plot Data3 = close(period = period)[offset]; Data.SetPaintingStrategy(PaintingStrategy.DASHES); Data.SetDefaultColor(GetColor(1)); plot Data4 = open(period = period)[offset2]; Data2.SetPaintingStrategy(PaintingStrategy.DASHES); Data2.SetDefaultColor(GetColor(5)); plot Data5 = open(period = period)[offset3]; Data2.SetPaintingStrategy(PaintingStrategy.DASHES); Data2.SetDefaultColor(GetColor(5));

Хай лоу дня и средняя между ними
# DAYRANGE
# (c) 2009 http://www.thinkscripter.com
# [email protected]
# Last Update 14 Feb 2009

input showOnlyToday = YES;
input Market_Open_Time = 0930;
input Market_Close_Time = 1600;

def day = getDay();
def lastDay = getLastDay();
def isToday = if(day==lastDay,1,0);
def shouldPlot = if(showOnlyToday and isToday, 1,if(!showOnlyToday,1,0));

def pastOpen = if((secondsTillTime(Market_Open_Time) > 0), 0,1);
def pastClose = if((secondsTillTime(Market_Close_Time) > 0), 0,1);
def marketOpen = if(pastOpen and !pastClose, 1, 0);
def firstBar =if (day[1] != day, day-1, 0);

rec regHoursHigh = if(high > regHoursHigh[1] and marketOpen, high, if(marketOpen and !firstBar, regHoursHigh[1], high));
plot Regular_Hours_High = if(marketOpen and shouldPlot, regHoursHigh, Double.nan);
Regular_Hours_High.SetStyle(curve.points);
Regular_Hours_High.SetDefaultColor(color.green);
Regular_Hours_High.SetLineWeight(2);

rec regHoursLow = if(low < regHoursLow[1] and marketOpen, low, if(marketOpen and regHoursLow[1] > 0 and !firstBar, regHoursLow[1],low));
plot Regular_Hours_Low = if(marketOpen and shouldPlot, regHoursLow, double.nan);
Regular_Hours_Low.SetLineWeight(2);
Regular_Hours_Low.SetStyle(curve.points);
Regular_Hours_Low.SetDefaultColor(color.red);

plot Midpoint_Pivot = if(marketOpen and shouldPlot, (Regular_Hours_High + Regular_Hours_Low) / 2, double.nan);
Midpoint_Pivot.SetLineWeight(2);
Midpoint_Pivot.SetDefaultColor(color.white);
Midpoint_Pivot.SetPaintingStrategy(PaintingStrategy.POINTS);

Индюк для тоса показывающий фракталы на графике
input fractal_length = 5; def up_cond1 = high == Highest(high, fractal_length); def up_cond2 = high > Highest(high, fractal_length)[fractal_length]; def up_cond3 = if close[-fractal_length] then high > Highest(high, fractal_length)[-fractal_length] else high > Highest(high, fractal_length); def frac_up = up_cond1 && up_cond2 && up_cond3; def down_cond1 = low == Lowest(low, fractal_length); def down_cond2 = low < Lowest(low, fractal_length)[fractal_length]; def down_cond3 = if close[-fractal_length] then low < Lowest(low, fractal_length)[-fractal_length] else low < Lowest(low, fractal_length); def frac_down = down_cond1 && down_cond2 && down_cond3; plot up = if frac_up then high else double.NaN; plot down = if frac_down then low else double.nan; up.SetPaintingStrategy(paintingStrategy.ARROW_down); down.SetPaintingStrategy(paintingStrategy.ARROW_up);

Уровень закрытия предыдущего дня
plot prevClose = close(period=”day”)[1];input showOnlyToday = YES;
 

dmitrytkachev

NYSE-трейдер
Thinkorswim инструкция по написанию формул

Краткое описание: Calculated: Выбор данных для подсчета. "Volume" - суммирует объём, в том числе и по правилу Тима Орда; "Volume Up-Down" - суммирует отдельно объёмы ап-баров и даун-баров, затем складывает результаты; "Force Index" - суммирует произведение объёма на разность цен закрытия текущего и прошлого баров; "Close-Close" - суммирует разность цен закрытия текущего и прошлого баров; "Bars" - суммирует количество баров; "Total Bars" - суммирует полное количество баров за всю историю текущего графика; "Fractal Numbers" - показывает порядковые номера фракталов. AverageOnBars: Усреднять на количество баров в волне по правилу Тима Орда. ConsiderLastBar: Учитывать последний бар прошлой волны, как первый бар текущей, по правилу Тима Орда. PercentValue: Показывать данные в процентах, по правилу Тима Орда. при PercentValue = 0: вывод в % отключен; при 1: изменение на % с соседним слева значением фрактала; при 2: изменение в % с соседним слева значением фрактала; при 3: изменение на % со значением, отстоящим через один фрактал слева; при 4: изменение в % со значением, отстоящим через один фрактал слева; DividerResult: Делитель результата вычислений для удобства просмотра. RoundResult: Округление результата вычислений для удобства просмотра. nДо знака после запятой: от 0 до ~. ZigZagParam: Резко увеличивает количество фракталов, при выборе большего значения кол-во фракталов уменьшается. При "0" включается самый широкий зиг-заг. ZigZagMultiplier: Чувствительность при построении фракталов, при увеличении значения количество фракталов уменьшается. VisibleLabel: Показывает строку состояния в верхнем левом углу. VisibleZigzag: Показывает зиг-заг, вписанный во фракталы. BeginVisibleDivider: Показывает определённое этим делителем количество обработанных фракталов на графике. Значения: от 0, тогда не учитывается и количество определяться датой; при 1 показывает все фракталы на графике; при 2 и т.д. оставляет соответствующую часть фракталов на графике (2=50%, 3=33%, 4=25%...). При расчете учитывается количество баров по умолчанию в TOS'е на определённом таймфрейме, поэтому при изменении количества баров возможно надо будет подстроить этот делитель. BeginVisibleDate: С этой даты на графике начинает обработку фракталов, только если BeginVisibleDivider=0.
 

1qaz2wsx

Прохожий
Здравствуйте dmitrytkachev, как вывести объемы не внизу под графиком, а на графике вертикально(торговый профиль) за день, неделю, месяц?
 

dmitrytkachev

NYSE-трейдер
Здравствуйте dmitrytkachev, как вывести объемы не внизу под графиком, а на графике вертикально(торговый профиль) за день, неделю, месяц?
Горизонтальные всмысле? Нужно индикатор volume profile на требуемый график наложить.
 
Верх