CODESCRIPT

Çizgi çizmek

Hesabını görmedikçe doğruluğundan emin olamazsın. plot bir değeri bar bar çizgiye çevirir, hline sabit bir seviye koyar, fill iki çizgi arasını boyar. Bu sayfada üçünü de sırayla öğreneceksin.

Bir gösterge yazdın ve sayı üretiyor. Ama ekranda görünmeyen sayının yanlış olduğunu fark edemezsin. Grafiğe çizmek, kendi hesabını gözle denetlemenin en hızlı yoludur. Bu yüzden çizim işlevleri betiğin süsü değil, denetim aracıdır.

plot ile değer çizmek

plot her bardan bir sayı alır ve bu sayıları uç uca ekleyerek kesintisiz bir çizgi yapar. Sürekli bir değer çiziyorsan aradığın araç budur: hareketli ortalama, momentum, hacim, pozisyon yönü.

CODESCRIPT
// 20 barlik basit ortalama her barda yeniden hesaplanir
ortalama = sma(close, 20)
plot(ortalama)

Fiyat panosunda 20 barlık ortalamayı izleyen tek bir çizgi belirir. Başlık ve renk verilmediği için varsayılanlar kullanılır.

NOT

plot bir değer döndürmez, yalnız çizer. Bu yüzden sonucunu bir değişkene atayamazsın. Hesabı önce değişkende tut, sonra çiz — hem okunur olur hem aynı değeri başka yerde de kullanabilirsin.

plot(series, title?, color?, pane?, style?, linewidth?, linestyle?, offset?, display?)

Değer döndürmez; seriyi grafiğe çizer.

series
seri
Çizilecek seri. Sayısal olmalı; metin verirsen hata alırsın.
title
metin
İsteğe bağlı. Çizginin adı. Grafik açıklamasında bu adı görürsün.
color
renk
İsteğe bağlı. Onaltılık renk kodu, örneğin "#26a69a".
pane
metin
İsteğe bağlı. Çizginin gideceği pano. Aynı adı veren bütün çizgiler tek panoda toplanır. Boş bırakırsan pano değer aralığına göre seçilir.
style
metin
İsteğe bağlı. Çizim biçimi: line, stepline, histogram, columns, area, circles, cross. Varsayılan line.
linewidth
sayı
İsteğe bağlı. Kalınlık, 1 ile 4 arası.
linestyle
metin
İsteğe bağlı. Çizgi türü: solid, dashed ya da dotted.
offset
sayı
İsteğe bağlı. Çizgiyi N bar sağa ya da sola kaydırır. Yalnız görüntü kayar, hesap aynı kalır.

Başlık ve renk vermek

İkinci argüman başlık, üçüncü argüman renktir. İki çizgiyi aynı panoya koyduğun anda ikisi de gerekir: adı olmayan çizgiyi grafik açıklamasında ayırt edemezsin, rengi olmayan iki çizgi birbirine karışır.

CODESCRIPT
hizli = ema(close, 12)
yavas = ema(close, 26)
// ikinci arguman baslik, ucuncu arguman renk
plot(hizli, "EMA 12", "#26a69a")
plot(yavas, "EMA 26", "#ef5350")

Fiyat panosunda yeşil EMA 12 ve kırmızı EMA 26 çizgileri; her ikisi de grafik açıklamasında kendi adıyla listelenir.

İPUCU

Renk onaltılık koddur: #rrggbb. Sonuna iki karakter daha eklersen saydamlık verirsin — #2962ff22 soluk mavi olur. Kanalları sayıyla vermeyi tercih edersen rgb(38, 166, 154) da aynı işi görür.

Alt panele yerleştirmek

Her seri fiyatın yanına sığmaz. RSI 0 ile 100 arasında gezer, fiyat ise binlerle ölçülür. İkisini aynı panoya koyarsan mumlar ince bir şeride sıkışır ve grafik okunmaz olur. Çözüm dördüncü argümandır: seriye bir pano adı verirsin.

CODESCRIPT
// RSI 0 ile 100 arasinda gezer, fiyatla ayni panoya sigmaz
plot(rsi(close, 14), "RSI 14", "#7e57c2", "rsi")
// ayni pano adini veren her cizgi ayni alt panoda toplanir
plot(sma(rsi(close, 14), 9), "RSI ortalamasi", "#ff9800", "rsi")

Fiyat panosunun altında "rsi" adlı bir pano açılır. RSI ile onun 9 barlık ortalaması bu panoda üst üste çizilir, fiyat mumları bozulmadan kalır.

DİKKAT

Pano adını boş bırakırsan pano otomatik seçilir. Bu çoğu zaman doğru çalışır ama garanti değildir; değer aralığı fiyata yakın düşen bir seri fiyat panosuna gider. Nereye gideceğini kendin belirlemek istiyorsan adı açıkça yaz.

Çizgi biçimini değiştirmek

plot her zaman düz bir çizgi çizmek zorunda değil. Hacim gibi bağımsız değerler çubuk olarak daha doğru okunur; üst zaman dilimi değerleri basamaklı çizgiyle daha dürüst görünür. Biçimi beşinci argüman, kalınlığı altıncı, çizgi türünü yedinci argüman belirler.

CODESCRIPT
// hacmi cubuk olarak ciz, ortalamasini kesikli cizgiyle ustune koy
plot(volume, "Hacim", "#78909c", "hacim", "histogram")
plot(sma(volume, 20), "Hacim ortalamasi", "#ff9800", "hacim", "line", 2, "dashed")

"hacim" panosunda gri hacim çubukları görünür; üstlerinden 2 piksel kalınlıkta turuncu kesikli bir ortalama çizgisi geçer. Çubuk ortalamayı aştığı barlar hemen göze çarpar.

hline ile sabit seviye

Bazı seviyeler bar bar değişmez. RSI'ın 70 ve 30 eşiği, aklındaki hedef fiyat, yuvarlak bir sayı. Bunlar için plot kullanmak zorunda değilsin; plot her bar için ayrı bir değer bekler, oysa sende tek bir sayı var. hline tam olarak bunun içindir.

hline(price, title?, color?, style?, width?, display?)

Değer döndürmez; grafiği boydan boya geçen yatay bir seviye çizer.

price
sayı
Çizginin duracağı seviye. Tek bir sabit sayıdır.
title
metin
İsteğe bağlı. Seviyenin adı.
color
renk
İsteğe bağlı. Çizgi rengi.
style
metin
İsteğe bağlı. solid, dashed ya da dotted. Varsayılan dashed.
width
sayı
İsteğe bağlı. Piksel cinsinden kalınlık. Varsayılan 1.
CODESCRIPT
plot(rsi(close, 14), "RSI 14", "#7e57c2", "rsi")
// bu esikler bar bar degismez, sabit seviye olarak durur
hline(70, "Asiri alim", "#ef5350")
hline(50, "Orta", "#90a4ae", "dotted")
hline(30, "Asiri satim", "#26a69a")

RSI panosunda üç yatay seviye: 70'te kırmızı kesikli, 50'de gri noktalı, 30'da yeşil kesikli çizgi. RSI çizgisi bu seviyelere göre okunur hale gelir.

DİKKAT

hline'a bir gösterge serisi verme. sma(close, 50) yazarsan hata almazsın ama istediğini de almazsın: yalnız son bardaki değer alınır ve çizgi orada donar. Hareket eden bir ortalama için plot kullan. Yeni başlayanların en sık düştüğü tuzak budur.

fill ile iki çizgi arasını doldurmak

Çoğu zaman iki çizginin arasındaki boşluk, çizgilerin kendisinden daha çok şey anlatır. Bir bandın genişlemesi oynaklığın arttığını söyler, daralması sakinliği. Bu boşluğu renkle doldurursan grafiğe tek bakışta görürsün.

fill(a, b, color)

Değer döndürmez; a ile b arasındaki alanı boyar.

a
seri
Bandın bir kenarı. Seri, sabit sayı ya da hline() olabilir.
b
seri
Bandın öteki kenarı.
color
renk
İsteğe bağlı. Dolgu rengi. Altındaki mumlar görünsün diye saydamlıklı bir kod ver.
CODESCRIPT
bant = bb(close, 20, 2)
plot(bant.upper, "Ust bant", "#2962ff")
plot(bant.lower, "Alt bant", "#2962ff")
// sondaki 22 saydamliktir, mumlar dolgunun altinda gorunur kalir
fill(bant.upper, bant.lower, "#2962ff22")

Fiyat panosunda iki mavi bant çizgisi ve aralarında yarı saydam mavi bir gövde. Oynaklık arttıkça gövde genişler, sakin dönemlerde daralır.

Kenarlar sabit seviyeler de olabilir. hline() çağrılarını doğrudan fill'e verirsen aradaki bölge boyanır. Aşırı alım ile aşırı satım arasındaki nötr alanı böyle işaretlersin.

CODESCRIPT
plot(rsi(close, 14), "RSI 14", "#7e57c2", "rsi")
// iki sabit seviye arasindaki notr bolgeyi boya
fill(hline(30), hline(70), "#7e57c222")

RSI panosunda 30 ile 70 arasındaki alan yarı saydam morla boyanır. Çizgi bu bandın dışına çıktığı anda göze çarpar.

İPUCU

fill kenarları kendiliğinden çizmez, yalnız aralarını boyar. Bandın sınırlarını da görmek istiyorsan kenarları ayrıca plot ya da hline ile çiz. Renge saydamlık eklemeyi de unutma; tam opak bir dolgu altındaki mumları örter.

plot ne zaman yetmez

plot sürekli bir değer içindir. Her barda bir sayın yoksa ya da çizgi değil ayrı ayrı işaretler istiyorsan başka araca geçersin. Aşağıdaki liste doğru aracı seçmene yardım eder.

  • Yalnız sinyalin oluştuğu barları işaretleyeceksen plotshape kullan; üçgen, daire ya da bayrak koyar.
  • Tek bir harf yeterliyse plotchar daha okunur bir işaret verir.
  • Hem yönü hem şiddeti göstermek istiyorsan plotarrow; ok verdiğin değerle birlikte uzar.
  • Belirli bir fiyata serbest bir yazı bağlayacaksan label kullan.
  • İki nokta arasına eğik bir çizgi çekeceksen trendline; plot bunu yapamaz, çünkü her bara bir değer bağlar.
  • Bir bölgeyi dikdörtgenle çerçeveleyeceksen box uygundur.
  • Barın tamamını renklendireceksen bgcolor kullan; fill yalnız iki seri arasını boyar, arka planı değil.
  • Köşede duran sabit bir özet istiyorsan infoTable satırları oraya yazar.

Yine de plot'u bir işaretleyiciye dönüştürebilirsin. na değerli barlarda çizgi kesilir; iff ile yalnız sinyal barlarında değer üretirsen geri kalan barlar boş kalır. Aynı işi ayrık bir biçimle yapmak istersen plotshape daha temiz durur.

CODESCRIPT
// yalnizca kesisim barlarinda deger uret, digerleri na kalsin
sinyal = crossover(close, sma(close, 20))
plot(iff(sinyal, low, na), "Kesisim noktasi", "#26a69a", "price", "circles")
// ayni sinyali ayrik bir bicimle isaretlemek istersen
plotshape(sinyal, "Kesisim", "triangleup", "belowbar", "#26a69a")

Yukarı kesişim barlarında low seviyesinde yeşil daireler ve aynı barların altında yeşil üçgenler. na değerli barlarda hiçbir şey çizilmez.

NOT

Çizginin na barlarda kesilmesi kusur değil, kullanışlı bir davranıştır: hesabın henüz hazır olmadığı barları sana gösterir. Örneğin sma(close, 200) ilk 199 barda boş kalır. Boşluk görüyorsan önce bunu düşün.

Sık yapılan hatalar

  • plot'a metin vermek. Seri sayısal olmalı; metin verirsen betik açık bir hatayla durur.
  • Fiyattan çok farklı ölçekteki bir seriyi fiyat panosuna çizmek. Mumlar ezilir. Pano adını yaz.
  • Hareketli bir ortalamayı hline ile çizmeye çalışmak. Çizgi son bardaki değerde donar ve yanıltır.
  • fill çağırıp kenarları hiç çizmemek. Bant görünür ama sınırları belirsiz kalır.
  • Dolgu rengine saydamlık koymamak. Mumlar rengin altında kaybolur.
  • On beş çizgiyi tek panoya yığmak. Grafik kalabalıklaşır ve hiçbir çizgi okunmaz olur.
İPUCU

Bir çizgiyi geçmişle karşılaştırmak istersen offset argümanını kullan. Çizgiyi N bar sağa ya da sola kaydırır, hesabı değiştirmez. Kaydırdığın çizgiyle giriş kararı verme; gördüğün şey geçmişteki bir değerdir.