Готовые коды сканеров, фильтров и индикаторов для торговой и графической платформы ThinkOrSwim. Все коды предоставляются компанией Dolphin Traders абсолютно бесплатно. Список будет постоянно дополнятся новыми сканерами, фильтрами, индикаторами.

Ярлыки с информацией (label)

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

Label

Average True Range — средне дневное движение акции за определенный период в центах.
ATR In Play — показывает в процентном отношении, сколько акция прошла своих ATR в текущую торговую сессию.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii
#Average True Range label
#ATR in play - Сколько своих ATR акция прошла сегодня

input ATRInPlay = {default "1", "0"};
input ATR = {default "1", "0"};    		

def iATR = Round(MovingAverage (AverageType.WILDERS, TrueRange(high(period = AggregationPeriod.DAY )[1], close(period = AggregationPeriod.DAY)[1], low(period = AggregationPeriod.DAY )[1]), 14), 2);
AddLabel (!ATR, "ATR " + iATR, if iATR <= 0.5 then Color.RED else if iATR <= 2 then Color.DARK_GREEN else Color.WHITE);
	
def iATRPlay = Round((high(period = "DAY") - low(period = "DAY")) / iATR, 2);
AddLabel (!ATRInPlay, "ATRInPlay  " + iATRPlay, if iATRPlay <= 0.5 then Color.DARK_RED else if iATRPlay <= 1 then Color.WHITE else Color.DARK_GREEN);
ATR, ATR in Play
ATR, ATR in Play

Average Volume — средний объем проторгованных акций за 14 денй.
Volume — индикатор показывает сколько акций протарговано в текущую торговую сессию.
Volume In Play — сколько проторговано объема в процентах, от среднего показателя (Volume).

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii
#Average True Range label

input AvgVolume = {default "1", "0"}; #средний объем за 65 дней
input VolumeInPlay = {default "1", "0"}; #Сколько сегодня проторговалась акция своих средних объемов за 65 дней
input Volume_ = {default "1", "0"}; #Объем за сегодня

def iAvgVolume = Round(Average (volume(period = "DAY")[1], 65) / 1000, 0);
AddLabel (!AvgVolume, "AV " + iAvgVolume + "k", if iAvgVolume <= 500 then Color.DARK_RED else Color.WHITE);

def iVolume = Round(volume(period = "DAY") / 1000, 0);
AddLabel (!Volume_, "Vol " + iVolume + "k", if iVolume <= 200 then Color.RED else Color.WHITE);

def iVolumePlay = Round(iVolume * 1000 / Average(volume(period = "DAY"), 60), 2);
AddLabel (!VolumeInPlay , "VolPlay " + iVolumePlay, if iVolumePlay <= 0.8 then Color.RED else if iVolumePlay <= 1.5 then Color.WHITE else Color.DARK_GREEN);
Average Volume, Volume, Volume in Play
Average Volume, Volume, Volume in Play

Correlation SPX — показывает корреляцию акции со SPX в процентном соотношении.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input SPY = {default "1", "0"};
def iSpy_50 = Round(Correlation(close(period = AggregationPeriod.DAY), close("SPX", period = AggregationPeriod.DAY), length = 50), 2);
AddLabel (!SPY , "With SPX " + iSpy_50, if iSpy_50 >= 0.7 then Color.DARK_GREEN else Color.WHITE);
Correlation with spy
Correlation with SPY

Market Change — показывает процентное изменение рынка (SPX). При положительном изменение, лейбел подкрашивается зеленым, при отрицательном, красным.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input market = {default "1", "0"};
def imarket = Round((close("SPX", period = AggregationPeriod.DAY)[0] - close("SPX", period = AggregationPeriod.DAY)[1]) * 100 / close("SPX", period = AggregationPeriod.DAY)[1], 2);
AddLabel (!market, "Market " + imarket + "%", if imarket >= 0 then Color.GREEN else Color.RED);
Мarket Сhange
Мarket Сhange

% относительно текущего дневного диапазона в акции. Если 0%, акция находится на лоу, если 100%, акция находится на хай. Используется для быстрого определения процентной коррекции относительно хай или лоу дня.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input range = {default "1", "0"};
input market = {default "1", "0"};
def imarket = Round((close("SPX", period = AggregationPeriod.DAY)[0] - close("SPX", period = AggregationPeriod.DAY)[1]) * 100 / close("SPX", period = AggregationPeriod.DAY)[1], 2);
AddLabel (!market, "Market " + imarket + "%", if imarket >= 0 then Color.GREEN else Color.RED);
Day Range
Day Range

Up Tick Rule показывает применено ли к акции правило NBBO — Uptick. Отображает процентное изменение акции за вчерашний и сегодняшний день. Если у акции включено правило Uptick, то день включения правила подсвечивается красным.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input Down_last = {default "1", "0"};
input Down_now = {default "1", "0"};

def iDown = Round(((low(period = "DAY")[1]-(close(period = "DAY")[2]))/Close(period = "DAY")[2])*100,2);
AddLabel (!Down_last, "" + iDown + "%", if iDown < -10 then Color.red else color.light_gray);

def iDown2 = Round(((low(period = "DAY")-close(period = "DAY")[1])/close(period = "DAY")[1])*100,2);
AddLabel (!Down_now, "" + iDown2 + "%", if iDown2 < -10 then Color.red else color.light_gray);

Uptick Rule

На графике

Индикатор (HLC), показывает максимальные цены, минимальные цены, и цены закрытия предыдущей торговой сессии.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input timeFrame = {default DAY, WEEK, MONTH};
plot High = high(period = timeFrame)[1];
plot Low = low(period = timeFrame)[1];
plot Close = close(period = timeFrame)[1];

High.SetDefaultColor (Color.GREEN);
High.SetPaintingStrategy(PaintingStrategy.DASHES);
Low.SetDefaultColor(Color.RED);
Low.SetPaintingStrategy(PaintingStrategy.DASHES);
Close.SetDefaultColor (Color.GRAY);
Close.SetPaintingStrategy(PaintingStrategy.DASHES);
Hight Low Close
Hight Low Close

Фракталы в акции.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input TimeFrame = AggregationPeriod.FIVE_MIN;
def isupfractal;
def isdownfractal;

rec hicount = if (high(period=TimeFrame) == high(period=TimeFrame)[1], hicount[1] + 1, 0);
rec hivalid = if ((hicount[1] == 0 and hicount == 1 and high(period=TimeFrame) > high(period=TimeFrame)[2] and high(period=TimeFrame) > high(period=TimeFrame)[3]) or (hicount[1] and hicount and hivalid[1] )
or (hicount[2] and hivalid[2] and high(period=TimeFrame) == high(period=TimeFrame)[2] and high(period=TimeFrame) > high(period=TimeFrame)[1]), 1, 0) ;

rec locount = if (low(period=TimeFrame) == low(period=TimeFrame)[1], locount[1] + 1, 0);
rec lovalid = if ((locount[1] == 0 and locount == 1 and low(period=TimeFrame) < low(period=TimeFrame)[2] and low(period=TimeFrame) < low(period=TimeFrame)[3])
or (locount[1] and locount and lovalid[1] )
or (locount[2] and lovalid[2] and low(period=TimeFrame) == low(period=TimeFrame)[2] and low(period=TimeFrame) < low(period=TimeFrame)[1]), 1, 0) ;

isupfractal = if(((hicount and hivalid) or (high(period=TimeFrame) > high(period=TimeFrame)[1] and high(period=TimeFrame) > high(period=TimeFrame)[2])) and high(period=TimeFrame) > high(period=TimeFrame)[-1] and high(period=TimeFrame) > high(period=TimeFrame)[-2], high(period=TimeFrame), 0);

isdownfractal = if(((locount and lovalid) or (low(period=TimeFrame) < low(period=TimeFrame)[1] and low(period=TimeFrame) < low(period=TimeFrame)[2])) and low(period=TimeFrame) < low(period=TimeFrame)[-1] and low(period=TimeFrame) < low(period=TimeFrame)[-2], low(period=TimeFrame), 0);

plot upfractal = if( isupfractal, isupfractal, double.nan);
plot downfractal = if( isdownfractal, isdownfractal, double.nan);

upfractal.setPaintingStrategy(PaintingStrategy.HORIZONTAL);
downfractal.setPaintingStrategy(paintingStrategy.HORIZONTAL);
Фрактал
Фрактал

Индикатор показывает предполагаемый потенциал движения акции, в зависимости от ее среднего значения ATR за 14 дней.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

input price = FundamentalType.CLOSE;
input aggregationPeriod = AggregationPeriod.DAY;
input n = 20;
input displace = 0;
input length = 14;
input averageType = AverageType.WILDERS;
def iATR = round(MovingAverage (averageType, TrueRange(high(period = aggregationPeriod )[-displace], close(period = aggregationPeriod)[-displace], low(period = aggregationPeriod )[-displace]), length),2);
plot Sell_1 = low(period = aggregationPeriod) + iATR;
plot buy_1 = high(period = aggregationPeriod) -  iATR;
Sell_1.SetDefaultColor(Color.red);
buy_1.SetDefaultColor(Color.green);
Линии ATR
Линии ATR

Фильтры

Фильтры в TOS используются для фильтрации списков акций в Watchlists.

Фильтр фильтрует акции по наличию так называемой базы. Заданный диапазон в центах.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii
#ищет базы из N последних свечей, на любых уровнях.

def iDiff = 0.01; #максимальное  отклонение в центах
def iBars = 5; #число баров для просмотра
def iLowest = lowest(low,iBars);
def iHighest = highest(high,iBars);
def bBaseLow = fold Lbar = 0 to iBars with Ls=1 do if ((low[Lbar]-iLowest)<=iDiff) then Ls*1 else Ls*0;
def bBaseHigh = fold Hbar = 0 to iBars with Hs=1 do if ((iHighest-high[Hbar])<=iDiff) then Hs*1 else Hs*0;
plot bBase = if bBaseLow then 1 else if bBaseHigh then 2 else 100;
AssignBackgroundColor (if (bBase == 1) then Color.LIGHT_GREEN else if (bBase == 2) then Color.LIGHT_RED else Color.black);
bBase.AssignValueColor (if bBase <> 100 then Color.black else Color.CURRENT);

Base

Фильтр показывает базу на круглых числах.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

def delta = 0.01; #максимальное отклонение в центах от поджатия
def bars = 5; #число баров для просмотра
def highest = Highest(high, bars);
def lowest = Lowest(low, bars);

def pressHigh  = fold Hbar = 0 to bars with Hsumm = 1 do
                	if ((highest - high[Hbar]) <= delta) then Hsumm * 1 else Hsumm * 0;
def pressLow  = fold Lbar = 0 to bars with Lsumm = 1 do
                	if ((low[Lbar] - lowest)   <= delta) then Lsumm * 1 else Lsumm * 0;
def figureHigh = fold FHbar = 1 to bars+1 with FHsumm do if (high[FHbar] == (Ceil(high[FHbar]*2))/2) then FHsumm+1 else FHsumm;
def figureLow  = fold FLbar = 1 to bars+1 with FLsumm do if (low[FLbar] == (Floor(low[FLbar]*2))/2) then FLsumm+1 else FLsumm;

plot bBase = if figureHigh and pressHigh then 1 else
         	if figureLow and pressLow then 2 else 10;

AssignBackgroundColor (if pressHigh then Color.DARK_GREEN else if pressLow then Color.DARK_RED else Color.BLACK);
Базы
Базы

Сканеры

Сканеры в ThinkOrSwim позволяют сканировать и находить акции по заданным критериям.

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

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

def yesterday= HasEarnings(EarningTime.AFTER_MARKET)[1];
def today= HasEarnings(EarningTime.BEFORE_MARKET)[0];
plot res = if yesterday or today then 1 else 0;

Сканер ищет акции, у которых включилось правила Uptick.
Правило Uptick включается после потери 10% от стоимости и сохраняется на следующий день. При условии, если акция не потеряет более 10% стоимости и на следующий день. Если это произойдет, правило сохранится и на третий день.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

def yesterday = if (close[2] - low[1]) / close[2] >= 0.1 then 1 else 0;
def today = if (close[1] - low()[0]) / close[1] >= 0.1 then 1 else 0;
plot res = if yesterday or today then 1 else 0;

Сканер ищет акции, которые за предыдущую торговую сессию превысили средние объемы в два раза.

#Проп-трейдинговая компания Dolphin Traders
#https://dolphin-traders.com
#Pyrogov Timofii

def AverageVolume = Average (volume(period = "DAY")[1], 20);
def LastVolume = volume[1];
plot result = if (LastVolume / AverageVolume > 2) then 1 else 0;

Интересует профессиональное обучение трейдингу?