Bitcoin Forum
May 11, 2024, 08:17:51 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Pine ile Tradingview'de kendi göstergelerinizi çizdirin  (Read 590 times)
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
March 26, 2020, 02:24:00 AM
Last edit: March 28, 2020, 11:14:47 PM by niko83
Merited by teramit (10), EFS (5), Blacknavy (4), trendcoin (3), gospodin (2), vincetcm (2), Velvet78 (1), Vispilio (1)
 #1

Bildiğiniz üzere Tradingview'in ücretsiz versiyonu belirli bir sayıdan fazla gösterge eklemenize izin vermiyor. Üstelik hazır olarak sunulan göstergeler her zaman dişimize göre olmuyor. Bu sınırlamanın kısmen de olsa etrafından dolanmanın basit ve eğlenceli bir yolu var. Tradingview öğrenmesi gayet kolay ve bir o kadar da kullanışlı olan Pine adlı bir betik dili içeriyor. Bu dili kullanarak hemen her türlü göstergeyi kendi meşrebinize göre ayarlayıp grafiğe ekleyebilir, sürekli kullandığınız birkaç indikatörü bir başlık altında bir araya getirerek başka indikatörlere yer açabilirsiniz.

Mesela bir zamanlar benim de yaptığım gibi, 3-5 tane hareketli ortalama ve Ichimoku bulutunu sürekli kullanıyorsanız, bütün bunları tek bir başlık altında toplayabilirsiniz:

Code:
//@version=4
study(title="Ichimoku Bulutu ve Beşli Hareketli Ortalama", shorttitle="Crypto Ichimoku + Beşli-MA ", overlay=true)

//Hareketli Ortalama Girdileri
drawsma = input(true, title = "SMA Çizilsin mi?")
ma_1p =  input(9, title="MA1")
ma_2p =  input(21, title="MA2")
ma_3p =  input(55, title="MA3")
ma_4p =  input(100, title="MA4")
ma_5p =  input(150, title="MA5")
ma_6p =  input(200, title="MA6")

//Ichimoku Girdileri
drawichimoku = input(true, "Ichimoku Çizilsin mi?")
conversionPeriods = input(20, minval=1, title="Tenkan-Sen Devir Sayısı"),
basePeriods = input(60, minval=1, title="Kijun-Sen Devir Sayısı")
laggingSpan2Periods = input(120, minval=1, title="Chikou Span Devir Sayısı"),
displacement = input(30, minval=1, title="Öteleme")

//Hesaplar
ma_1 = sma(close, ma_1p)
ma_2 = sma(close, ma_2p)
ma_3 = sma(close, ma_3p)
ma_4 = sma(close, ma_4p)
ma_5 = sma(close, ma_5p)
ma_6 = sma(close, ma_6p)

donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

//Ichimoku çizimi
plot(conversionLine, color=drawichimoku ? #0496ff : na, title="Tenkan-Sen")
plot(baseLine, color=drawichimoku ? #991515 : na, title="Kijun-Sen")
plot(close, offset = -displacement, color=drawichimoku ? #459915 : na, title="Chikou-Span")
p1 = plot(leadLine1, offset = displacement, color=drawichimoku ? color.green : na, title="Senkou A")
p2 = plot(leadLine2, offset = displacement, color=drawichimoku ? color.red : na,  title="Senkou B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

//SMA Çizimi
plot(ma_1, color=drawsma ? color.yellow : na, title="MA1")
plot(ma_2, color=drawsma ? color.orange : na, title="MA2")
plot(ma_3, color=drawsma ? color.fuchsia : na, title="MA3")
plot(ma_4, color=drawsma ? color.red : na, title="MA4")
plot(ma_5, color=drawsma ? color.blue : na, title="MA5")
plot(ma_6, color=drawsma ? color.purple : na, title="MA6")


Kodu kısaca özetleyecek olursak:

  • ikinci satırda koda bir isim veriyoruz. Tabloda görünecek olan isim shorttitle kısmı.
  • ardından SMA eğrilerinin tümünün çizimini devre dışı bırakmak veya açmak için kullanabileceğimiz drawsma adlı bir değişken oluşturuyoruz.
  • ardından ma_1p ile başlayan altı farklı değişken oluşturup, bunlara 9 ile başlayıp 200 ile biten farklı varsayılan değerler atıyoruz. Bunlar hareketli ortalama hesaplanırken kullanılan devir (mum) sayıları olacak.
  • aynı prosedürü Ichimoku bulutunu çizmek için gereken değişkenler için uyguluyoruz.
  • atadığımız bu değişkenler input fonskiyonuna verildiği için kullanıcılar indikatörün ayarlar kısmından bu varsayılan değerleri kolayca değiştirebilecekler.
  • ardından SMA ve Ichimoku için gerekli hesaplamaları yaparak çıkan sonuçları değişkenlere depoluyoruz.
  • son olarak da plot fonksiyonu kullanarak elde ettiğimiz verileri tablo üzerine çizdiriyoruz.

6 değil 7 tane hareketli ortalama çizdirmek istiyorsanız yukarıdaki patterni kullanarak önce girdi kısmına ma_7p, sonra hesap kısmına ma_7, sonra da çizim kısmına plot(ma_7) eklemeniz yeterli olacaktır. Ayarlar kısmı karmakarışık olmasın diye her hareketli ortalama için ayrı bir aç kapa düğmesi koymadım ama eğer bunu eklemek isterseniz önce bunun için bir değişken oluşturmanız gerekir. Mesela girdiler kısmına şunu ekleyebilirsiniz:

Code:
drawsma1 = input(true, title = "SMA1 Çizilsin mi?")

Ardından ma_1 adlı değişkeni grafiğe ekleyen plot fonksiyonunu şu şekilde değiştirebilirsiniz:

Code:
plot(ma_1, color=(drawsma and drawsma1) ? color.yellow : na, title="MA1")

Burada kullandığımız soru işareti sayesinde plot fonksiyonuna renk ataması yapmadan önce drawsma ve drawsma1 değişkenlerinin her ikisinin birden değerine bakmasını ve her ikisi birden sıfırdan farklı ise yani boolean true değerini içeriyorsa sarı renk kullanmasını, aksi takdirde renk kullanmamasını söylemiş oluyoruz, böylece SMA çizimini toptan kapatırsak ya da yalnızca SMA1 çizimini kapatırsak pratikte çizim yaptırmamış oluyoruz. Benzer bir tekniği alttaki satırda da kullanıyoruz, burada ise renk ile değil, şeffaflık ayarı ile oynuyoruz:

Code:
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

Eğer kullanıcı drawichimoku değişkenine depolanmış olan varsayılan değeri değiştirirse, yani kutudaki tiki kaldırırsa bulutun çizimi %70 değil %100 şeffaflık ile yapılıyor, dolayısıyla bulut görünmez oluyor. Bu parametreyi kullanarak plot ile yapılan tüm çizimlerdeki varsayılan değerleri kendi tercihlerinize göre değiştirebilirsiniz ya da indikatörün ayarlar kısmındaki style tabını açarak aynı sonucu elde edebilirsiniz. Mesela %30 şeffaflıkta çizim yapmak istiyorsanız:

Code:
plot(ma_1, color=drawsma ? color.yellow : na, title="MA1", transp=30)

Pine ile daha birçok şey yapmak mümkün. Öğrenmek de hem basit, hem de gayet eğlenceli. Hepinize tavsiye ederim. Bu arada... İnceleyince zaten fark edersiniz ama olur da ilk görüşte bu ne biçim Ichimoku diye şaşırırsanız; varsayılan değerleri değil, kripto için genellikle tercih edilen değerleri kullandım.


EDIT:

İşi iyice abartıp, çoklu indikatörümüze Bollinger Bands, Parabolic SAR ve EMA gibi önümüze gelen her şeyi eklemek istersek aşağıdaki gibi bir script elde edebiliriz. Bu scriptte varsayılan olarak hiçbir çizim açık değil, görmek istediklerinizi ayarlar kısmına girip açmanız gerekecek.

Code:
// © niko_83
//@version=4
study(title="Ichimoku + BB + Beşli Hareketli Ortalama + SAR", shorttitle="Ichimoku + BB + Beşli-MA + SAR", overlay=true)

//Hareketli Ortalama Girdileri
drawma = input(false, title = "MA Çizilsin mi?")
ma_tipi = input(defval="SMA", title='Hareketli Ortalama Türü', options=["SMA","EMA"])

ma_1p =  input(9, title="MA1")
ma_2p =  input(21, title="MA2")
ma_3p =  input(55, title="MA3")
ma_4p =  input(100, title="MA4")
ma_5p =  input(150, title="MA5")
ma_6p =  input(200, title="MA6")

//Ichimoku Girdileri
drawichimoku = input(false, "Ichimoku Çizilsin mi?")

conversionPeriods = input(20, minval=1, title="Tenkan-Sen Devir Sayısı"),
basePeriods = input(60, minval=1, title="Kijun-Sen Devir Sayısı")
laggingSpan2Periods = input(120, minval=1, title="Chikou Span Devir Sayısı"),
displacement = input(30, minval=1, title="Öteleme")

//BB Girdileri
drawBB = input(false, title = "BB Çizilsin mi?")

BBD = input(20, minval=1, title="BB Devri")
BBSS = input(2.0, minval=0.001, title="BB Standart Sapma")

// SAR girdileri
drawsar=input(false, title = "SAR Çizilsin mi?")

baslangic = input(title="Başlangıç", type=input.float, step=0.001, defval=0.02)
artis = input(title="Artış", type=input.float, step=0.001, defval=0.02)
maksimum = input(title="Maksimum", type=input.float, step=0.01, defval=0.2)

//SMA Hesapları
ma_1 = ma_tipi=="EMA" ? ema(close, ma_1p) : sma(close, ma_1p)
ma_2 = ma_tipi=="EMA" ? ema(close, ma_2p) : sma(close, ma_2p)
ma_3 = ma_tipi=="EMA" ? ema(close, ma_3p) : sma(close, ma_3p)
ma_4 = ma_tipi=="EMA" ? ema(close, ma_4p) : sma(close, ma_4p)
ma_5 = ma_tipi=="EMA" ? ema(close, ma_5p) : sma(close, ma_5p)
ma_6 = ma_tipi=="EMA" ? ema(close, ma_6p) : sma(close, ma_6p)

 //Ichimoku Hesapları
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

 //Bollinger Band Hesapları
ssapma = BBSS * stdev(close, BBD)
alt = sma(close, BBD) - ssapma
orta = sma(close, BBD)
ust = sma(close, BBD) + ssapma

// SAR Hesaplama
sarplot = sar(baslangic, artis, maksimum)

//Ichimoku çizimi
plot(conversionLine, color=drawichimoku ? #0496ff : na, title="Tenkan-Sen")
plot(baseLine, color=drawichimoku ? #991515 : na, title="Kijun-Sen")
plot(close, offset = -displacement, color=drawichimoku ? #459915 : na, title="Chikou-Span")
p1 = plot(leadLine1, offset = displacement, color=drawichimoku ? color.green : na, title="Senkou A")
p2 = plot(leadLine2, offset = displacement, color=drawichimoku ? color.red : na,  title="Senkou B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

//SMA Çizimi
plot(ma_1, color=drawma ? color.yellow : na, title="MA1")
plot(ma_2, color=drawma ? color.orange : na, title="MA2")
plot(ma_3, color=drawma ? color.fuchsia : na, title="MA3")
plot(ma_4, color=drawma ? color.red : na, title="MA4")
plot(ma_5, color=drawma ? color.blue : na, title="MA5")
plot(ma_6, color=drawma ? color.purple : na, title="MA6")

// BB Çizimi
plot(alt, title="Alt", color=drawBB ? color.blue:na)
plot(orta, title="Orta", color=drawBB ? color.lime:na)
plot(ust, title="Üst", color=drawBB ? color.blue:na)

// SAR Çizimi
plot(sarplot, style = plot.style_cross, color=drawsar ? color.orange:na)
1715415471
Hero Member
*
Offline Offline

Posts: 1715415471

View Profile Personal Message (Offline)

Ignore
1715415471
Reply with quote  #2

1715415471
Report to moderator
Transactions must be included in a block to be properly completed. When you send a transaction, it is broadcast to miners. Miners can then optionally include it in their next blocks. Miners will be more inclined to include your transaction if it has a higher transaction fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
valek55
Member
**
Offline Offline

Activity: 380
Merit: 31


View Profile
March 29, 2020, 03:10:18 PM
 #2

çokgüzel bir konu arkadasa teşekkür ederim..

şöyle birşey yapmak mümkün mü indikatöre indikatör eklemek ?

Örneğin rsi+bollinger istiyorum ben mesela
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
March 30, 2020, 07:15:11 AM
Last edit: March 30, 2020, 08:00:54 AM by niko83
Merited by Vispilio (1)
 #3

çokgüzel bir konu arkadasa teşekkür ederim..

şöyle birşey yapmak mümkün mü indikatöre indikatör eklemek ?

Örneğin rsi+bollinger istiyorum ben mesela

Bildiğim kadarıyla Pine, tek bir script ile farklı bölmelere çizim yapmaya izin vermiyor. Bollinger Bands "overlay" olarak yani fiyat grafiğinin üstüne çizdirilirken RSI ayrı bir bölme içine çizdiriliyor çünkü RSI değeri 0 ile 100 arasında gidip geliyor. Eğer RSI'yı fiyat ile aynı bölmeye eklemeye kalkarsak grafiğin ölçeği değişecektir ve hem fiyatı hem de RSI değerini okumak epey zor hale gelecektir. Bu durumda iki farklı script hazırlamaktan başka çare kalmıyor.

İlk script ile fiyat grafiğinin üzerine çizebileceğimiz hareketli ortalama veya BB gibi indikatörleri çizdirip, diğer script ile ayrı bir bölmede RSI, MFI, Stoch gibi 0-100 arasında gidip gelen osilatörleri bir araya getirebiliriz. Mesela alttaki script ile hem RSI hem de MFI değerlerini üst üste aynı bölme içine çizdirebiliriz.

Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niko_83
//@version=4

study("RSI + MFI")
rsiperiods = input(14, "RSI periyotu")
rsisrc = input(close, title="RSI Kaynağı")
mfiperiods = input(14, "MFI periyotu")
mfisrc = input(close, "MFI Kaynağı")

rsivalue = rsi(rsisrc, rsiperiods)
mfivalue = mfi(mfisrc, mfiperiods)
plot(rsivalue, color=color.yellow)
plot(mfivalue, color=color.blue)

Böylece şunun gibi bir grafik elde edebiliriz:




EDIT: Tek script ile farklı bölmelere çizdirmek için bir iki teknik denedim ama başarılı olamadım. Ölçek cetvelini sola alarak fiyat grafiği üzerine RSI çizdirmek için alttaki kodu kullanabiliriz ama işin içine birden fazla indikatör girince işler yine karışacaktır.

Code:
// © niko_83
//@version=4

study(title="Overlaid RSI", shorttitle="Overlaid RSI", overlay=true, scale=scale.left)

rsiperiods = input(14, "RSI periyotu")
rsisrc = input(close, title="RSI Kaynağı")
rsivalue = rsi(rsisrc, rsiperiods)
plot(rsivalue, color=color.yellow)

Bu kodun sonucu şuna benziyor:

valek55
Member
**
Offline Offline

Activity: 380
Merit: 31


View Profile
March 30, 2020, 02:51:13 PM
 #4

hocam benim fiyatla işim yok.

ben alttaki 2. resimdeki yaptıgını gibi istiyorum yapmıssınız ya rsi+mfi diye.

Ben orda mfi yerine bollinger bandı istiyorum.

Bunu yapabilirmiyiz ?
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
March 30, 2020, 04:31:27 PM
Last edit: March 31, 2020, 06:14:27 AM by niko83
 #5

hocam benim fiyatla işim yok.

ben alttaki 2. resimdeki yaptıgını gibi istiyorum yapmıssınız ya rsi+mfi diye.

Ben orda mfi yerine bollinger bandı istiyorum.

Bunu yapabilirmiyiz ?

Neden böyle bir şey istediğinizi pek anlayamadım ama bunu yapmak pekala mümkün.

Code:
// © niko_83

//@version=4
study("Ayrık BB", overlay=false)

BBD = input(20, minval=1, title="BB Devri")
BBSS = input(2.0, minval=0.001, title="BB Standart Sapma")

ssapma = BBSS * stdev(close, BBD)
alt = sma(close, BBD) - ssapma
orta = sma(close, BBD)
ust = sma(close, BBD) + ssapma

plot(alt, title="Alt", color= color.blue)
plot(orta, title="Orta", color= color.lime)
plot(ust, title="Üst", color= color.blue)



EDIT: Sanırım ne umduğunuzu tam anlayamamışım. "MFI yerine BB" demişsiniz ama ben yalnızca BB için kod hazırladım. Bu noktada aklıma şu soru geliyor; BB ve RSI mı görmek istiyorsunuz yoksa RSI için BB çizdirmek mi istiyorsunuz?
valek55
Member
**
Offline Offline

Activity: 380
Merit: 31


View Profile
March 31, 2020, 02:52:05 AM
 #6

Hocam estağfurullah Allah çözümü olmayan dert vermesin inşallah en kısa sürede sorunlarınızı çözüme kavusturursunuz.

Benim istediğim şu hocam. normalde indikatör olarak rsi açıyoruz. RSİ in üzerinde ... tıklayıp indikatör ekle deyip bollinger ekliyoruz.Aşağada resim linki attım.Birtürlü direk foruma resim ekleyemedim.


https://ibb.co/ryWM5qC

Şimdi bu şekilde yaptıgımızda tradingview bunu 2 indikatör sayıyor ve bize 1 tane daha indikatör hakkı kalıyor.

Halbuki ben bu şekilde 2 indikatörü birleştirip tek indikatör yaparak kullanabilirsem bu sayede fazladan 2 indikatör daha açabileceğim.

O yüzden bana rsi+bollinger birleştirilmiş şekilde lazım.

Hatta aynı şekilde obv+bollinger de birleştirilmiş olsa tadından yenmez Smiley ama ben tekinede razıyım...

İlgilendiğin için teşekkür ederim.

niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
March 31, 2020, 06:35:22 AM
Last edit: March 31, 2020, 07:00:57 AM by niko83
Merited by Blacknavy (7), valek55 (3), Vispilio (2)
 #7

Hocam estağfurullah Allah çözümü olmayan dert vermesin inşallah en kısa sürede sorunlarınızı çözüme kavusturursunuz.

Benim istediğim şu hocam. normalde indikatör olarak rsi açıyoruz. RSİ in üzerinde ... tıklayıp indikatör ekle deyip bollinger ekliyoruz.Aşağada resim linki attım.Birtürlü direk foruma resim ekleyemedim.


https://ibb.co/ryWM5qC

Şimdi bu şekilde yaptıgımızda tradingview bunu 2 indikatör sayıyor ve bize 1 tane daha indikatör hakkı kalıyor.

Halbuki ben bu şekilde 2 indikatörü birleştirip tek indikatör yaparak kullanabilirsem bu sayede fazladan 2 indikatör daha açabileceğim.

O yüzden bana rsi+bollinger birleştirilmiş şekilde lazım.

Hatta aynı şekilde obv+bollinger de birleştirilmiş olsa tadından yenmez Smiley ama ben tekinede razıyım...

İlgilendiğin için teşekkür ederim.



Şimdi tam olarak ne istediğinizi anladım; RSI değerlerini temel alan Bollinger Bands çizdirmek istiyorsunuz. Alttaki kodu kullanarak bunu elde edebilirsiniz. Birkaç saat içinde OBV konusunda neler yapabileceğime göz atarım. Dilekleriniz için teşekkür ederim. Güle güle kullanın, rica ederim.

Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niko_83

//@version=4
study("BB on RSI", overlay=false)

// RSI
ustcizgi=input(70, "Üst Çizgi")
altcizgi=input(30, "Alt Çizgi")
band1 = hline(ustcizgi)
band0 = hline(altcizgi)

rsiperiods = input(14, "RSI periyotu")
rsisrc = input(close, title="RSI Kaynağı")
rsivalue = rsi(rsisrc, rsiperiods)
plot(rsivalue, color=color.yellow)

// BBRSI

drawBB = input(true, title = "RSI-BB Çizilsin mi?")

BBRSID = input(20, minval=1, title="RSI-BB Devri")
BBRSISS = input(2.0, minval=0.001, title="RSI-BB Standart Sapma")

ssapma = BBRSISS * stdev(rsivalue, BBRSID)
altb = sma(rsivalue, BBRSID) - ssapma
ortab = sma(rsivalue, BBRSID)
ustb = sma(rsivalue, BBRSID) + ssapma

plot(altb, title="Alt Bant", color=drawBB ? color.blue:na)
plot(ortab, title="Orta Bant", color=drawBB ? color.lime:na)
plot(ustb, title="Üst Bant", color=drawBB ? color.blue:na)




EDIT: OBV üstüne Bollinger Bantları çizdirmek için de aşağdaki kodu kullanabilirsiniz. Tümünü aynı panel içine çizdirmek pratikte imkansız gibi çünkü hem ölçek problemi var hem de böyle bir durumda panel karmakarışık olacaktır. O yüzden bu iki farklı kodu iki farklı panelde kullanmanız gerekecek gibi görünüyor.


Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niko_83
//@version=4
study("BB on OBV", overlay=false)

// OBV
plot(obv, color=color.yellow)

// BB on OBV
drawOBVBB = input(true, title = "OBV-BB Çizilsin mi?")

BBOBVD = input(20, minval=1, title="OBV-BB Devri")
BBOBVSS = input(2.0, minval=0.001, title="OBV-BB Standart Sapma")

ssapma = BBOBVSS * stdev(obv, BBOBVD)
altb = sma(obv, BBOBVD) - ssapma
ortab = sma(obv, BBOBVD)
ustb = sma(obv, BBOBVD) + ssapma

plot(altb, title="Alt Bant", color=drawOBVBB ? color.blue:na)
plot(ortab, title="Orta Bant", color=drawOBVBB ? color.lime:na)
plot(ustb, title="Üst Bant", color=drawOBVBB ? color.blue:na)


valek55
Member
**
Offline Offline

Activity: 380
Merit: 31


View Profile
March 31, 2020, 12:32:16 PM
 #8

Allah razı olsun hocam senden. ne kadar sevindirdin beni bir bilsen. Büyük kolaylık sağladın bana..
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
March 31, 2020, 02:31:21 PM
 #9

Allah razı olsun hocam senden. ne kadar sevindirdin beni bir bilsen. Büyük kolaylık sağladın bana..

Rica ederim!
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
July 18, 2020, 12:51:15 PM
Last edit: July 18, 2020, 03:07:24 PM by niko83
Merited by Vispilio (1)
 #10

İstek üzerine şöyle bir şey karaladım. Çok yoğun olduğum için 5 dakikada şipşak yazdım, umarım formüllerde bir hata yoktur ve istenen şeyi doğru anlamışımdır. Bu kod RSI değerini kullanarak Double-EMA hesaplıyor:

Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niko_83
//@version=4
study("RSI DEMA", overlay=false)

rsrc = input(title="Kaynak", type=input.source, defval=close)
rsi_len = input(title="RSI uzunluğu", defval=14)
dema_len = input(title="DEMA uzunluğu", defval=21)

prsi = rsi(rsrc, rsi_len)
pema = ema(prsi, dema_len)
pdema = 2 * pema - ema(pema, dema_len)

plot(prsi, color=color.red)
plot(pdema, color=color.yellow)

ust=input(70, "Üst Çizgi")
alt=input(30, "Alt Çizgi")
band1 = hline(ust)
band0 = hline(alt)




EDIT:

Momentum lafını duyunca aklıma direk RSI geldi, meğer momentum ile kast edilen bildiğin momentummuş. Kod:

Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niko_83
//@version=4

study("Momentum DEMA", overlay=false)

msrc = input(title="Momentum Kaynağı", type=input.source, defval=close)
mlen = input(title="Momentum Periyodu", defval=10, minval=1)
dema_len = input(title="DEMA uzunluğu", defval=21, minval=1)

mom = msrc - msrc[mlen]
pema = ema(mom, dema_len)
pdema = 2 * pema - ema(pema, dema_len)

plot(mom, color=color.red, title="Momentum")
plot(pdema, color=color.yellow, title="Momentum DEMA")



Sanırım maksat hasıl oldu.
Holess
Sr. Member
****
Offline Offline

Activity: 714
Merit: 316


The Experience Layer of the Decentralized Internet


View Profile
October 27, 2020, 07:17:15 PM
 #11

hocam güzel bilgiler sunmuşsunuz elinize sağlık. benimde bu konuda sizden bir ricam olacaktı. aynı coinin hem btc hem usdt paritelerini tek ekranda görüntüleme konusunda bir deneyiminiz varmı acaba? sürekli btc paritesine bakıp usd paritesine bakmak bayağı can sıkıcı. 1-2 videoda gördüm böyle bir durumu ama soramadığım için tam olarak nasıl oluyor bilemedim. aynı grafik üzerine direk usdt ve btc paritesini opsiyonlu bir şekilde getirmek mümkündür herhalde  Grin Grin belkide değildir Huh Huh Huh Shocked Shocked Grin Grin

C                ▄███▄
               ▐█████▌
  ▄███▄         ▀███▀        ▄███▄
 ▐█████▌   ▄▄███████████▄▄  ▐█████▌
  ▀██████▄███▀▀       ▀▀█████████▀
      ▀████▀             ▀████
      ▐██▌    ██     ██    ▐███▄▄
      ███   ▄▄ ██▀▀▀██ ▄▄   █████▌
 ▄███▄██▌  ▐▌   ██▀██  ▌▐▌  ▐██▀▀
▐████████   ▀▀   ███   ▀▀   ███▌
 ▀███▀▀██▌                 ▐████▄███▄
       ▐███▄▄           ▄▄██▀ ▀██████▌
   ▄███▄██▀████▄▄▄▄▄▄▄████▀     ▀███▀
  ▐█████▌   ▀▀█████████▀██▄███▄
   ▀███▀        ▄███▄    ▐█████▌
               ▐█████▌    ▀███▀
                ▀███▀
VIR



POWERED BY

RUNNING ON


OCTOPUSROBOTS
TEZOS BLOCKCHAIN
\
Invest in the virucidal safety    ─────────────────
                     ███▄
                    █████▌
                  ▄██████
                 ███████▌
              ▄▄███████▀
 ▄████  ▄▄▄▄▄███████████████▄
▐████▌ ██████████████████████▌
█████ ▐████████████████████▄██
█████ ▐██████████████████████▌
▐████▌ ███████████████████▄██
 ▀████  ▀▀▀▀▀▀█████████████▀
                ▀▀▀▀▀▀▀▀▀▀
EASY TO USE             ▐▌
             ██
            ▐██▌
        ▄█▄ █▌▐█        ▄█▄
▄▄▄▄▄▄▄█▀ ▀██  █▌    ▄▄█▀ ▀█▄▄▄▄▄▄
██████▀     ▀  ▐█   █▀▀     ▀█████
                █▌ ▐█
                ▐█ █▌
                 █▐█
                 ▐█
EVOLVING CONCEPT             ▄▄▄▄
        ▄▄███▀▀▀▀███▄▄
      ▄██▀          ▀██▄
     ▀▀▀              ▀▀▀
   ▄███▌              ▐███▄
  █████                █████
 ▐█████                █████▌
 ▐█████                █████▌
  ▀████▌              ▐████▀
              ▄██▄    ▄▄▄
             ▐█████████▀
              ▀██▀
HELPFUL SUPPORT
/
erdemdemir
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
December 03, 2020, 11:15:30 AM
 #12

Merhaba
ındıkator konusunda destege ıhtıyacım var
Ucretlı egıtım seklınde ya da ıstedıklerımı olusturma konusundna bana destek olabılecek bırısı var mı acaba?
alismo
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
January 01, 2021, 08:08:36 PM
 #13

Merhaba,
ekteki koda al-sat sinyalleri nasıl ekleyebilirim acaba
teşekkürler

//@version=4
study("Magic Trend", overlay=true)

CCI         = input(14)
ATR         = input(5)
Multiplier  = input(1.5,   title='ATR Multiplier')
original    = input(false, title='original coloring')
colorBuy    = #2DFF03 // Good sign for long trade
colorSell   = #ff0346 // Good sign for short trade

var float   x       = na
var float   swap    = na
var color   swap2   = na
var color   swap3   = na
var color   swap4   = na

thisCCI     = cci(close, CCI)
lastCCI     = nz(thisCCI[1])

bufferDelta = Multiplier * sma(tr,ATR)
bufferDn    = high + bufferDelta
bufferUp    = low  - bufferDelta

if (thisCCI >= 0 and lastCCI < 0)
    bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0)
    bufferDn := bufferUp[1]

if (thisCCI >= 0)
    if (bufferUp < bufferUp[1])
        bufferUp := bufferUp[1]
else
    if (thisCCI <= 0)
        if (bufferDn > bufferDn[1])
            bufferDn := bufferDn[1]

x       := thisCCI >= 0 ? bufferUp : thisCCI <= 0 ? bufferDn : x[1]
swap    := x > x[1] ? 1 : x < x[1] ? -1 : swap[1]
swap2   := swap == 1 ? color.lime:color.red
swap3   := thisCCI >=0 ? color.lime : color.red
swap4   := original ? swap3 : swap2

plot(x, color=swap4, transp=0, linewidth=2)

bullTrendMagic = swap4 == color.lime and swap4[1] == color.red
bearTrendMagic = swap4 == color.red and swap4[1] == color.lime
CayberZ
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
January 04, 2021, 06:02:59 PM
 #14

 Merhabalar. DMİ ve MFİ osilatörlerini tradingview de nasıl bir arada kullanabilirim ölçeklendirme sorunu yaşıyorum bunu pine editörde nasıl kullanışlı hale getirebilirim yardımcı olursanız sevinirim.
avkatbey
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
January 06, 2021, 09:52:13 AM
 #15

Allah razı olsun hocam senden. ne kadar sevindirdin beni bir bilsen. Büyük kolaylık sağladın bana..

Rica ederim!

Merhaba, pine script dilini öğrenmeye çalışıyorum ve pine script v4 kitapcığı malum ingilizce , içerisinde çok fazla terim var ve benım de hiç yazılım bilgim yok . Bu sebeple eğitim almak istiyorum ama türkiyede eğitim veren birini bulamadım. Bu konuda ne yapmamı tavsiye edersiniz ?
CayberZ
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
January 11, 2021, 02:25:31 PM
 #16

Merhabalar. DMİ ve MFİ osilatörlerini tradingview de nasıl bir arada kullanabilirim ölçeklendirme sorunu yaşıyorum bunu pine editörde nasıl kullanışlı hale getirebilirim yardımcı olursanız sevinirim.
vincetcm
Hero Member
*****
Offline Offline

Activity: 1302
Merit: 533


View Profile
January 13, 2021, 08:44:48 PM
 #17

Forumda bu tür bilgi paylaşımları görünce çok seviniyorum.
Spekülasyonların bu kadar çok olduğu bir alanda kişilerin kendi analizlerini yapabildiği paylaşımlar daha da kıymetli oluyor.
Paylaşımlarınızın devamını diliyorum.

Teşekkürler.
niko83 (OP)
Sr. Member
****
Offline Offline

Activity: 340
Merit: 278


View Profile
February 17, 2021, 11:56:06 PM
Last edit: February 18, 2021, 11:02:16 AM by niko83
 #18

Allah razı olsun hocam senden. ne kadar sevindirdin beni bir bilsen. Büyük kolaylık sağladın bana..

Rica ederim!

Merhaba, pine script dilini öğrenmeye çalışıyorum ve pine script v4 kitapcığı malum ingilizce , içerisinde çok fazla terim var ve benım de hiç yazılım bilgim yok . Bu sebeple eğitim almak istiyorum ama türkiyede eğitim veren birini bulamadım. Bu konuda ne yapmamı tavsiye edersiniz ?

İnternette epey İngilizce kaynak var ama maalesef Türkçe kaynak konusunda hiç bilgim yok.
awazelal02
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
July 02, 2022, 02:12:57 PM
 #19

merhaba bir koda multitime yani grafik üzerinde farklı zaman çizimlerinde görüntü almak için neler yapılabilir.
ziza11
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
February 26, 2024, 03:35:29 PM
 #20

Bildiğiniz üzere Tradingview'in ücretsiz versiyonu belirli bir sayıdan fazla gösterge eklemenize izin vermiyor. Üstelik hazır olarak sunulan göstergeler her zaman dişimize göre olmuyor. Bu sınırlamanın kısmen de olsa etrafından dolanmanın basit ve eğlenceli bir yolu var. Tradingview öğrenmesi gayet kolay ve bir o kadar da kullanışlı olan Pine adlı bir betik dili içeriyor. Bu dili kullanarak hemen her türlü göstergeyi kendi meşrebinize göre ayarlayıp grafiğe ekleyebilir, sürekli kullandığınız birkaç indikatörü bir başlık altında bir araya getirerek başka indikatörlere yer açabilirsiniz.

Mesela bir zamanlar benim de yaptığım gibi, 3-5 tane hareketli ortalama ve Ichimoku bulutunu sürekli kullanıyorsanız, bütün bunları tek bir başlık altında toplayabilirsiniz:

Code:
//@version=4
study(title="Ichimoku Bulutu ve Beşli Hareketli Ortalama", shorttitle="Crypto Ichimoku + Beşli-MA ", overlay=true)

//Hareketli Ortalama Girdileri
drawsma = input(true, title = "SMA Çizilsin mi?")
ma_1p =  input(9, title="MA1")
ma_2p =  input(21, title="MA2")
ma_3p =  input(55, title="MA3")
ma_4p =  input(100, title="MA4")
ma_5p =  input(150, title="MA5")
ma_6p =  input(200, title="MA6")

//Ichimoku Girdileri
drawichimoku = input(true, "Ichimoku Çizilsin mi?")
conversionPeriods = input(20, minval=1, title="Tenkan-Sen Devir Sayısı"),
basePeriods = input(60, minval=1, title="Kijun-Sen Devir Sayısı")
laggingSpan2Periods = input(120, minval=1, title="Chikou Span Devir Sayısı"),
displacement = input(30, minval=1, title="Öteleme")

//Hesaplar
ma_1 = sma(close, ma_1p)
ma_2 = sma(close, ma_2p)
ma_3 = sma(close, ma_3p)
ma_4 = sma(close, ma_4p)
ma_5 = sma(close, ma_5p)
ma_6 = sma(close, ma_6p)

donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

//Ichimoku çizimi
plot(conversionLine, color=drawichimoku ? #0496ff : na, title="Tenkan-Sen")
plot(baseLine, color=drawichimoku ? #991515 : na, title="Kijun-Sen")
plot(close, offset = -displacement, color=drawichimoku ? #459915 : na, title="Chikou-Span")
p1 = plot(leadLine1, offset = displacement, color=drawichimoku ? color.green : na, title="Senkou A")
p2 = plot(leadLine2, offset = displacement, color=drawichimoku ? color.red : na,  title="Senkou B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

//SMA Çizimi
plot(ma_1, color=drawsma ? color.yellow : na, title="MA1")
plot(ma_2, color=drawsma ? color.orange : na, title="MA2")
plot(ma_3, color=drawsma ? color.fuchsia : na, title="MA3")
plot(ma_4, color=drawsma ? color.red : na, title="MA4")
plot(ma_5, color=drawsma ? color.blue : na, title="MA5")
plot(ma_6, color=drawsma ? color.purple : na, title="MA6")


Kodu kısaca özetleyecek olursak:

  • ikinci satırda koda bir isim veriyoruz. Tabloda görünecek olan isim shorttitle kısmı.
  • ardından SMA eğrilerinin tümünün çizimini devre dışı bırakmak veya açmak için kullanabileceğimiz drawsma adlı bir değişken oluşturuyoruz.
  • ardından ma_1p ile başlayan altı farklı değişken oluşturup, bunlara 9 ile başlayıp 200 ile biten farklı varsayılan değerler atıyoruz. Bunlar hareketli ortalama hesaplanırken kullanılan devir (mum) sayıları olacak.
  • aynı prosedürü Ichimoku bulutunu çizmek için gereken değişkenler için uyguluyoruz.
  • atadığımız bu değişkenler input fonskiyonuna verildiği için kullanıcılar indikatörün ayarlar kısmından bu varsayılan değerleri kolayca değiştirebilecekler.
  • ardından SMA ve Ichimoku için gerekli hesaplamaları yaparak çıkan sonuçları değişkenlere depoluyoruz.
  • son olarak da plot fonksiyonu kullanarak elde ettiğimiz verileri tablo üzerine çizdiriyoruz.

6 değil 7 tane hareketli ortalama çizdirmek istiyorsanız yukarıdaki patterni kullanarak önce girdi kısmına ma_7p, sonra hesap kısmına ma_7, sonra da çizim kısmına plot(ma_7) eklemeniz yeterli olacaktır. Ayarlar kısmı karmakarışık olmasın diye her hareketli ortalama için ayrı bir aç kapa düğmesi koymadım ama eğer bunu eklemek isterseniz önce bunun için bir değişken oluşturmanız gerekir. Mesela girdiler kısmına şunu ekleyebilirsiniz:

Code:
drawsma1 = input(true, title = "SMA1 Çizilsin mi?")

Ardından ma_1 adlı değişkeni grafiğe ekleyen plot fonksiyonunu şu şekilde değiştirebilirsiniz:

Code:
plot(ma_1, color=(drawsma and drawsma1) ? color.yellow : na, title="MA1")

Burada kullandığımız soru işareti sayesinde plot fonksiyonuna renk ataması yapmadan önce drawsma ve drawsma1 değişkenlerinin her ikisinin birden değerine bakmasını ve her ikisi birden sıfırdan farklı ise yani boolean true değerini içeriyorsa sarı renk kullanmasını, aksi takdirde renk kullanmamasını söylemiş oluyoruz, böylece SMA çizimini toptan kapatırsak ya da yalnızca SMA1 çizimini kapatırsak pratikte çizim yaptırmamış oluyoruz. Benzer bir tekniği alttaki satırda da kullanıyoruz, burada ise renk ile değil, şeffaflık ayarı ile oynuyoruz:

Code:
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

Eğer kullanıcı drawichimoku değişkenine depolanmış olan varsayılan değeri değiştirirse, yani kutudaki tiki kaldırırsa bulutun çizimi %70 değil %100 şeffaflık ile yapılıyor, dolayısıyla bulut görünmez oluyor. Bu parametreyi kullanarak plot ile yapılan tüm çizimlerdeki varsayılan değerleri kendi tercihlerinize göre değiştirebilirsiniz ya da indikatörün ayarlar kısmındaki style tabını açarak aynı sonucu elde edebilirsiniz. Mesela %30 şeffaflıkta çizim yapmak istiyorsanız:

Code:
plot(ma_1, color=drawsma ? color.yellow : na, title="MA1", transp=30)

Pine ile daha birçok şey yapmak mümkün. Öğrenmek de hem basit, hem de gayet eğlenceli. Hepinize tavsiye ederim. Bu arada... İnceleyince zaten fark edersiniz ama olur da ilk görüşte bu ne biçim Ichimoku diye şaşırırsanız; varsayılan değerleri değil, kripto için genellikle tercih edilen değerleri kullandım.


EDIT:

İşi iyice abartıp, çoklu indikatörümüze Bollinger Bands, Parabolic SAR ve EMA gibi önümüze gelen her şeyi eklemek istersek aşağıdaki gibi bir script elde edebiliriz. Bu scriptte varsayılan olarak hiçbir çizim açık değil, görmek istediklerinizi ayarlar kısmına girip açmanız gerekecek.

Code:
// © niko_83
//@version=4
study(title="Ichimoku + BB + Beşli Hareketli Ortalama + SAR", shorttitle="Ichimoku + BB + Beşli-MA + SAR", overlay=true)

//Hareketli Ortalama Girdileri
drawma = input(false, title = "MA Çizilsin mi?")
ma_tipi = input(defval="SMA", title='Hareketli Ortalama Türü', options=["SMA","EMA"])

ma_1p =  input(9, title="MA1")
ma_2p =  input(21, title="MA2")
ma_3p =  input(55, title="MA3")
ma_4p =  input(100, title="MA4")
ma_5p =  input(150, title="MA5")
ma_6p =  input(200, title="MA6")

//Ichimoku Girdileri
drawichimoku = input(false, "Ichimoku Çizilsin mi?")

conversionPeriods = input(20, minval=1, title="Tenkan-Sen Devir Sayısı"),
basePeriods = input(60, minval=1, title="Kijun-Sen Devir Sayısı")
laggingSpan2Periods = input(120, minval=1, title="Chikou Span Devir Sayısı"),
displacement = input(30, minval=1, title="Öteleme")

//BB Girdileri
drawBB = input(false, title = "BB Çizilsin mi?")

BBD = input(20, minval=1, title="BB Devri")
BBSS = input(2.0, minval=0.001, title="BB Standart Sapma")

// SAR girdileri
drawsar=input(false, title = "SAR Çizilsin mi?")

baslangic = input(title="Başlangıç", type=input.float, step=0.001, defval=0.02)
artis = input(title="Artış", type=input.float, step=0.001, defval=0.02)
maksimum = input(title="Maksimum", type=input.float, step=0.01, defval=0.2)

//SMA Hesapları
ma_1 = ma_tipi=="EMA" ? ema(close, ma_1p) : sma(close, ma_1p)
ma_2 = ma_tipi=="EMA" ? ema(close, ma_2p) : sma(close, ma_2p)
ma_3 = ma_tipi=="EMA" ? ema(close, ma_3p) : sma(close, ma_3p)
ma_4 = ma_tipi=="EMA" ? ema(close, ma_4p) : sma(close, ma_4p)
ma_5 = ma_tipi=="EMA" ? ema(close, ma_5p) : sma(close, ma_5p)
ma_6 = ma_tipi=="EMA" ? ema(close, ma_6p) : sma(close, ma_6p)

 //Ichimoku Hesapları
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

 //Bollinger Band Hesapları
ssapma = BBSS * stdev(close, BBD)
alt = sma(close, BBD) - ssapma
orta = sma(close, BBD)
ust = sma(close, BBD) + ssapma

// SAR Hesaplama
sarplot = sar(baslangic, artis, maksimum)

//Ichimoku çizimi
plot(conversionLine, color=drawichimoku ? #0496ff : na, title="Tenkan-Sen")
plot(baseLine, color=drawichimoku ? #991515 : na, title="Kijun-Sen")
plot(close, offset = -displacement, color=drawichimoku ? #459915 : na, title="Chikou-Span")
p1 = plot(leadLine1, offset = displacement, color=drawichimoku ? color.green : na, title="Senkou A")
p2 = plot(leadLine2, offset = displacement, color=drawichimoku ? color.red : na,  title="Senkou B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red, transp = drawichimoku ? 70:100)

//SMA Çizimi
plot(ma_1, color=drawma ? color.yellow : na, title="MA1")
plot(ma_2, color=drawma ? color.orange : na, title="MA2")
plot(ma_3, color=drawma ? color.fuchsia : na, title="MA3")
plot(ma_4, color=drawma ? color.red : na, title="MA4")
plot(ma_5, color=drawma ? color.blue : na, title="MA5")
plot(ma_6, color=drawma ? color.purple : na, title="MA6")

// BB Çizimi
plot(alt, title="Alt", color=drawBB ? color.blue:na)
plot(orta, title="Orta", color=drawBB ? color.lime:na)
plot(ust, title="Üst", color=drawBB ? color.blue:na)

// SAR Çizimi
plot(sarplot, style = plot.style_cross, color=drawsar ? color.orange:na)

[/quote


Hocam Chatgpt ye bir indikatör yazdırdım hata verdi.
Son mum kapanışı önceki 25 mumun kapanışından yüksek kapattıysa al, tersi olursa sat versin. Bunu bir zahmet kodlama imkanı var mı?
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!