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.
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ür | Yazılışı | Not |
|---|---|---|
| sayı | 14, 2.5, 1e-3 | Tamsayı ile ondalık ayrımı yoktur. |
| mantıksal | true, false | Koşullar ve mark bunları alır. |
| metin | "Yükseliş", 'AL' | Etiketler, başlıklar, uyarı mesajları. |
| renk | red, #26a69a, #26a69a80 | Son iki hane saydamlıktır; rgb() ve color.new() da renk verir. |
| na | na | Bilinmeyen 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 not | Mantık. |
a ? b : c | a 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 ba'dan b'ye dahil sayar;by adımile adım verilir, b a'dan küçükse geri sayar.while koşulkoşul doğru kaldıkça döner.breakdöngüden çıkar,continuesonraki tura geçer.- Bir döngü tek bir mumda en fazla 10.000 kez döner.
- Geçmiş tutan fonksiyonlar (
ema,crossovergibi) 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,falsekendi 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.colormumdan 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.
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
| Ad | Değer |
|---|---|
open high low close volume | Mumun açılış, en yüksek, en düşük, kapanış ve hacmi. |
hl2 hlc3 ohlc4 hlcc4 | Mumun ortalama fiyatları. |
tr obv | Gerçek aralık ve birikimli hacim (ta.tr, ta.obv). |
time | Mumun açılış anı, Unix saniyesi. |
bar_index last_bar_index | Mumun sırası (0'dan) ve son mumunki. |
barstate.isfirst barstate.islast | İlk ya da son mumda true. |
syminfo.ticker syminfo.tickerid timeframe.period | Sembol ve zaman aralığı, metin olarak. |
math.pi math.e | Sabitler. |
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.securityve başka sembol ya da zaman aralığından veri.- Diziler, matrisler, haritalar ve
switch. strategy.*— alım satım simülasyonu.label,line,boxve tablolar; çizim içinplot,hlinevemarkvardı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ır | Değer |
|---|---|
| Script uzunluğu | 32 KB |
| Çalışma süresi | 2 saniye |
| Toplam adım | 4.000.000 |
| Tek mumda döngü turu | 10.000 |
Geçmişe bakış (x[n]) ve uzunluk | 5.000 |
plot / hline | 24 / 24 |
mark çağrısı / toplam işaret | 24 / 2.000 |
| Uyarı | 500 |
| Girdi | 32 |
| Kayıtlı script | 50 |
Edge Script bir analiz aracıdır; çizdikleri geçmiş fiyatlardan hesaplanır ve yatırım tavsiyesi değildir.