Ç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ü.
// 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.
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.
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.
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.
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.
// 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.
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.
// 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.
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.
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.
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.
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.
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.
// 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.
Ç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.
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.