Слушай я не могу здесь прямо написать ? Что если н...

创建于:2025年4月26日

使用 O3 回答 Chat01

问题

Слушай я не могу здесь прямо написать ?
Что если новый хай пивот выше предыдущего и новый лой выше предыдущего то рисовать линию внешнего тренда от лоя до конечного хай пока последний лой не пробьет предыдущий

思考

Interpreting trend line query

The user is asking about drawing a trend line based on a specific condition: if the new high pivot is higher than the previous and the new low is higher than the previous, then they want to draw an external trend line from the low to the final high until the last low breaks the previous one. It seems like they might want help coding this into an automated charting solution or Pine Script logic for TradingView.

Providing trend line explanation

The user is asking about drawing trend lines in an algorithmic context. They might want a step-by-step explanation in Pine Script for TradingView. I’ll start by explaining the general approach: using arrays to store pivot highs and lows, then comparing them. Afterward, I’ll show how to draw a trend line with line.new. I'll write the response in informal Russian, and include a script example in Pine Script v5 to demonstrate the process and clarify the trend line implementation.

Thought for 11 seconds

回答

Ниже — один из способов «зашить» описанное правило в Pine Script v5, чтобы линия внешнего тренда появлялась только тогда, когда формируются последовательные более высокие pivot-high и pivot-low, и исчезала, если очередной low опускается ниже предыдущего.

pinescript
// ─────────────────────────────────────────────────────────── // External Trend-Line (v5) — рисует линию от первого лоя // к последнему хай-пивоту, пока лои остаются повышающимися // ─────────────────────────────────────────────────────────── indicator("External Trend Line", overlay = true, max_lines_count = 2) // Настройка «чувствительности» пивотов (3-3 ≈ swing-high/low из 3 баров) left = input.int(3, "Left bars", minval = 1) right = input.int(3, "Right bars", minval = 1) // Находим пивоты ph = ta.pivothigh(high, left, right) // вернёт цену хай-пивота pl = ta.pivotlow (low, left, right) // вернёт цену лой-пивота // Храним актуальные экстремумы и линию var float rootLow = na // самый первый “опорный” low var float lastHigh = na // последний более высокий high var float lastLow = na // последний более высокий low var line extLine = na // сама линия тренда // ── обновляем, когда появляется новый pivot-low if not na(pl) // первый пивот → сразу становится rootLow / lastLow if na(rootLow) rootLow := pl lastLow := pl // если low выше предыдущего → восходящая структура подтверждена else if pl > lastLow lastLow := pl // low пробил предыдущий → структура сломалась, сбрасываем всё else line.delete(extLine) rootLow := na lastLow := na lastHigh := na extLine := na // ── обновляем, когда появляется новый pivot-high if not na(ph) and not na(rootLow) // high выше предыдущего → восходящая структура держится if na(lastHigh) or ph > lastHigh lastHigh := ph // если линия ещё не создана — рисуем её от rootLow к текущему high if na(extLine) extLine := line.new( x1 = ta.valuewhen(pl == rootLow, bar_index, 0), y1 = rootLow, x2 = bar_index, y2 = ph, extend = extend.right, color = color.teal, width = 2) // иначе просто двигаем правый край к новому high else line.set_xy2(extLine, bar_index, ph)

Как работает скрипт

  1. Поиск пивотов
    ta.pivothigh/low ищут swing-экстремумы. Параметры left/right задают, сколько свечей должно быть по обе стороны экстремума, чтобы он считался пивотом. Увеличьте их — получите «грубее» тренд, уменьшите — «детальнее».

  2. Строим «восходящую цепочку»

    • Когда обнаруживается первый pivot-low, он становится rootLow.
    • Каждый следующий pivot-low сравнивается с lastLow: если он выше → продолжаем восходящий тренд; если ниже или равен → тренд сломался, линию удаляем и начинаем отсчёт заново.
  3. Обновляем линию

    • При каждом новом pivot-high, который выше предыдущего, край линии переносится на этот high — так она «растёт» вместе с движением.
    • Если последовательность ломается (low ниже предыдущего) — удаляем линию и ждём новой пары растущих high/low.

Что можно настроить

ПараметрЧто меняет
left/rightЧувствительность swing-поиска.
Цвет, ширина, extendВызовы line.new/line.set_xy2.
Логику «слом тренда»Сейчас сброс при любой свечке с low < lastLow; можно заменить на «close ниже» или добавить фильтр по ATR и т.п.

Попробуйте запустить скрипт на любом графике и поиграться с параметрами — сразу станет видно, как линия появляется, растягивается и исчезает при нарушении последовательности.

Если понадобится более сложная логика — например, поддержка нисходящего тренда или отметки на истории, где именно каждая цепочка началась/закончилась, — дайте знать, подскажу, как расширить код. Удачи!

问题

Слушай я не могу здесь прямо написать ?
Что если новый хай пивот выше предыдущего и новый лой выше предыдущего то рисовать линию внешнего тренда от лоя до конечного хай пока последний лой не пробьет предыдущий

思考

Clarifying user request

It seems the user is asking about drawing an external trendline if the current highs and lows are higher than the previous ones. They might be confused or not have seen my previous Pine Script response. Perhaps they're asking for a plain explanation instead of code, or wondering if there's an issue with displaying the code. I'll need to clarify their need—whether they want an explanation or if they need a different piece of code. Let me know how I can assist them with that!

Thought for 8 seconds

回答

Конечно можно — прямо здесь в чате.
Сформулирую идею ещё раз «на пальцах» и дам лаконичный пример на Pine Script v5:


Логика без кода

  1. Следим за пивотами

    • новый pivot-high должен быть выше предыдущего pivot-high;
    • новый pivot-low должен быть выше предыдущего pivot-low.
  2. Как только оба условия выполнились первый раз
    – запоминаем самый первый pivot-low как «точку A»
    – запоминаем текущий (последний) pivot-high как «точку B»
    – рисуем линию A → B, продлевая её вправо.

  3. Обновления

    • каждый раз, когда появляется ещё более высокий pivot-high, переносим правый конец линии на него;
    • если очередной pivot-low опустится ниже предыдущего pivot-low, считаем структуру сломанной → удаляем линию и начинаем поиск с нуля.

Мини-скрипт (v5) ― только ядро

pinescript
indicator("External TrendLine (简)", overlay = true) l = input.int(3, "Pivot left/right") ph = ta.pivothigh(high, l, l) pl = ta.pivotlow (low, l, l) var float rootLow = na var float lastLow = na var float lastHigh = na var line extLine = na // ── pivot-low if not na(pl) if na(rootLow) // первый low rootLow := pl lastLow := pl else if pl > lastLow // low выше предыдущего → ок lastLow := pl else // low пробил вниз → сброс line.delete(extLine) rootLow := na lastLow := na lastHigh := na extLine := na // ── pivot-high if not na(ph) and not na(rootLow) if na(lastHigh) or ph > lastHigh // high выше → обновляем lastHigh := ph if na(extLine) // ещё нет линии → создаём extLine := line.new( ta.valuewhen(pl == rootLow, bar_index, 0), rootLow, bar_index, ph, extend = extend.right, color = color.aqua, width = 2) else // линия есть → двигаем правый конец line.set_xy2(extLine, bar_index, ph)

Это ровно то, что я присылал раньше, только без комментариев и лишних настроек.
Скопируйте в TradingView, нажмите «Add to chart» — должно работать.


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

分享这个问答