DTC v1.36
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator dtc - v1 tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор DTC v1.36 — это инструмент анализа и отображения на графике TradingView, построенный на Pine Script v5. Основу составляют шесть экспоненциальных скользящих средних (EMA с периодами 30–60), цвет которых меняется в зависимости от их взаимного расположения: зелёный при бычьем выстраивании, красный при медвежьем и серый при нейтральном. Индикатор отображает все шесть EMA непосредственно на графике цены. Также реализована система сигналов: при смене направления тренда на текущем таймфрейме генерируются метки BUY/SELL с линиями входа, стоп-лосса и четырёх уровней тейк-профита.
Дополнительно индикатор проводит мультитаймфреймный анализ, запрашивая данные EMA(20) и EMA(50) на пяти таймфреймах (15M, 30M, 1H, 4H, Daily) и отображая их направление в виде информационной таблицы-дашборда в правом верхнем углу графика. Доступен фильтр на основе ATR: сигналы не генерируются, если средний истинный диапазон ниже заданного минимального значения. Все параметры настраиваются пользователем через панель настроек индикатора.
Индикатор поддерживает оповещения TradingView для обоих типов сигналов. Визуализация включает линии, текстовые метки с ценовыми уровнями, заливку между уровнями и информационные таблицы. Индикатор работает в режиме оверлея, то есть отображается совместно с ценовым графиком.
Настройки программы
| Настройка | Описание |
|---|---|
| len1 | Период первой экспоненциальной скользящей средней (EMA 1). |
| len2 | Период второй экспоненциальной скользящей средней (EMA 2). |
| len3 | Период третьей экспоненциальной скользящей средней (EMA 3). |
| len4 | Период четвёртой экспоненциальной скользящей средней (EMA 4). |
| len5 | Период пятой экспоненциальной скользящей средней (EMA 5). |
| len6 | Период шестой экспоненциальной скользящей средней (EMA 6). |
| tf1 | Первый таймфрейм для мультитаймфреймного анализа (15 минут). |
| tf2 | Второй таймфрейм для мультитаймфреймного анализа (30 минут). |
| tf3 | Третий таймфрейм для мультитаймфреймного анализа (1 час). |
| tf4 | Четвёртый таймфрейм для мультитаймфреймного анализа (4 часа). |
| tf5 | Пятый таймфрейм для мультитаймфреймного анализа (дневной). |
| sl_lookback | Режим определения глубины поиска для расчёта стоп-лосса: Tiny (3 бара), Small (5), Mid (8) или Large (12). |
| stopLossVal | Процентное значение стоп-лосса от цены входа. |
| tp1Multiplier | Множитель для расчёта первого уровня тейк-профита относительно процента стоп-лосса. |
| tp2Multiplier | Множитель для расчёта второго уровня тейк-профита относительно процента стоп-лосса. |
| tp3Multiplier | Множитель для расчёта третьего уровня тейк-профита относительно процента стоп-лосса. |
| tp4Multiplier | Множитель для расчёта четвёртого уровня тейк-профита относительно процента стоп-лосса. |
| lineLength | Длина горизонтальных линий уровней в барах от точки сигнала. |
| showNumbers | Включает или отключает отображение ценовых уровней (вход, стоп-лосс, тейк-профиты) на графике. |
| showLabels | Включает или отключает отображение меток BUY/SELL при генерации сигналов. |
| useATR | Включает или отключает фильтрацию сигналов по среднему истинному диапазону (ATR). При отключённом фильтре сигналы генерируются без ограничений по волатильности. |
| atrPeriod | Период расчёта среднего истинного диапазона (ATR), используемого для фильтрации сигналов. |
| atrMin | Минимальное значение среднего истинного диапазона (ATR). Если включён фильтр ATR, сигналы не генерируются при значении ATR ниже этого порога. |
| show_dashboard | Включает или отключает таблицу мультитаймфреймного дашборда в правом верхнем углу графика. |
| dashboard_size | Размер таблицы мультитаймфреймного дашборда: малый, нормальный или большой. |
Поиск по коду файла
indicator(title='DTC - v1.36', shorttitle='DTC v1.36', overlay=true, max_labels_count=500, max_lines_count=500)
var string inp_note_1 = "DTC"
var string inp_note_1_position_v = "center"
var string inp_note_1_position_h = "center"
var color inp_note_1_color = color.rgb(107, 107, 107, 75)
var string inp_note_1_size = size.huge
f_convert_position(position_v, position_h) =>
var string p = "middle_center"
if position_v == "Сверху"
p := position_h == "Слева" ? "top_left" : position_h == "По центру" ? "top_center" : "top_right"
else if position_v == "По центру"
p := position_h == "Слева" ? "middle_left" : position_h == "По центру" ? "middle_center" : "middle_right"
else if position_v == "Снизу"
p := position_h == "Слева" ? "bottom_left" : position_h == "По центру" ? "bottom_center" : "bottom_right"
p
var table tbl_note_1 = table.new(f_convert_position(inp_note_1_position_v, inp_note_1_position_h), 1, 1, border_width = 0)
if barstate.islast
table.cell(tbl_note_1, 0, 0, inp_note_1, text_color = inp_note_1_color, text_size = inp_note_1_size)
var table infoTable = table.new(position.top_center, 2, 6, bgcolor = color.new(#000000, 41), border_width = 1)
if barstate.islast
table.cell(infoTable, 1, 0, "DTC INDICATOR", text_color = color.rgb(255, 251, 0), text_size = size.large)
group_ema = "EMA Settings"
len1 = input.int(30, minval=1, title='EMA 1', group=group_ema)
len2 = input.int(35, minval=1, title='EMA 2', group=group_ema)
len3 = input.int(40, minval=1, title='EMA 3', group=group_ema)
len4 = input.int(45, minval=1, title='EMA 4', group=group_ema)
len5 = input.int(50, minval=1, title='EMA 5', group=group_ema)
len6 = input.int(60, minval=1, title='EMA 6', group=group_ema)
group_mtf = "Multi-Timeframe Settings"
tf1 = input.timeframe("15", title="15M", group=group_mtf)
tf2 = input.timeframe("30", title="30M", group=group_mtf)
tf3 = input.timeframe("60", title="1H", group=group_mtf)
tf4 = input.timeframe("240", title="4H", group=group_mtf)
tf5 = input.timeframe("1D", title="Daily", group=group_mtf)
group_trade = "Risk Management"
sl_lookback = input.string("Mid", title="Stop-Loss Lookback", options=["Tiny", "Small", "Mid", "Large"], group=group_trade)
stopLossVal = input.float(0.25, title="Stop Loss %", minval=0, group=group_trade)
tp1Multiplier = input.float(1.0, "TP1 Multiplier", minval=0, step=0.1, group=group_trade)
tp2Multiplier = input.float(2.0, "TP2 Multiplier", minval=0, step=0.1, group=group_trade)
tp3Multiplier = input.float(3.0, "TP3 Multiplier", minval=0, step=0.1, group=group_trade)
tp4Multiplier = input.float(4.0, "TP4 Multiplier", minval=0, step=0.1, group=group_trade)
group_display = "Display"
lineLength = input.int(1, "Line Length (bars)", minval=1, maxval=50, group=group_display)
showNumbers = input.bool(true, "Show Price Numbers", group=group_display)
showLabels = input.bool(true, "Show Signal Labels", group=group_display)
group_filter = "ATR Filter"
useATR = input.bool(true, "Enable ATR Filter?", group=group_filter)
atrPeriod = input.int(14, "ATR Period", minval=1, group=group_filter)
atrMin = input.float(0.5, "Min ATR Value", minval=0, step=0.1, group=group_filter)
group_dashboard = "Dashboard"
show_dashboard = input.bool(true, title="Show Multi-Timeframe Dashboard", group=group_dashboard)
dashboard_size = input.string("normal", title="Dashboard Size", options=["small", "normal", "large"], group=group_dashboard)
get_table_size() =>
switch dashboard_size
"small" => size.tiny
"normal" => size.small
"large" => size.normal
=> size.small
sl_length = switch sl_lookback
"Tiny" => 3
"Small" => 5
"Mid" => 8
"Large" => 12
=> 8
src = close
ema1 = ta.ema(src, len1)
ema2 = ta.ema(src, len2)
ema3 = ta.ema(src, len3)
ema4 = ta.ema(src, len4)
ema5 = ta.ema(src, len5)
ema6 = ta.ema(src, len6)
bullish_trend = ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6
bearish_trend = ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6
ema_color = bullish_trend ? color.lime : bearish_trend ? color.red : color.gray
plot(ema1, title='EMA 30', linewidth=3, color=ema_color)
plot(ema2, title='EMA 35', linewidth=2, color=ema_color)
plot(ema3, title='EMA 40', linewidth=2, color=ema_color)
plot(ema4, title='EMA 45', linewidth=1, color=ema_color)
plot(ema5, title='EMA 50', linewidth=1, color=ema_color)
plot(ema6, title='EMA 60', linewidth=1, color=ema_color)
htf1_ema_fast = request.security(syminfo.tickerid, tf1, ta.ema(close, 20), lookahead=barmerge.lookahead_off)
htf1_ema_slow = request.security(syminfo.tickerid, tf1, ta.ema(close, 50), lookahead=barmerge.lookahead_off)
htf2_ema_fast = request.security(syminfo.tickerid, tf2, ta.ema(close, 20), lookahead=barmerge.lookahead_off)
htf2_ema_slow = request.security(syminfo.tickerid, tf2, ta.ema(close, 50), lookahead=barmerge.lookahead_off)
htf3_ema_fast = request.security(syminfo.tickerid, tf3, ta.ema(close, 20), lookahead=barmerge.lookahead_off)
htf3_ema_slow = request.security(syminfo.tickerid, tf3, ta.ema(close, 50), lookahead=barmerge.lookahead_off)
htf4_ema_fast = request.security(syminfo.tickerid, tf4, ta.ema(close, 20), lookahead=barmerge.lookahead_off)
htf4_ema_slow = request.security(syminfo.tickerid, tf4, ta.ema(close, 50), lookahead=barmerge.lookahead_off)
htf5_ema_fast = request.security(syminfo.tickerid, tf5, ta.ema(close, 20), lookahead=barmerge.lookahead_off)
htf5_ema_slow = request.security(syminfo.tickerid, tf5, ta.ema(close, 50), lookahead=barmerge.lookahead_off)
htf1_trend = htf1_ema_fast > htf1_ema_slow
htf2_trend = htf2_ema_fast > htf2_ema_slow
htf3_trend = htf3_ema_fast > htf3_ema_slow
htf4_trend = htf4_ema_fast > htf4_ema_slow
htf5_trend = htf5_ema_fast > htf5_ema_slow
var int signal_state = 0 // 1=long, -1=short, 0=none
long_signal_raw = not bullish_trend[1] and bullish_trend and barstate.isconfirmed
short_signal_raw = not bearish_trend[1] and bearish_trend and barstate.isconfirmed
atr_value = ta.atr(atrPeriod)
atr_ok = not useATR or (atr_value > atrMin)
long_signal = long_signal_raw and signal_state != 1 and atr_ok
short_signal = short_signal_raw and signal_state != -1 and atr_ok
lowest_low = ta.lowest(low, sl_length)
highest_high = ta.highest(high, sl_length)
var float entry = na
var float sl = na
var float tp1 = na
var float tp2 = na
var float tp3 = na
var float tp4 = na
var line entryLine = na
var line slLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line tp4Line = na
var label entryLabel = na
var label slLabel = na
var label tp1Label = na
var label tp2Label = na
var label tp3Label = na
var label tp4Label = na
var linefill slFill = na
var linefill tpFill = na
if long_signal
signal_state := 1
entry := close
sl := entry * (1 - stopLossVal/100)
tp1 := entry * (1 + stopLossVal * tp1Multiplier/100)
tp2 := entry * (1 + stopLossVal * tp2Multiplier/100)
tp3 := entry * (1 + stopLossVal * tp3Multiplier/100)
tp4 := entry * (1 + stopLossVal * tp4Multiplier/100)
else if short_signal
signal_state := -1
entry := close
sl := entry * (1 + stopLossVal/100)
tp1 := entry * (1 - stopLossVal * tp1Multiplier/100)
tp2 := entry * (1 - stopLossVal * tp2Multiplier/100)
tp3 := entry * (1 - stopLossVal * tp3Multiplier/100)
tp4 := entry * (1 - stopПоказано первые 50% кода (символов: 12290)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.