0 beğenilme 0 beğenilmeme
235 kez görüntülendi
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo

//@version=5
indicator("McDonald's Pattern [LuxAlgo]",overlay=true,max_lines_count=500,max_bars_back=500)
length = input(30)
from_start = input(true,'Use First Bar As Vertex')

css = input(#FFC72C,'Shape Color',group='Style')
min_width = input(2,'Width',inline='b',group='Style')
max_width = input(30,'',inline='b',group='Style')

colored_area = input(true,'Area',inline='c',group='Style')
css_dn = input(#DA291C,'',inline='c',group='Style')
css_up = input(#0cb51a,'',inline='c',group='Style')
show_score = input(true,"McDonald's Score")
//----
os = 0
src = close
n = bar_index
var float valtop = na
var float valbtm = na
var tb = table.new(position.top_right,1,2)
//------------------------------------------------------------------------------
var Y = array.new_float(0)
var X = array.new_int(0)

a = math.max(close,open)
b = math.min(close,open)

upper = ta.highest(a,length)
lower = ta.lowest(b,length)

os := a[length] > upper ? 0 : b[length] < lower ? 1 : os[1]

btm = os == 1 and os[1] != 1
top = os == 0 and os[1] != 0

if top
    array.unshift(Y,a[length])
    array.unshift(X,n-length)
if btm
    array.unshift(Y,b[length])
    array.unshift(X,n-length)
//----
plotchar(top ? high[length] : na,"Top",'',location.abovebar,offset=-length,size=size.tiny)
plotchar(btm ? low[length] : na,"Bottom",'',location.belowbar,offset=-length,size=size.tiny)
//----
a_y = 0.,b_y = 0.
c_y = 0.,d_y = 0.
if barstate.islast
    dist_a = 0.
    dist_b = 0.
    
    for l in line.all
        line.delete(l)
    if from_start
        array.unshift(Y,close)
        array.unshift(X,n)
    
    max = array.max(array.slice(Y,0,5))
    min = array.min(array.slice(Y,0,5))
    val = array.get(Y,0) < array.get(Y,1) ? min : max
    //----
    dist1 = array.get(X,0) - array.get(X,2)
    
    a_y := array.get(Y,2),b_y := array.get(Y,1)
    c_y := array.get(Y,1),d_y := array.get(Y,0)
    
    float y1 = na
    for i = 0 to dist1
        k = i/dist1
        y2 = a_y*math.pow(1 - k,3) + 3*b_y*math.pow(1 - k,2)*k + 3*c_y*(1 - k)*math.pow(k,2) + d_y*math.pow(k,3)
        dist_a += math.abs(y2 - val)
        
        r = (array.get(X,0) - array.get(X,1))/dist1
        w = min_width + math.abs(i/dist1 - r)*(max_width-min_width)
        line.new(array.get(X,2)+i,y2,array.get(X,2)+i-1,y1,color=css,width=w)
        y1 := y2
    //----
    dist2 = array.get(X,2) - array.get(X,4)
    
    a_y := array.get(Y,4),b_y := array.get(Y,3)
    c_y := array.get(Y,3),d_y := array.get(Y,2)
    
    y1 := na
    for i = 0 to dist2
        k = i/dist2
        y2 = a_y*math.pow(1 - k,3) + 3*b_y*math.pow(1 - k,2)*k + 3*c_y*(1 - k)*math.pow(k,2) + d_y*math.pow(k,3)
        dist_b += math.abs(y2 - val)
        
        r = (array.get(X,3) - array.get(X,4))/dist2
        w = min_width + math.abs(i/dist2 - r)*(max_width-min_width)
        line.new(array.get(X,4)+i,y2,array.get(X,4)+i-1,y1,color=css,width=w)
        y1 := y2
        
    if colored_area
        area_css = array.get(Y,0) < array.get(Y,1) ? css_dn : css_up
        box.delete(box.new(array.get(X,4),max,
          array.get(X,0),min,
          border_color=na,
          bgcolor=color.new(area_css,80))[1])

    if from_start
        array.shift(Y)
        array.shift(X)
    //----
    a = dist_a/dist1
    b = dist_b/dist2
    score = (1 - math.abs(a/(a+b) - .5)*2)*100
    
    if show_score
        table.cell(tb,0,0,"McDonald's Score",text_color=color.gray)
        table.cell(tb,0,1,str.tostring(score,'#.##')+'%',text_color=color.gray)
// I'm lovin' it

Merhabalar sarı çizgiye temas hisseleri nasıl tarama yapabilirim teşekkürler 

İndikatör Pozisyonları ve Değerleri kategorisinde (177 puan) tarafından | 235 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
Merhaba

For döngüsü içerdiğinden matriks yazılım dili metastock için maalesef yazılamaz.

Bilgilerinize.
(7,790 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



9,865 soru
9,832 cevap
5,304 yorum
58,177 kullanıcı