PHP Code:
	
 //@version=5
indicator(".", overlay = true, max_boxes_count = 100)
////////////////////////////////
start1 = input(0)
increment1 = input(0.1)
maximum1 = input(1, "Max Value")
out1 = ta.sar(start1, increment1, maximum1)
plot(out1, "KısaDöngü", style=plot.style_line, color=#f0ce0e)
/////////////////////////////////
start2 = input(0)
increment2 = input(0.1)
maximum2 = input(0.1, "Max Value")
out2 = ta.sar(start2, increment2, maximum2)
plot(out2, "OrtaDöngü", style=plot.style_line, color=#06deee)
///////////////////////////////////
start21 = input(0)
increment21 = input(0.01)
maximum21 = input(0.1, "Max Value")
out21 = ta.sar(start21, increment21, maximum21)
plot(out21, "UzunDöngü", style=plot.style_line, color=#f2f3f7)
/////////////////////////////////
start213 = input(0.1)
increment213 = input(0.1)
maximum213 = input(1, "Max Value")
out213 = ta.sar(start213, increment213, maximum213)
plot(out213, "KıyasDöngü", style=plot.style_line, color=#c20bf0)
////////////////////////////////////////
//@version=5
// User inputs
prd22 = input.int(defval=5, title=' Period for Pivot Points', minval=1, maxval=50)
max_num_of_pivots = input.int(defval=5, title=' Maximum Number of Pivots', minval=5, maxval=10)
max_lines = input.int(defval=1, title=' Maximum number of trend lines', minval=1, maxval=10)
show_lines = input.bool(defval=true, title=' Show trend lines')
show_pivots = input.bool(defval=true, title=' Show Pivot Points')
float ph = ta.pivothigh(high, prd22, prd22)
float pl = ta.pivotlow(low, prd22, prd22)
//plotshape(ph and show_pivots, style=shape.triangledown, location=location.abovebar, offset=-prd22, size=size.small)
//plotshape(pl and show_pivots, style=shape.triangleup, location=location.belowbar, offset=-prd22, size=size.small)
// Creating array of pivots
var pivots_high = array.new_float(0)
var pivots_low = array.new_float(0)
var high_ind = array.new_int(0)
var low_ind = array.new_int(0)
if ph 
    array.push(pivots_high, ph)
    array.push(high_ind, bar_index - prd22)
    if array.size(pivots_high) > max_num_of_pivots  // limit the array size
        array.shift(pivots_high)
        array.shift(high_ind)
if pl
    array.push(pivots_low, pl)
    array.push(low_ind, bar_index - prd22)
    if array.size(pivots_low) > max_num_of_pivots  // limit the array size
        array.shift(pivots_low)
        array.shift(low_ind)
// Create arrays to store slopes and lines
var res_lines = array.new_line()
var res_slopes = array.new_float()
len_lines = array.size(res_lines)
if (len_lines >= 1)
    for ind = 0 to len_lines - 1 
        to_delete = array.pop(res_lines)
        array.pop(res_slopes)
        line.delete(to_delete)
        // line.set_extend(to_delete, extend=extend.none)
count_slope(ph1, ph2, pos1, pos2) => (ph2 - ph1) / (pos2 - pos1)
if array.size(pivots_high) == max_num_of_pivots
    index_of_biggest_slope = 0
    for ind1 = 0 to max_num_of_pivots - 2
        for ind2 = ind1 + 1 to max_num_of_pivots - 1
            p1 = array.get(pivots_high, ind1)
            p2 = array.get(pivots_high, ind2)
            pos1 = array.get(high_ind, ind1)
            pos2 = array.get(high_ind, ind2)
            k = count_slope(p1, p2, pos1, pos2)
            b = p1 - k * pos1
            // ok = k * bar_index + b > high
            ok = true
            // label.new(pos1, p1, str.tostring(ok))
            for ind3 = ind2 to max_num_of_pivots - 1
                p3 = array.get(pivots_high, ind3)
                pos3 = array.get(high_ind, ind3)
                if p3 > k * pos3 + b 
                    ok := false
                    // label.new(pos3, p3, 'cross')
                    break
            if ind2 - ind1 >= 1
                for ind3 = ind1 + 1 to ind2 - 1
                    p3 = array.get(pivots_high, ind3)
                    pos3 = array.get(high_ind, ind3)
                    if p3 > k * pos3 + b 
                        ok := false
                        // label.new(pos3, p3, 'cross')
                        break
            for ind = 0 to prd22 - 1
                if high[ind] * 0.996 > k * bar_index[ind] + b
                    ok := false
                    break
            
            
            if ok //and not (high > k * bar_index + b) // 'and not' for the last line to check if the crosses the price action
                if array.size(res_slopes) < max_lines // max_lines // for now only 1 lines is to be shown
                    line = line.new(pos1, p1, pos2, p2, extend=extend.right)
                    array.push(res_lines, line)
                    array.push(res_slopes, k)  
                else
                    max_slope = array.max(res_slopes)
                    max_slope_ind = array.indexof(res_slopes, max_slope)
                    if max_lines == 1
                        max_slope_ind := 0
                    if k < max_slope
                        line_to_delete = array.get(res_lines, max_slope_ind)
                        line.delete(line_to_delete) 
                        new_line = line.new(pos1, p1, pos2, p2, extend=extend.right)
                        array.insert(res_lines, max_slope_ind, new_line)
                        array.insert(res_slopes, max_slope_ind, k)
                        array.remove(res_lines, max_slope_ind + 1)
                        array.remove(res_slopes, max_slope_ind + 1)
                        // label.new(pos1, p1, str.tostring(res_slopes))
// if barstate.islast
//     label.new(bar_index, high, str.tostring(array.size(res_lines)))
if array.size(res_lines) >= 1 and barstate.islast
    for ind=0 to array.size(res_lines) - 1 
        l = array.get(res_lines, ind)
        s = array.get(res_slopes, ind)
        x1 = line.get_x1(l)
        x2 = line.get_x2(l) 
        prev_lable_ind = 0//x2 + prd - 5
        for ind1=x2 to bar_index
            p = line.get_price(l, ind1) 
            if (math.abs(p - high[bar_index - ind1]) < p * 0.005) 
                if ind1 - prev_lable_ind > 10 and ind1 - x2 >= prd22
                    label.new(ind1, high[bar_index - ind1], text='S', style=label.style_label_down, color=color.red)
                    prev_lable_ind := ind1
if not show_lines
    len_l = array.size(res_lines)
    if (len_l >= 1)
        for ind = 0 to len_l - 1 
            to_delete = array.pop(res_lines)
            array.pop(res_slopes)
            line.delete(to_delete)
var sup_lines = array.new_line()
var sup_slopes = array.new_float()
len_lines1 = array.size(sup_lines)
if (len_lines1 >= 1)
    for ind = 0 to len_lines1 - 1 
        to_delete = array.pop(sup_lines)
        array.pop(sup_slopes)
        line.delete(to_delete)
if array.size(pivots_low) == max_num_of_pivots
    for ind1 = 0 to max_num_of_pivots - 2
        for ind2 = ind1 + 1 to max_num_of_pivots - 1
            p1 = array.get(pivots_low, ind1)
            p2 = array.get(pivots_low, ind2)
            pos1 = array.get(low_ind, ind1)
            pos2 = array.get(low_ind, ind2)
            k = count_slope(p1, p2, pos1, pos2)
            b = p1 - k * pos1
            // check if pivot points in the future are lower than the line between two points 
            ok = true
            for ind3 = ind2 to max_num_of_pivots - 1
                p3 = array.get(pivots_low, ind3)
                pos3 = array.get(low_ind, ind3)
                if p3 < k * pos3 + b
                    ok := false
                    // label.new(pos3, p3, 'cross')
                    break
            // check if pivot points in the middle of two points is lower
            if ind2 - ind1 >= 1
                for ind3 = ind1 + 1 to ind2 - 1
                    p3 = array.get(pivots_low, ind3)
                    pos3 = array.get(low_ind, ind3)
                    if p3 < k * pos3 + b
                        ok := false
                        // label.new(pos3, p3, 'cross')
                        break
            
            for ind = 0 to prd22 - 2
                if low[ind] * 1.008 < k * bar_index[ind] + b
                    ok := false
                    break
            
            if ok //and not (low < k * bar_index + b) // 'and not' for the last line to check if the it crosses the price action
                if array.size(sup_slopes) < max_lines // max_lines // for now only 1 lines is to be shown
                    line = line.new(pos1, p1, pos2, p2, extend=extend.right)
                    // label.new(pos1, p1, 'ok to print')
                    array.push(sup_lines, line)
                    array.push(sup_slopes, k)  
                else
                    max_slope = array.min(sup_slopes)
                    max_slope_ind = array.indexof(sup_slopes, max_slope)
                    if max_lines == 1
                        max_slope_ind := 0
                    if k > max_slope
                        line_to_delete = array.get(sup_lines, max_slope_ind)
                        line.delete(line_to_delete) 
                        new_line = line.new(pos1, p1, pos2, p2, extend=extend.right)
                        array.insert(sup_lines, max_slope_ind, new_line)
                        array.insert(sup_slopes, max_slope_ind, k)
                        array.remove(sup_lines, max_slope_ind + 1)
                        array.remove(sup_slopes, max_slope_ind + 1)
                        // label.new(pos1, p1, str.tostring(sup_slopes))
if array.size(sup_lines) >= 1 and barstate.islast
    for ind=0 to array.size(sup_lines) - 1 
        l = array.get(sup_lines, ind)
        s = array.get(sup_slopes, ind)
        x1 = line.get_x1(l)
        x2 = line.get_x2(l) 
        prev_lable_ind = 0//x2 + prd - 5
        for ind1=x2 to bar_index
            p = line.get_price(l, ind1) 
            if (math.abs(p - low[bar_index - ind1]) < p * 0.005) 
                if ind1 - prev_lable_ind > 10 and ind1 - x2 >= prd22
                    label.new(ind1, low[bar_index - ind1], text='A', style=label.style_label_up, color=color.green)
                    prev_lable_ind := ind1
if not show_lines
    len_l = array.size(sup_lines)
    if (len_l >= 1)
        for ind = 0 to len_l - 1 
            to_delete = array.pop(sup_lines)
            array.pop(sup_slopes)
            line.delete(to_delete)
//////////////////////////////////////////////////// 
 üzerinde çalışılacak örnek...
				
Yer İmleri