Мой код предназначен для поиска пиков и впадин с шириной ввода для RSI и их подключения.Я знаю, что это что-то внутри цикла FOR, потому что я запускал все это вне цикла FOR, строка за строкой, и он работает точно так, как ожидалось.Есть идеи?я делаю что-то не так.
//@version=4
study(title="RSI Peaks and Valleys FOR test",shorttitle="RSI P&V", overlay = false)
int width1= input(6,minval=1,maxval=200,title="Width")
int p1 = 0
int v1 = 0
float rsiMain = rsi(close,14)
float rsi_compare = 0.0
float rsi_width1 = rsi(close[width1], 14)
for i = 0 to ((width1 * 2))
rsi_compare = rsi(close[i], 14)
p1 := p1 + ((rsi_compare < rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi_compare > rsi_width1) ? 1 : 0)
float tp1 = iff(p1 == (2 * width1), rsi_width1, na)
float tv1 = iff(v1 == (2 * width1), rsi_width1, na)
plot(tp1, title="Test1", color=color.yellow, offset = -width1)
plot(tv1, title="Test2", color=color.silver, offset = -width1)
plot(rsiMain, title="RSI", style=plot.style_line, linewidth=2, color=color.purple)
Редактировать: Я решил добавить код без цикла FOR.Для меня процесс выглядит идентично, поэтому ожидаю того же результата, и я удивлен, что результаты цикла FOR не такие, как ожидалось.
//@version=4
study(title="RSI Peaks and Valleys manual FOR test",shorttitle="RSI P&V", overlay = false)
int width1= input(6,minval=1,maxval=200,title="Width")
int p1 = 0
int v1 = 0
float rsiMain = rsi(close,14)
float rsi_compare = 0.0
float rsi_width1 = rsi(close[width1], 14)
rsi0 = rsi(close[0], 14)
rsi1 = rsi(close[1], 14)
rsi2 = rsi(close[2], 14)
rsi3 = rsi(close[3], 14)
rsi4 = rsi(close[4], 14)
rsi5 = rsi(close[5], 14)
rsi6 = rsi(close[6], 14)
p1 := p1 + ((rsi0 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi1 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi2 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi3 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi4 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi5 < rsi_width1) ? 1 : 0)
p1 := p1 + ((rsi6 < rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi0 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi1 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi2 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi3 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi4 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi5 > rsi_width1) ? 1 : 0)
v1 := v1 + ((rsi6 > rsi_width1) ? 1 : 0)
float tp1 = iff(p1 == (2 * width1), rsi_width1, na)
float tv1 = iff(v1 == (2 * width1), rsi_width1, na)
plot(tp1, title="Test1", color=color.yellow, offset = -width1)
plot(tv1, title="Test2", color=color.silver, offset = -width1)
plot(rsiMain, title="RSI", style=plot.style_line, linewidth=2, color=color.purple)