Код: Выделить всё
indicator("SuperIchi ",'SuperIchi ',overlay=true,max_lines_count=500)
tenkan_len = input(9,'Tenkan')
tenkan_mult = input(2.)
kijun_len = input(26,'Kijun')
kijun_mult = input(4.)
spanB_len = input(52,'Senkou Span B')
spanB_mult = input(6.)
offset = input(26,'Displacement')
avg(src,length,mult)=>
atr = ta.atr(length)*mult
up = hl2 + atr
dn = hl2 - atr
upper = 0.,lower = 0.
upper := src[1] < upper[1] ? math.min(up,upper[1]) : up
lower := src[1] > lower[1] ? math.max(dn,lower[1]) : dn
os = 0,max = 0.,min = 0.
os := src > upper ? 1 : src < lower ? 0 : os[1]
spt = os == 1 ? lower : upper
max := ta.cross(src,spt) ? math.max(src,max[1]) : os == 1 ? math.max(src,max[1]) : spt
min := ta.cross(src,spt) ? math.min(src,min[1]) : os == 0 ? math.min(src,min[1]) : spt
math.avg(max,min)
tenkan = avg(close,tenkan_len,tenkan_mult)
kijun = avg(close,kijun_len,kijun_mult)
senkouA = math.avg(kijun,tenkan)
senkouB = avg(close,spanB_len,spanB_mult)
tenkan_css = #2157f3
kijun_css = #ff5d00
cloud_a = color.new(color.teal,80)
cloud_b = color.new(color.red,80)
chikou_css = #7b1fa2
plot(tenkan,'Tenkan-Sen',tenkan_css)
plot(kijun,'Kijun-Sen',kijun_css)
plot(ta.crossover(tenkan,kijun) ? kijun : na,'Crossover',#2157f3,3,plot.style_circles)
plot(ta.crossunder(tenkan,kijun) ? kijun : na,'Crossunder',#ff5d00,3,plot.style_circles)
A = plot(senkouA,'Senkou Span A',na,offset=offset-1)
B = plot(senkouB,'Senkou Span B',na,offset=offset-1)
fill(A,B,senkouA > senkouB ? cloud_a : cloud_b)
plot(close,'Chikou',chikou_css,offset=-offset+1,display=display.none)
Я попытался преобразовать код Pine Script для индикатора SuperIchi в Python. Вот что я сделал:
Получение данных: я получил исторические данные о ценах на акции с помощью библиотеки yfinance.
Параметры индикатора: я установил переменные для входных параметров, например tenkan_len, tenkan_mult , kijun_len, kijun_mult, ssb_len и ssb_mult.
Расчет индикатора: я написал функции для расчета ATR (среднего истинного диапазона), модифицированные аналогично функции avg в Pine Script для Tenkan-Sen, Kijun-Sen и Skou Span B. .
Когда я вычисляю верхнюю и нижнюю часть, я получаю неправильный ответ
Подробнее здесь: https://stackoverflow.com/questions/784 ... -to-python