#pine-script
Вопрос:
У меня есть индикатор pinescript, и я хочу построить линии, когда условия этого индикатора будут выполнены в последних 14 свечах и будут выполнены конкретные условия tsi и стохастического rsi.
Показатели условия
if buy_goodf or buy_greatf or buy_incrediblef
line.new(bar_index[0], low-lineheightbottom*LineLength, bar_index[0], high lineheighttop*LineLength, color=color.new(color.lime, 50), width=linewidth)
if sell_goodf or sell_greatf or sell_incrediblef
line.new(bar_index[0], low-lineheightbottom*LineLength, bar_index[0], high lineheighttop*LineLength, color=color.new(color.red, 50), width=linewidth)
Так что эта часть работает хорошо, я проверил, что линии отображаются правильно.
Но теперь я хочу нарисовать синюю линию на каждой свече, где:-
- В последних 14 свечах была линия покупки ( то есть
buy_goodf or buy_greatf or buy_incrediblef
была удовлетворена. - Есть tsi и stochrsi определенным образом.
Единственная проблема, с которой я сталкиваюсь, связана с первым пунктом — как проверить для каждой свечи, есть ли в ее последних 13 свечах условие покупки или нет.
Я попытался закодировать его с помощью цикла for, подобного этому, но это не дает мне сигналов.
for i = 0 to 13
if (buy_goodf or buy_greatf or buy_incrediblef) and tsi_value>tsi_ema and tsi_value[1]<tsi_ema[1] and k[1]<d[1] and k>d
line.new(bar_index[0], low-lineheightbottom*LineLength, bar_index[0], high lineheighttop*LineLength, color=color.new(color.blue, 50), width=linewidth)
Является ли это правильным способом сделать это?
Ответ №1:
Я не уверен, что это то, что вы ищете. Но этот код проверяет, было ли пересечение EMA за последние 14 дней, и если оно есть, оно будет отображаться на свечах. Вы можете посмотреть изображение ниже.
plot(ema(close, 20))
plot(ema(close, 50), color=color.white)
EMACrossover = crossover(ema(close, 20), ema(close, 50))
plotshape(EMACrossover, text="EMA Crossover", location=location.belowbar)
conditionOccurredDuringLookbackPeriod(condition, lookbackPeriod) =>
bool conditionOccurred = false
for i = 1 to lookbackPeriod
if condition[i]
conditionOccurred := true
conditionOccurred
EMACrossoverOccurredDuringLast14Candles = conditionOccurredDuringLookbackPeriod(EMACrossover, 14)
plotshape(EMACrossoverOccurredDuringLast14Candles, text="True")
Комментарии:
1. большое спасибо за ваш ответ, оказывается, то, что я искал, было вызвано функцией
barsince()
. Это решило мою проблему. 🙂