Как отметить первую свечу восходящего бара после свечи нисходящего бара

Я новичок в Pine Script. Я хотел бы отметить первую свечу восходящего бара после последней свечи нисходящего бара в серии свечей.

// UpBar Candle
UpBar = high> high[1] and low > low[1]
 
//DownBar Candle
DownBar = high < high[1] and low < low[1]  

UpBar1 = not UpBar[1] and UpBar
plotchar(UpBar1, color=color.blue)

Вот в чем проблема

  1. применяется только к предыдущей свече
  2. он пропустил часть первой свечи верхнего бара

Как определить последнюю свечу нижнего бара и игнорировать все последующие свечи, кроме первой свечи восходящего бара, и отметить ее? И как повторить процедуру для всей серии свечей?

Что такое восходящая свеча? Просто зеленая свеча?

vitruvius 05.05.2024 12:02

Извините, я перепутал код. Я отредактировал фактический код в вопросе.

Ryan kenshin 05.05.2024 15:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы отметить первую свечу восходящего бара после последней свечи нисходящего бара в серии свечей в Pine Script, вам необходимо отслеживать состояние рынка (независимо от того, находится ли он в нисходящем или восходящем тренде), а затем отмечать первую восходящую свечу. Свеча бара после последней свечи нисходящего бара.

indicator("First Up Bar After Last Down Bar", overlay=true)

var bool uptrend = na
var bool downtrend = na

UpBar = high > high[1] and low > low[1]
 
DownBar = high < high[1] and low < low[1]  

// Here we can check if a new trend has started
if (not downtrend and DownBar)
    downtrend := true
    uptrend := false
if (not uptrend and UpBar)
    downtrend := false
    uptrend := true

// Mark the first up bar candle after the last down bar candle
firstUpAfterDown = na
if (uptrend)
    firstUpAfterDown := UpBar and downtrend[1]

plotshape(firstUpAfterDown, style=shape.triangleup, location=location.belowbar, color=color.blue, size=size.small)

Здесь я определил начальное состояние рынка как ни восходящего, ни нисходящего тренда na. Затем он проверяет наличие новых тенденций, начиная с появления нисходящих или восходящих баров. Когда он обнаруживает начало восходящего тренда, он отмечает первую свечу восходящего бара после последней свечи нисходящего бара. Надеюсь это поможет.

Редактировать :

Если вы хотите определить первый ап-бар после нисходящего бара независимо от рыночного тренда и без учета предыдущего состояния тренда, вы можете упростить сценарий. Теперь вам не нужно отслеживать состояние тренда. Вы можете напрямую проверить состояние первого ап-бара после даун-бара.

indicator("First Up Bar After Last Down Bar", overlay=true)

// UpBar Candle
UpBar = high > high[1] and low > low[1]
 
// DownBar Candle
DownBar = high < high[1] and low < low[1]  

// Check for the first up bar after a down bar
firstUpAfterDown = na
if (DownBar[1] and UpBar)
    firstUpAfterDown := true

plotshape(firstUpAfterDown, style=shape.triangleup, location=location.belowbar, color=color.blue, size=size.small)

Этот упрощенный код может напрямую проверить, является ли текущая свеча восходящим баром, а предыдущая свеча — нисходящим. Если это правда, то текущая свеча помечается как первый восходящий бар после нисходящего бара, независимо от рыночного тренда или предыдущего состояния тренда.

Новое редактирование

indicator("First Up Bar After Last Down Bar", overlay=true)

// UpBar Candle
UpBar = high > high[1] and low > low[1]
 
// DownBar Candle
DownBar = high < high[1] and low < low[1]  

var bool shapePlotted = na

firstUpAfterDown = DownBar[1] and UpBar
if (firstUpAfterDown and not shapePlotted)
    shapePlotted := true
else
    shapePlotted := na

plotshape(firstUpAfterDown, style=shape.triangleup, location=location.belowbar, color=color.blue, size=size.small)

Теперь скрипт должен построить синий треугольник под первым ап-баром после каждого нисходящего бара. Переменная shapePlotted гарантирует, что будет отмечено только первое вхождение, а последующие будут игнорироваться.

Спасибо, что мне очень помогли. Но что, если я просто хочу узнать первый бар вверх после бара вниз, независимо от рыночного тренда? Я пометил свечу восходящего и нисходящего баров цветом бара, и мне нужно отметить только первый восходящий бар, чтобы я мог продолжить запись другого индикатора в свой скрипт. Я думаю, что смущает использование var bool для идентификации последнего нижнего бара, а также для определения первого верхнего бара.

Ryan kenshin 05.05.2024 15:27

Я внес изменения, чтобы вы могли увидеть, как это можно сделать.

Tijil Saka 05.05.2024 16:01

Кажется, есть проблема с этой строкой 'firstUpAfterDown = na', она показывает, что "значение с типом NA не может быть назначено переменной, которая была определена без ключевого слова типа".

Ryan kenshin 05.05.2024 16:15

Извините, в Pine Script версии 4 и более поздних переменные должны быть введены явно. Все, что вам нужно сделать, это определить переменную bool. var bool firstUpAfterDown = na Теперь firstUpAfterDown определяется как логическая переменная, и она будет присвоена true, если условие выполнено, или na в противном случае.

Tijil Saka 05.05.2024 16:25

Извините, что спрашиваю еще раз, но это все свечи. Я думаю, что могу здесь что-то упустить.

Ryan kenshin 05.05.2024 16:37

Простите, что вы пропустили?

Tijil Saka 05.05.2024 16:50

скрипт отображает все свечи (каждую свечу), а не только свечи первого восходящего бара. Вот почему я думаю, что могу что-то упустить.

Ryan kenshin 05.05.2024 16:55

Я исправил это снова, чтобы оно работало. Если этот ответ оказался полезным, вы можете пометить его как принятый, щелкнув зеленую галочку рядом с количеством баллов за вопрос.

Tijil Saka 05.05.2024 17:01

Другие вопросы по теме