Untitled
unknown
plain_text
21 days ago
6.5 kB
5
Indexable
//@version=6 indicator("Komp EMA", overlay=true) // =================== SABIT DEĞERLER =================== var GRUP_KEK = "EMA Ayarları" var GRUP_LOL = "Stil Ayarları" var GRUP_BRUH = "Etiket Ayarları" var PERIYOT_MINIK = 34 var PERIYOT_KOCAMAN = 55 // =================== GIRIS PARAMETRELERI =================== // EMA Ayarları patatesGoster = input.bool(false, "34 Periyot EMA Göster", group=GRUP_KEK) domatesGoster = input.bool(false, "55 Periyot EMA Göster", group=GRUP_KEK) salatalikUzat = input.bool(true, "Çizgi Uzatmayı Göster", group=GRUP_KEK) havucGoster = input.bool(false, "Önceki Çizgiyi Göster", group=GRUP_KEK) // Stil Ayarları cizgiTipi = input.string("solid", "Çizgi Tipi", options=["solid", "dotted", "dashed"], group=GRUP_LOL) kalinlik = input.int(4, "Çizgi Kalınlığı", minval=1, maxval=4, group=GRUP_LOL) eskiKalinlik = input.int(1, "Geçmiş Çizgi Kalınlığı", minval=1, maxval=4, group=GRUP_LOL) patatesRenk = input.color(color.blue, "34 EMA Renk", group=GRUP_LOL) domatesRenk = input.color(color.orange, "55 EMA Renk", group=GRUP_LOL) // Etiket Ayarları etiketKonum = input.string("left", "Etiket Yönü", options=["left", "center", "right"], group=GRUP_BRUH) etiketPozisyon = input.string("son", "Etiket Pozisyonu", options=["baş", "orta", "son"], group=GRUP_BRUH) etiketBoyut = input.string("normal", "Yazı Boyutu", options=["tiny", "small", "normal", "large", "huge"], group=GRUP_BRUH) patatesYazi = input.color(color.white, "34 EMA Yazı Rengi", group=GRUP_BRUH) domatesYazi = input.color(color.white, "55 EMA Yazı Rengi", group=GRUP_BRUH) // Zaman Ayarları zamanDilimi = input.timeframe(defval='', title='PERİYOT', group="Tarama yapmak istediğiniz periyotu seçin") // =================== YARDIMCI FONKSIYONLAR =================== cizgiStiliAl(tip) => switch tip "solid" => line.style_solid "dotted" => line.style_dotted "dashed" => line.style_dashed etiketStiliAl(konum) => switch konum "left" => label.style_label_left "center" => label.style_label_center "right" => label.style_label_right etiketBoyutuAl(boyut) => switch boyut "tiny" => size.tiny "small" => size.small "normal" => size.normal "large" => size.large "huge" => size.huge etiketOfsetiAl(pozisyon) => switch pozisyon "baş" => 0 "orta" => 3 "son" => 6 // =================== HESAPLAMALAR =================== // Zaman seçimi secilen_zaman = zamanDilimi == "" ? timeframe.period : zamanDilimi // Verileri al [_, lahmacunFiyat] = request.security(syminfo.tickerid, secilen_zaman, [close, close]) [_, pideFiyat] = request.security("BIST:XU100", secilen_zaman, [close, close]) // Göreceli güç hesaplama gucumKuvvetim = lahmacunFiyat / pideFiyat // EMA hesaplamaları patatesEMA = ta.ema(gucumKuvvetim, PERIYOT_MINIK) domatesEMA = ta.ema(gucumKuvvetim, PERIYOT_KOCAMAN) // Fiyat ayarlı EMA'lar patatesEMA_Fiyat = patatesEMA * pideFiyat domatesEMA_Fiyat = domatesEMA * pideFiyat // =================== CIZIMLER =================== // Eski çizgiler plot(patatesGoster and havucGoster ? patatesEMA_Fiyat : na, color=color.new(patatesRenk, 70), linewidth=eskiKalinlik, title="34 EMA Geçmiş") plot(domatesGoster and havucGoster ? domatesEMA_Fiyat : na, color=color.new(domatesRenk, 70), linewidth=eskiKalinlik, title="55 EMA Geçmiş") // Yeni çizgiler ve etiketler var line patatesCizgi = na var line domatesCizgi = na var label patatesEtiket = na var label domatesEtiket = na if patatesGoster line.delete(patatesCizgi) label.delete(patatesEtiket) if salatalikUzat patatesCizgi := line.new(bar_index, patatesEMA_Fiyat, bar_index + 6, patatesEMA_Fiyat, color=patatesRenk, width=kalinlik, style=cizgiStiliAl(cizgiTipi)) else patatesCizgi := line.new(bar_index - 1, patatesEMA_Fiyat[1], bar_index, patatesEMA_Fiyat, color=patatesRenk, width=kalinlik, style=cizgiStiliAl(cizgiTipi)) etiketOfset = salatalikUzat ? etiketOfsetiAl(etiketPozisyon) : 0 patatesEtiket := label.new(bar_index + etiketOfset, patatesEMA_Fiyat, text="34 EMA: " + str.tostring(patatesEMA_Fiyat, "#.##"), color=patatesRenk, textcolor=patatesYazi, style=etiketStiliAl(etiketKonum), size=etiketBoyutuAl(etiketBoyut)) if domatesGoster line.delete(domatesCizgi) label.delete(domatesEtiket) if salatalikUzat domatesCizgi := line.new(bar_index, domatesEMA_Fiyat, bar_index + 6, domatesEMA_Fiyat, color=domatesRenk, width=kalinlik, style=cizgiStiliAl(cizgiTipi)) else domatesCizgi := line.new(bar_index - 1, domatesEMA_Fiyat[1], bar_index, domatesEMA_Fiyat, color=domatesRenk, width=kalinlik, style=cizgiStiliAl(cizgiTipi)) etiketOfset = salatalikUzat ? etiketOfsetiAl(etiketPozisyon) : 0 domatesEtiket := label.new(bar_index + etiketOfset, domatesEMA_Fiyat, text="55 EMA: " + str.tostring(domatesEMA_Fiyat, "#.##"), color=domatesRenk, textcolor=domatesYazi, style=etiketStiliAl(etiketKonum), size=etiketBoyutuAl(etiketBoyut)) // =================== AL-SAT MANTIĞI =================== // Pozisyon takibi var float sonIslem = na // Pozisyon durumunu tutan değişken // ALIM ŞARTI: 34 EMA, 55 EMA'yı yukarı keserse ve pozisyon açık değilse alimSinyali = ta.crossover(patatesEMA, domatesEMA) and (sonIslem != 1) // SATIŞ ŞARTI: 55 EMA, 34 EMA'yı yukarı keserse ve pozisyon açık ise satisSinyali = ta.crossover(domatesEMA, patatesEMA) and (sonIslem == 1) // Pozisyon güncelleme sonIslem := alimSinyali ? 1 : (satisSinyali ? 0 : sonIslem) // =================== GÖRSEL UYARILAR =================== plotshape(alimSinyali, location=location.belowbar, style=shape.labelup, color=color.green, size=size.huge, title="AL") plotshape(satisSinyali, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.huge, title="SAT") // EMA çizgileri plot(patatesGoster ? patatesEMA_Fiyat : na, color=color.blue, title="34 EMA") plot(domatesGoster ? domatesEMA_Fiyat : na, color=color.orange, title="55 EMA")
Editor is loading...
Leave a Comment