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

Flag & Pole Pattern Tp-sl

flag & pole pattern tp-sl.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор Flag & Pole Pattern Tp-sl предназначен для обнаружения паттернов «флаг и полюс» на графиках TradingView. Он определяет мощные импульсы (полюса) по изменению цены закрытия за заданный период относительно среднего истинного диапазона (ATR), а затем выявляет структуру флага на основе трёх пивотов высоких и низких цен.

При обнаружении полюса и подтверждённой структуры флага индикатор строит проекционные трендовые линии сопротивления и поддержки, расширяющиеся вправо по графику. Если цена закрытия выходит за границу флага, формируется сигнал покупки или продажи с соответствующими графическими отметками.

Индикатор предоставляет настраиваемые параметры отображения: метки полюса, трендовые линии, сигналы BUY/SELL и метки пробоя. Также поддерживаются четыре условия оповещений TradingView для отслеживания ключевых событий паттерна. На графике отображается информационная панель с ссылкой на Telegram-канал.

Настройки программы

НастройкаОписание
poleLookback Количество баров назад, на которое смотрится цена закрытия для оценки величины движения полюса.
poleATRMult Минимальный множитель ATR, определяющий пороговое значение движения цены для распознавания полюса.
atrLength Период расчёта среднего истинного диапазона (ATR), используемого для определения минимального размера полюса.
pivotLen Период определения пивотов (локальных максимумов и минимумов), используемых для построения структуры флага.
touchTolerance Допуск в процентах, определяющий допустимое отклонение при касании границ флага.
maxFlagBars Максимальное количество баров, в течение которых флаг может оставаться активным до автоматического истечения.
minSlopePercent Минимальный процент наклона границ флага, необходимый для подтверждения корректной структуры паттерна.
showPole Отображение меток полюса (Bullish Flag / Bearish Flag) на графике при обнаружении нового паттерна.
showTrendlines Отображение проекционных трендовых линий сопротивления и поддержки флага на графике.
showSignals Отображение графических сигналов BUY и SELL на графике при пробое границ флага.
showBreakoutLabels Отображение меток пробоя флага (BUY/SELL) на графике при срабатывании сигнала.
Получить полный код

Поиск по коду файла

indicator("Flag & Pole Pattern Tp-sl", shorttitle="F & P JPT", overlay=true, max_lines_count=100, max_labels_count=100)

groupPole = "Pole Detection"
poleLookback = input.int(20, "Pole Lookback", minval=5, maxval=100, group=groupPole)
poleATRMult = input.float(3.0, "Minimum Pole Size (ATR)", minval=1.0, step=0.5, group=groupPole)
atrLength = input.int(14, "ATR Length", minval=1, group=groupPole)

groupFlag = "Flag Detection"
pivotLen = input.int(6, "Pivot Length", minval=2, maxval=20, group=groupFlag)
touchTolerance = input.float(0.30, "Touch Tolerance (%)", minval=0.05, maxval=2.0, step=0.05, group=groupFlag)
maxFlagBars = input.int(40, "Maximum Flag Length (Bars)", minval=10, maxval=150, group=groupFlag)
minSlopePercent = input.float(0.02, "Minimum Trendline Slope (%)", minval=0.0, step=0.01, group=groupFlag)

groupDisplay = "Display Settings"
showPole = input.bool(true, "Show Pole Labels", group=groupDisplay)
showTrendlines = input.bool(true, "Show Flag Trendlines", group=groupDisplay)
showSignals = input.bool(true, "Show BUY / SELL Signals", group=groupDisplay)
showBreakoutLabels = input.bool(true, "Show Breakout Labels", group=groupDisplay)

atrValue = ta.atr(atrLength)

pivotHigh = ta.pivothigh(high, pivotLen, pivotLen)
pivotLow = ta.pivotlow(low, pivotLen, pivotLen)

var float high1 = na
var float high2 = na
var float high3 = na

var int highBar1 = na
var int highBar2 = na
var int highBar3 = na

if not na(pivotHigh)
    high1 := high2
    high2 := high3
    high3 := pivotHigh

    highBar1 := highBar2
    highBar2 := highBar3
    highBar3 := bar_index - pivotLen

var float low1 = na
var float low2 = na
var float low3 = na

var int lowBar1 = na
var int lowBar2 = na
var int lowBar3 = na

if not na(pivotLow)
    low1 := low2
    low2 := low3
    low3 := pivotLow

    lowBar1 := lowBar2
    lowBar2 := lowBar3
    lowBar3 := bar_index - pivotLen

poleStart = close[poleLookback]
poleMove = not na(poleStart) ? close - poleStart : 0.0

bullPole = not na(poleStart) and poleMove >= atrValue * poleATRMult
bearPole = not na(poleStart) and poleMove <= -atrValue * poleATRMult

descendingHighs = not na(high1) and not na(high2) and not na(high3) and high1 > high2 and high2 > high3
descendingLows = not na(low1) and not na(low2) and not na(low3) and low1 > low2 and low2 > low3

ascendingHighs = not na(high1) and not na(high2) and not na(high3) and high1 < high2 and high2 < high3
ascendingLows = not na(low1) and not na(low2) and not na(low3) and low1 < low2 and low2 < low3

highSlopeDown = not na(highBar1) and not na(highBar3) and highBar3 > highBar1 and high1 > high3
lowSlopeDown = not na(lowBar1) and not na(lowBar3) and lowBar3 > lowBar1 and low1 > low3

highSlopeUp = not na(highBar1) and not na(highBar3) and highBar3 > highBar1 and high1 < high3
lowSlopeUp = not na(lowBar1) and not na(lowBar3) and lowBar3 > lowBar1 and low1 < low3

bullFlagSlope = highSlopeDown and lowSlopeDown
bearFlagSlope = highSlopeUp and lowSlopeUp

bullSlopePercent = bullFlagSlope ? math.abs((high3 - high2) / high2) * 100 : 0.0
bearSlopePercent = bearFlagSlope ? math.abs((high3 - high2) / high2) * 100 : 0.0

bullStructure = descendingHighs and descendingLows and bullFlagSlope and bullSlopePercent >= minSlopePercent
bearStructure = ascendingHighs and ascendingLows and bearFlagSlope and bearSlopePercent >= minSlopePercent
var table wm = table.new(position.bottom_right, 1, 1)
if barstate.isfirst
    table.cell(wm, 0, 0, "Telegram @free_fx_pro", text_color = color.new(color.gray, 70), text_size = size.large)

var bool bullishFlagActive = false
var bool bearishFlagActive = false

var int bullishFlagStart = na
var int bearishFlagStart = na

var line bullResistance = na
var line bullSupport = na
var line bearResistance = na
var line bearSupport = na

newBullFlag = barstate.isconfirmed and bullPole and bullStructure and not bullishFlagActive

newBearFlag = barstate.isconfirmed and bearPole and bearStructure and not bearishFlagActive

if newBullFlag
    bullishFlagActive := true
    bearishFlagActive := false
    bullishFlagStart := bar_index

    if not na(bullResistance)
        line.delete(bullResistance)
    if not na(bullSupport)
        line.delete(bullSupport)

    bullResistance := line.new(highBar1, high1, highBar3, high3, xloc=xloc.bar_index, extend=extend.right, color=color.lime, width=2, style=line.style_dashed)
    bullSupport := line.new(lowBar1, low1, lowBar3, low3, xloc=xloc.bar_index, extend=extend.right, colo

Показано первые 50% кода (символов: 7601)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
760,10₽ ≈ $9.29