← К каталогу
Исходный код · ID 4132

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 и перейдите к оплате.

Стоимость полного кода
1 229₽ ≈ $15.02