Edge Script belgeleri

Edge Script, Bulledge'in kendi script dili: kendi indikatörünüzü birkaç satırda yazarsınız, sunucularımızda çalışır ve Edge Chart'ta çizilir. Pine Script'e benzer, ondan daha az törenlidir; çoğu Pine indikatörü değiştirmeden çalışır.

İlk scriptiniz

  • Edge Chart'ı açın ve sağ kenardaki </> simgesine basın: Edge Script paneli açılır.
  • Yeni script'e basın. Panel çalışan bir örnekle açılır.
  • Kaydet ve çiz'e basın (ya da Ctrl+Enter). Script sunucuda grafiğin mumları üzerinde çalışır ve çizgileri grafiğe düşer.
  • Listedeki göz simgesi bir scripti grafikte açar ya da kapatır. Aynı anda birden çok script çizilebilir.
İki ortalama ve kesişimleri
indicator("EMA kesişimi", overlay = true)

hizli = ema(close, 12)
yavas = ema(close, 26)
plot(hizli, "Hızlı", color = orange)
plot(yavas, "Yavaş", color = blue)

mark(crossover(hizli, yavas), "AL", position = "below", color = green)
mark(crossunder(hizli, yavas), "SAT", position = "above", color = red)

Editör yazarken kodu sunucunun kendi derleyicisiyle kontrol eder: hatalı satırın altı çizilir ve alttaki satır hatayı satır ve sütunuyla, sizin dilinizde söyler. Yanlış yazılmış bir ad için en yakın doğru adı önerir.

Nasıl çalışır

Script her mumda baştan sona bir kez çalışır: en eski mumdan en yenisine. Bir satırdaki close, o an çalışılan mumun kapanışıdır. Grafik en yeni 1.000 mumu gösterir; script daha uzun bir geçmiş üzerinde çalışır, böylece uzun bir ortalama ekranın ilk mumunda bile ısınmış olur.

Her değer bir seridir: her mumda bir değeri vardır ve geçmişi [] ile okunur. close[1] bir önceki mumun kapanışı, ema(close, 20)[3] üç mum önceki ortalamadır.

Bilinmeyen bir değer na'dır: ortalama henüz dolmadığında, geçmişin başından öncesinde ya da sıfıra bölmede. na hesapları na yapar ve çizilmez; nz(x) onu sıfıra, fixnan(x) son bilinen değere çevirir.

Grafik dakikada bir yeniden okunur ve script yeni mumlarla yeniden çalışır. Script en son kapanmamış mumu da görür; o mumdaki bir kesişim, mum kapanana kadar değişebilir.

Değerler ve türler

TürYazılışıNot
sayı14, 2.5, 1e-3Tamsayı ile ondalık ayrımı yoktur.
mantıksaltrue, falseKoşullar ve mark bunları alır.
metin"Yükseliş", 'AL'Etiketler, başlıklar, uyarı mesajları.
renkred, #26a69a, #26a69a80Son iki hane saydamlıktır; rgb() ve color.new() da renk verir.
nanaBilinmeyen değer.

Adlı renkler: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silver, teal, white, yellow — color. önekiyle de yazılabilir.

Değişkenler ve geçmiş

Bir değişken, bir ada = ile değer verilerek tanımlanır; tür bildirmeye gerek yoktur. Değeri her mumda yeniden hesaplanır. Aynı adı yeniden atamak için = ya da :=, bir değere eklemek için +=, -=, *=, /= kullanılır.

var ile tanımlanan bir değişken yalnızca ilk mumda başlatılır ve değerini mumdan muma taşır: bir sayaç, son sinyalin fiyatı ya da bir durum için.

var sayac = 0
var sonSinyal = na

if crossover(close, sma(close, 50))
    sayac += 1
    sonSinyal := close

degisim = (close - sonSinyal) / sonSinyal * 100
plot(degisim, "Son sinyalden %", pane = "Sinyal")

Her değişkenin geçmişi [] ile okunur, en fazla 5.000 mum geriye.

İşleçler

İşleçAnlamı
+ - * / %Aritmetik; + iki metni birleştirir.
== != < > <= >=Karşılaştırma.
and or notMantık.
a ? b : ca doğruysa b, değilse c.
x[n]x'in n mum önceki değeri.

Koşullar ve döngüler

Bloklar girintiyle yazılır (dört boşluk ya da bir sekme): süslü parantez ve end yoktur.

r = rsi(close, 14)
durum = 0
if r > 70
    durum := 1
else if r < 30
    durum := -1
else
    durum := 0

// son 10 mumun kaçı yükselişle kapandı
yukari = 0
for i = 0 to 9
    if close[i] > open[i]
        yukari += 1
plot(yukari, "Yükselen mum", pane = "Sayım", style = "histogram")
  • for i = a to b a'dan b'ye dahil sayar; by adım ile adım verilir, b a'dan küçükse geri sayar.
  • while koşul koşul doğru kaldıkça döner.
  • break döngüden çıkar, continue sonraki tura geçer.
  • Bir döngü tek bir mumda en fazla 10.000 kez döner.
  • Geçmiş tutan fonksiyonlar (ema, crossover gibi) döngü içinde çağrılamaz: döngüden önce hesaplayın.

Kendi fonksiyonlarınız

Bir fonksiyon ad(parametreler) => ile tanımlanır: tek satırda bir ifade, ya da girintili bir blok (son satır değeridir). Birden çok değer [a, b] ile döner ve [x, y] = f() ile alınır.

bant(kaynak, uzunluk, kat) =>
    orta = sma(kaynak, uzunluk)
    sapma = stdev(kaynak, uzunluk)
    [orta + kat * sapma, orta - kat * sapma]

[ust, alt] = bant(close, 20, 2)
plot(ust, "Üst", color = teal)
plot(alt, "Alt", color = teal)

Her çağrı yeri kendi geçmişini tutar: bant(close, 20, 2) ile bant(high, 50, 3) birbirinin ortalamasını karıştırmaz. Fonksiyonlar kendini çağıramaz ve yalnızca en üst seviyede tanımlanır.

Girdiler

input() scriptin bir ayarını tanımlar; türü varsayılan değerinden gelir: sayı, true/false, metin ya da close gibi bir kaynak. minval ve maxval bir sayıyı sınırlar. Editör, scriptin girdilerini ve değerlerini altında gösterir.

uzunluk = input(20, "Uzunluk", minval = 1)
kaynak = input(close, "Kaynak")
goster = input(true, "Bantları göster")

Çizim, işaretler ve uyarılar

  • indicator("Ad", overlay = true) scriptin adını verir. overlay = true (varsayılan) fiyatın üstüne, false kendi paneline çizer.
  • plot() bir çizgi çizer; style = "histogram", "area" ya da "circles" başka biçimlerdir. pane = "Ad" o çizimi fiyatın altındaki adlı bir panele koyar; aynı adı taşıyan çizimler aynı paneli paylaşır.
  • color mumdan muma değişebilir: color = close > open ? green : red.
  • hline() sabit bir fiyatta yatay çizgi çizer; bir panelde RSI'ın 70/30'u gibi.
  • mark() koşulun doğru olduğu mumlara bir ok, daire ya da kare koyar, istenirse kısa bir yazıyla.
  • alert() koşulun doğru olduğu mumları kaydeder; editör bu grafikteki son uyarıları listeler.
Kendi panelinde MACD
indicator("MACD", overlay = false)
[m, sinyal, hist] = macd(close, 12, 26, 9)
plot(hist, "Histogram", color = hist >= 0 ? green : red, style = "histogram")
plot(m, "MACD", color = blue)
plot(sinyal, "Sinyal", color = orange)
hline(0, "Sıfır", color = gray)

Yerleşik değerler

AdDeğer
open high low close volumeMumun açılış, en yüksek, en düşük, kapanış ve hacmi.
hl2 hlc3 ohlc4 hlcc4Mumun ortalama fiyatları.
tr obvGerçek aralık ve birikimli hacim (ta.tr, ta.obv).
timeMumun açılış anı, Unix saniyesi.
bar_index last_bar_indexMumun sırası (0'dan) ve son mumunki.
barstate.isfirst barstate.islastİlk ya da son mumda true.
syminfo.ticker syminfo.tickerid timeframe.periodSembol ve zaman aralığı, metin olarak.
math.pi math.eSabitler.

Fonksiyon başvurusu

? ile işaretli parametreler isteğe bağlıdır. Parametreler adıyla da verilebilir: plot(x, color = red). ta. ve math. önekleri isteğe bağlıdır: ta.ema ile ema aynıdır. İndikatörler TradingView'un kendi tanımlarını izler.

İndikatörler

sma(source, length)
Basit hareketli ortalama. Pencere dolana ve içinde na kalmayana dek na.
ema(source, length)
Üstel hareketli ortalama; ilk length değerin basit ortalamasıyla başlar — TradingView'un kendi başlangıcı.
rma(source, length)
Wilder ortalaması (RSI ve ATR'nin kullandığı), ema gibi başlar.
wma(source, length)
Ağırlıklı hareketli ortalama: en yeni değer en ağır.
vwma(source, length)
Hacim ağırlıklı hareketli ortalama.
hma(source, length)
Hull hareketli ortalaması.
rsi(source, length)
Göreli güç endeksi, Wilder'ınki (0–100). İki ortalama da sıfırsa 50.
macd(source, fastlen?, slowlen?, siglen?)
Üç değer verir: [macd, sinyal, histogram]. Varsayılan 12, 26, 9.
bb(source, length, mult?)
Bollinger bantları. Üç değer verir: [orta, üst, alt]; popülasyon sapması, mult varsayılan 2.
stoch(source, high, low, length)
Ham stokastik %K (0–100). %D için sma ile yumuşatın.
atr(length)
Ortalama gerçek aralık, Wilder'ınki.
cci(source, length)
Emtia kanal endeksi.
mfi(source, length)
Para akışı endeksi (0–100), kaynak ve mumun hacminden.
supertrend(factor, atrPeriod)
İki değer verir: [çizgi, yön]. Yön, Pine'daki gibi yükselişte −1, düşüşte 1.
stdev(source, length, biased?)
Pencere üzerinde standart sapma; varsayılan olarak popülasyon sapması.
variance(source, length, biased?)
Pencere üzerinde varyans.
highest(source, length?)
Son length mumun en yüksek değeri. Tek argümanla high üzerinde uzunluktur.
lowest(source, length?)
Son length mumun en düşük değeri. Tek argümanla low üzerinde uzunluktur.
highestbars(source, length?)
En yüksek değerin kaç mum önce olduğu (Pine'daki gibi 0 ya da negatif).
lowestbars(source, length?)
En düşük değerin kaç mum önce olduğu.
sum(source, length)
Son length değerin toplamı.
cum(source)
İlk mumdan bu yana birikimli toplam.
change(source, length?)
source − source[length] (length varsayılan 1).
mom(source, length?)
Momentum: change ile aynı.
roc(source, length)
Değişim oranı, yüzde olarak.
percentrank(source, length)
Önceki length değerin güncel değere eşit ya da altında kalan yüzdesi.
pivothigh(source, leftbars, rightbars?)
Tepe noktası; emin olmak için gereken rightbars mum sonra bildirilir, diğer mumlarda na. pivothigh(sol, sağ) high üzerinde çalışır.
pivotlow(source, leftbars, rightbars?)
Dip noktası; rightbars mum sonra bildirilir. pivotlow(sol, sağ) low üzerinde çalışır.

Koşullar ve geçmiş

crossover(a, b)
a'nın b'nin üstüne çıktığı mumda true (bir önceki mumda eşit ya da altındaydı).
crossunder(a, b)
a'nın b'nin altına indiği mumda true.
cross(a, b)
Her iki yöndeki kesişimde true.
rising(source, length)
source son length mumun her birinde yükseldiyse true.
falling(source, length)
source son length mumun her birinde düştüyse true.
barssince(condition)
condition'ın en son true olmasından bu yana geçen mum sayısı; hiç olmadıysa na.
valuewhen(condition, source, occurrence?)
condition'ın true olduğu andaki source değeri — en son sefer, ya da ondan önceki occurrence'ıncı.
fixnan(x)
x'in na olmayan son değeri.
nz(x, replacement?)
x; x na ise replacement (varsayılan 0).
na(x)
x na ise true. Yalın na kelimesi değerin kendisidir.

Matematik

abs(x)
Mutlak değer.
sqrt(x)
Karekök.
pow(base, exponent)
base üzeri exponent.
exp(x)
e üzeri x.
log(x)
Doğal logaritma.
log10(x)
10 tabanında logaritma.
round(x, precision?)
precision ondalığa yuvarlanır (varsayılan 0).
floor(x)
Aşağı yuvarlanır.
ceil(x)
Yukarı yuvarlanır.
sign(x)
−1, 0 ya da 1.
max(a, b, …)
En fazla on değerin en büyüğü.
min(a, b, …)
En fazla on değerin en küçüğü.
avg(a, b, …)
En fazla on değerin ortalaması.
sin(x)
Sinüs, radyan cinsinden.
cos(x)
Kosinüs, radyan cinsinden.
tan(x)
Tanjant, radyan cinsinden.

Metin ve renk

str(x, decimals?)
Bir sayıyı metne çevirir; bir işaret ya da uyarı için. str.tostring de olur.
rgb(red, green, blue, transp?)
0–255 kanallardan bir renk; transp 0–100. color.rgb de olur.
color.new(color, transp?)
Aynı renk, 0 (tam) ile 100 arası bir saydamlıkta.

Girdiler

input(defval, title?, minval?, maxval?, step?)
Scriptin bir ayarı; türü defval'den gelir: sayı, true/false, metin ya da close gibi bir kaynak. input.int, input.float, input.bool, input.string ve input.source da çalışır.

Çizim ve uyarılar

indicator(title?, overlay?)
Scripte ad verir ve nereye çizeceğini söyler: fiyatın üstüne (overlay = true, varsayılan) ya da kendi paneline.
plot(series, title?, color?, linewidth?, style?, pane?)
Bir çizgi çizer. style: "line", "histogram", "area" ya da "circles" (plot.style_* de olur). color mumdan muma değişebilir. pane, fiyatın altındaki bir paneli adlandırır.
hline(price, title?, color?, linestyle?, pane?)
Sabit bir fiyatta yatay çizgi: "solid", "dashed" (varsayılan) ya da "dotted".
mark(condition, text?, position?, color?, shape?)
condition'ın true olduğu her mumda bir işaret: position "above" ya da "below", shape "arrowUp", "arrowDown", "circle" ya da "square".
plotshape(series, title?, style?, location?, color?, text?)
mark'ın Pine yazımı; location.abovebar / location.belowbar tarafı seçer.
alert(condition, message?)
condition'ın true olduğu her mumda bir uyarı kaydeder; editör bu grafiktekileri listeler. if içinde alert("mesaj") da çalışır.
alertcondition(condition, title?, message?)
alert'in Pine yazımı.

Pine Script'ten geçiş

Çoğu Pine indikatörü olduğu gibi çalışır: //@version satırı, ta. ve math. önekleri, input.int ve benzerleri, float x = 1 gibi tür bildirimleri, :=, plotshape ve alertcondition kabul edilir; Pine'ın bu dilde anlamı olmayan argümanları (tooltip, group, offset…) sessizce yok sayılır.

Henüz olmayanlar:

  • request.security ve başka sembol ya da zaman aralığından veri.
  • Diziler, matrisler, haritalar ve switch.
  • strategy.* — alım satım simülasyonu.
  • label, line, box ve tablolar; çizim için plot, hline ve mark vardır.
  • Özyinelemeli fonksiyonlar.

Sınırlar

Script sunucularımızda çalışır; herkesin grafiği hızlı kalsın diye her çalışma sınırlıdır. Bir sınıra takılan script, nedenini söyleyen bir hatayla durur.

SınırDeğer
Script uzunluğu32 KB
Çalışma süresi2 saniye
Toplam adım4.000.000
Tek mumda döngü turu10.000
Geçmişe bakış (x[n]) ve uzunluk5.000
plot / hline24 / 24
mark çağrısı / toplam işaret24 / 2.000
Uyarı500
Girdi32
Kayıtlı script50

Edge Script bir analiz aracıdır; çizdikleri geçmiş fiyatlardan hesaplanır ve yatırım tavsiyesi değildir.