Çizgi çizmek
Hesabını görmedikçe doğruluğundan emin olamazsınız. 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 öğreneceksiniz.
Bir gösterge yazdınız ve sayı üretiyor. Ama ekranda görünmeyen sayının yanlış olduğunu fark edemezsiniz. Grafiğe çizmek, kendi hesabınızı gözle denetlemenin en hızlı yoludur. Bu yüzden çizim işlevleri göstergenin 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ız aradığınız 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ız. Hesabı önce değişkende tutun, sonra çizin — hem okunur olur hem aynı değeri başka yerde de kullanabilirsiniz.
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ğunuz anda ikisi de gerekir: adı olmayan çizgiyi grafik açıklamasında ayırt edemezsiniz, 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 eklerseniz saydamlık verirsiniz — #2962ff22 soluk mavi olur. Kanalları sayıyla vermeyi tercih ederseniz 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ız mumlar ince bir şeride sıkışır ve grafik okunmaz olur. Çözüm dördüncü argümandır: seriye bir pano adı verirsiniz.
// 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ız 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 kendiniz belirlemek istiyorsanız adı açıkça yazın.
Ç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ınızdaki hedef fiyat, yuvarlak bir sayı. Bunlar için plot kullanmak zorunda değilsiniz; plot her bar için ayrı bir değer bekler, oysa sizde 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 vermeyin. sma(close, 50) yazarsanız hata almazsınız ama istediğini de almazsınız: yalnız son bardaki değer alınır ve çizgi orada donar. Hareket eden bir ortalama için plot kullanın. 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ız grafiğe tek bakışta görürsünüz.
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 verirseniz aradaki bölge boyanır. Aşırı alım ile aşırı satım arasındaki nötr alanı böyle işaretlersiniz.
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ız kenarları ayrıca plot ya da hline ile çizin. Renge saydamlık eklemeyi de unutmayın; 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ız başka araca geçersiniz. Aşağıdaki liste doğru aracı seçmene yardım eder.
- Yalnız sinyalin oluştuğu barları işaretleyeceksen plotshape kullanın; üç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ız plotarrow; ok verdiğiniz değerle birlikte uzar.
- Belirli bir fiyata serbest bir yazı bağlayacaksan label kullanın.
- İ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ın; fill yalnız iki seri arasını boyar, arka planı değil.
- Köşede duran sabit bir özet istiyorsanız infoTable satırları oraya yazar.
Yine de plot'u bir işaretleyiciye dönüştürebilirsiniz. na değerli barlarda çizgi kesilir; iff ile yalnız sinyal barlarında değer üretirseniz geri kalan barlar boş kalır. Aynı işi ayrık bir biçimle yapmak isterseniz 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ı size gösterir. Örneğin sma(close, 200) ilk 199 barda boş kalır. Boşluk görüyorsanız önce bunu düşün.
Sık yapılan hatalar
- plot'a metin vermek. Seri sayısal olmalı; metin verirseniz kod açık bir hatayla durur.
- Fiyattan çok farklı ölçekteki bir seriyi fiyat panosuna çizmek. Mumlar ezilir. Pano adını yazın.
- 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 isterseniz offset argümanını kullanın. Çizgiyi N bar sağa ya da sola kaydırır, hesabı değiştirmez. Kaydırdığınız çizgiyle giriş kararı vermeyin; gördüğünüz şey geçmişteki bir değerdir.