Parabolic SAR & Linear Regression (BIST Tarama)
//Created by CRT Trader [https://x.com/bapiserv] //@version=6 indicator("PSAR LRC Tarama", "PSAR LRC+", overlay=true) // Ayarlar hisse_grubu = input.string("Hisseler 1", "Hisse Grubu", options=["Hisseler 1", "Hisseler 2", "Hisseler 3", "Hisseler 4", "Hisseler 5", "Hisseler 6", "Hisseler 7", "Hisseler 8", "Hisseler 9", "Hisseler 10", "Hisseler 11", "Hisseler 12", "Hisseler 13", "Hisseler 14", "Hisseler 15", "Hisseler 16", "Hisseler 17", "Hisseler 18"], group="Ayarlar") tf = input.timeframe(defval="D", title="Zaman Dilimi", options=["60", "240", "D", "W"], group="Ayarlar") yaziBoyutu = input.int(12, "Tablo Yazı Boyutu", group="Ayarlar") yaziRengi = input.color(color.new(#9E9E9E, 0), "Yazı Rengi", group="Ayarlar") yukselisRengi = input.color(#00FF00, "Yükseliş Rengi", group="Ayarlar") dususRengi = input.color(#FF0000, "Düşüş Rengi", group="Ayarlar") // User Inputs slow_sar_set = input.float(0.03, 'Slow SAR', minval = 0.01, maxval = 0.1, group = 'SAR Settings') sar_set = input.float(0.02, 'Normal SAR', minval = 0.01, maxval = 0.1, group = 'SAR Settings') fast_sar_set = input.float(0.01, 'Fast SAR', minval = 0.01, maxval = 0.1, group = 'SAR Settings') max_sar_set = input.float(0.2, 'Max SAR', minval = 0.1, maxval = 0.4, group = 'SAR Settings') show_ma = input.bool(false, "Show MA", group = 'SAR Settings') sar_avg_length = input.int(14, 'MA Length', minval = 1, group = 'SAR Settings') show_lrc = input.bool(true, "LRC Göster", group="LRC Band Settings") lrc_low_length = input.int(300, title="Low Band Length", group="LRC Band Settings") lrc_high_length = input.int(300, title="High Band Length", group="LRC Band Settings") showBuySell = input.bool(true, 'Show Signals', group = "Labels") // Calculations fast_sar = ta.sar(fast_sar_set, fast_sar_set, max_sar_set) sar = ta.sar(sar_set, sar_set, max_sar_set) slow_sar = ta.sar(slow_sar_set, slow_sar_set, max_sar_set) // Moving Average sar_avg = ta.sma(sar, sar_avg_length) // User Interface plot(fast_sar, title="Fast SAR", color=close > fast_sar ? #00ff00 : #FFBBBA, style=plot.style_circles, linewidth=1) plot(sar, title="Parabolic SAR", color=close > sar ? #00b800 : #FF0103, style=plot.style_circles, linewidth=1) plot(slow_sar, title="Slow SAR", color=close > slow_sar ? #145715 : #AA0000, style=plot.style_circles, linewidth=1) plot(show_ma ? sar_avg : na, title="SAR Ortalama", color=color.blue, style=plot.style_line, linewidth=2) // LRC a = ta.linreg(high, lrc_high_length, 0) b = ta.linreg(low, lrc_low_length, 0) c = -ta.dev(low, lrc_low_length) + b d = ta.dev(high, lrc_high_length) + a plot(show_lrc ? a : na, title="High Regression", color=color.new(color.orange, 0)) plot(show_lrc ? b : na, title="Low Regression", color=color.new(color.orange, 0)) plot(show_lrc ? c : na, title="Lower Channel", color=c < close ? color.green : color.red) plot(show_lrc ? d : na, title="Upper Channel", color=d < close ? color.green : color.red) // Signals var bool buy_trig = false var bool sell_trig = false bool buySignal = not(buy_trig) and close > fast_sar and close > sar and close > slow_sar bool sellSignal = not(sell_trig) and close < fast_sar and close < sar and close < slow_sar if (buySignal) buy_trig := true sell_trig := false else if (sellSignal) buy_trig := false sell_trig := true if (showBuySell) if (buySignal and not(buySignal[1])) label.new(x=bar_index, y=low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white) if (sellSignal and not(sellSignal[1])) label.new(x=bar_index, y=high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white) // Tarama bist_symbols = array.from("A1YEN","ACSEL","ADEL","ADESE","ADGYO","AEFES","AFYON","AGESA","AGHOL","AGROT","AGYO","AHGAZ","AHSGY","AKBNK","AKCNS","AKENR","AKFGY","AKFIS","AKFYE","AKGRT","AKHAN","AKMGY","AKSA","AKSEN","AKSGY","AKSUE","AKYHO","ALARK","ALBRK","ALCAR","ALCTL","ALFAS","ALGYO","ALKA","ALKIM","ALKLC","ALTNY","ALVES","ANELE","ANGEN","ANHYT","ANSGR","APBDL","APGLD","APLIB","APMDL","APX30","ARASE","ARCLK","ARDYZ","ARENA","ARFYE","ARMGD","ARSAN","ARTMS","ARZUM","ASELS","ASGYO","ASTOR","ASUZU","ATAGY","ATAKP","ATATP","ATATR","ATEKS","ATLAS","ATSYH","AVGYO","AVHOL","AVOD","AVPGY","AVTUR","AYCES","AYDEM","AYEN","AYES","AYGAZ","AZTEK","BAGFS","BAHKM","BAKAB","BALAT","BALSU","BANVT","BARMA","BASCM","BASGZ","BAYRK","BEGYO","BERA","BESLR","BESTE","BEYAZ","BFREN","BIENY","BIGCH","BIGEN","BIGTK","BIMAS","BINBN","BINHO","BIOEN","BIZIM","BJKAS","BLCYT","BLUME","BMSCH","BMSTL","BNTAS","BOBET","BORLS","BORSK","BOSSA","BRISA","BRKO","BRKSN","BRKVY","BRLSM","BRMEN","BRSAN","BRYAT","BSOKE","BTCIM","BUCIM","BULGS","BURCE","BURVA","BVSAN","BYDNR","CANTE","CASA","CATES","CCOLA","CELHA","CEMAS","CEMTS","CEMZY","CEOEM","CGCAM","CIMSA","CLEBI","CMBTN","CMENT","CONSE","COSMO","CRDFA","CRFSA","CUSAN","CVKMD","CWENE","DAGI","DAPGM","DARDL","DCTTR","DENGE","DERHL","DERIM","DESA","DESPC","DEVA","DGATE","DGGYO","DGNMO","DIRIT","DITAS","DMRGD","DMSAS","DNISI","DOAS","DOCO","DOFER","DOFRB","DOGUB","DOHOL","DOKTA","DSTKF","DUNYH","DURDO","DURKN","DYOBY","DZGYO","EBEBK","ECILC","ECOGR","ECZYT","EDATA","EDIP","EFOR","EGEEN","EGEGY","EGEPO","EGGUB","EGPRO","EGSER","EKGYO","EKIZ","EKOS","EKSUN","ELITE","EMKEL","EMNIS","EMPAE","ENDAE","ENERY","ENJSA","ENKAI","ENSRI","ENTRA","EPLAS","ERBOS","ERCB","EREGL","ERSU","ESCAR","ESCOM","ESEN","ETILR","ETYAT","EUHOL","EUKYO","EUPWR","EUREN","EUYO","EYGYO","FADE","FENER","FLAP","FMIZP","FONET","FORMT","FORTE","FRIGO","FRMPL","FROTO","FZLGY","GARAN","GARFA","GATEG","GEDIK","GEDZA","GENIL","GENKM","GENTS","GEREL","GESAN","GIPTA","GLBMD","GLCVY","GLDTR","GLRMK","GLRYH","GLYHO","GMSTR","GMTAS","GOKNR","GOLTS","GOODY","GOZDE","GRNYO","GRSEL","GRTHO","GSDDE","GSDHO","GSRAY","GUBRF","GUNDG","GWIND","GZNMI","HALKB","HALKS","HATEK","HATSN","HDFGS","HEDEF","HEKTS","HKTM","HLGYO","HOROZ","HRKET","HTTBT","HUBVC","HUNER","HURGZ","ICBCT","ICUGS","IDGYO","IEYHO","IHAAS","IHEVA","IHGZT","IHLAS","IHLGM","IHYAY","IMASM","INDES","INFO","INGRM","INTEK","INTEM","INVEO","INVES","ISATR","ISBIR","ISBTR","ISCTR","ISDMR","ISFIN","ISGLK","ISGSY","ISGYO","ISIST","ISKPL","ISKUR","ISMEN","ISSEN","ISYAT","IZENR","IZFAS","IZINV","IZMDC","JANTS","KAPLM","KAREL","KARSN","KARTN","KATMR","KAYSE","KBORU","KCAER","KCHOL","KENT","KERVN","KFEIN","KGYO","KIMMR","KLGYO","KLKIM","KLMSN","KLNMA","KLRHO","KLSER","KLSYN","KLYPV","KMPUR","KNFRT","KOCMT","KONKA","KONTR","KONYA","KOPOL","KORDS","KOTON","KRDMA","KRDMB","KRDMD","KRGYO","KRONT","KRPLS","KRSTL","KRTEK","KRVGD","KSTUR","KTLEV","KTSKR","KUTPO","KUVVA","KUYAS","KZBGY","KZGYO","LIDER","LIDFA","LILAK","LINK","LKMNH","LMKDC","LOGO","LRSHO","LUKSK","LXGYO","LYDHO","LYDYE","MAALT","MACKO","MAGEN","MAKIM","MAKTK","MANAS","MARBL","MARKA","MARMR","MARTI","MAVI","MCARD","MEDTR","MEGAP","MEGAP","MEGMT","MEKAG","MEPET","MERCN","MERIT","MERKO","METRO","MEYSU","MGROS","MHRGY","MIATK","MMCAS","MNDRS","MNDTR","MOBTL","MOGAN","MOPAS","MPARK","MRGYO","MRSHL","MSGYO","MTRKS","MTRYO","MZHLD","NATEN","NETAS","NETCD","NIBAS","NPTLR","NTGAZ","NTHOL","NUGYO","NUHCM","OBAMS","OBASE","ODAS","ODINE","OFSYM","ONCSM","ONRYT","OPK30","OPT25","OPTGY","OPTLR","OPX30","ORCAY","ORGE","ORMA","OSMEN","OSTIM","OTKAR","OTTO","OYAKC","OYAYO","OYLUM","OYYAT","OZATD","OZGYO","OZKGY","OZKGY","OZRDN","OZSUB","OZYSR","PAGYO","PAHOL","PAMEL","PAPIL","PARSN","PASEU","PATEK","PCILT","PEKGY","PENGD","PENTA","PETKM","PETUN","PGSUS","PINSU","PKART","PKENT","PLTUR","PNLSN","PNSUT","POLHO","POLTK","PRDGS","PRKAB","PRKME","PRZMA","PSDTC","PSGYO","QNBFK","QNBTR","QTEMZ","QUAGR","RALYH","RAYSG","REEDR","RGYAS","RNPOL","RODRG","ROYAL","RTALB","RUBNS","RUZYE","RYGYO","RYSAS","SAFKR","SAHOL","SAMAT","SANEL","SANFM","SANKO","SARKY","SASA","SAYAS","SDTTR","SEGMN","SEGYO","SEKFK","SEKUR","SELEC","SELVA","SERNT","SEYKM","SILVR","SISE","SKBNK","SKTAS","SKYLP","SKYMD","SMART","SMRTG","SMRVA","SNGYO","SNICA","SNPAM","SODSN","SOKE","SOKM","SONME","SRVGY","SUMAS","SUNTK","SURGY","SUWEN","SVGYO","TABGD","TARKM","TATEN","TATGD","TAVHL","TBORG","TCELL","TCKRC","TDGYO","TEHOL","TEKTU","TERA","TEZOL","TGSAS","THYAO","TKFEN","TKNSA","TLMAN","TMPOL","TMSN","TNZTP","TOASO","TRALT","TRCAS","TRENJ","TRGYO","TRHOL","TRILC","TRMET","TSGYO","TSKB","TSPOR","TTKOM","TTRAK","TUCLK","TUKAS","TUPRS","TUREX","TURGG","TURSG","UCAYM","UFUK","ULAS","ULKER","ULUFA","ULUSE","ULUUN","UMPAS","UNLU","USAK","USDTR","VAKBN","VAKFA","VAKFN","VAKKO","VANGD","VBTYZ","VERTU","VERUS","VESBE","VESTL","VKFYO","VKGYO","VKING","VRGYO","VSNMD","X030S","X100S","XBANA","XBANK","XBLSM","XELKT","XFINK","XGIDA","XGMYO","XHARZ","XHOLD","XILTM","XINSA","XKAGT","XKMYA","XKOBI","XKURY","XMADN","XMANA","XMESY","XSADA","XSANK","XSANT","XSBAL","XSBUR","XSDNZ","XSGRT","XSIST","XSIZM","XSKAY","XSKOC","XSKON","XSPOR","XSTKR","XTAST","XTCRT","XTEKS","XTM25","XTMTU","XTRZM","XTUMY","XU030","XU050","XU100","XUHIZ","XULAS","XUMAL","XUSIN","XUSRD","XUTEK","XUTUM","XYLDZ","XYORT","XYUZO","YAPRK","YATAS","YAYLA","YBTAS","YEOTK","YESIL","YGGYO","YIGIT","YKBNK","YKSLN","YONGA","YUNSA","YYAPI","YYLGD","Z30EA","Z30KE","Z30KP","ZEDUR","ZELOT","ZERGY","ZGOLD","ZGYO","ZOREN","ZPBDL","ZPLIB","ZPT10","ZPX30","ZRE20","ZRGYO","ZSR25","ZTLRF","ZTLRK","ZTM25") func() => [close, close[1], buySignal and not(buySignal[1]), sellSignal and not(sellSignal[1])] get_selected_symbols() => selected_symbols = array.new
() grup_no = int(str.tonumber(str.replace(hisse_grubu, "Hisseler ", "")) ) start = (grup_no - 1) * 40 end = math.min(start + 39, array.size(bist_symbols) - 1) if start < array.size(bist_symbols) for i = start to end array.push(selected_symbols, array.get(bist_symbols, i)) selected_symbols // Tablo if barstate.islast var table result_table = table.new(position.top_right, 4, 41, color.new(#131722, 5), color.new(#2A2E39, 0), 1, color.new(#2A2E39, 0), 1) table.cell(result_table, 0, 0, "Hisse", bgcolor=color.new(#2962FF, 0), text_color = color.white, text_size = yaziBoyutu) table.cell(result_table, 1, 0, "Fiyat", bgcolor=color.new(#2962FF, 0), text_color = color.white, text_size = yaziBoyutu) table.cell(result_table, 2, 0, "Değişim", bgcolor=color.new(#2962FF, 0), text_color = color.white, text_size = yaziBoyutu) table.cell(result_table, 3, 0, "Sinyal", bgcolor=color.new(#2962FF, 0), text_color = color.white, text_size = yaziBoyutu) selected_symbols = get_selected_symbols() size = array.size(selected_symbols) num = 0 if size > 0 for i = 0 to size - 1 sym = array.get(selected_symbols, i) [price, price_1, buy, sell] = request.security(sym, tf, func()) if (not na(price) and (buy or sell)) change = (price / price_1 - 1) * 100 cellColor = (num % 2 == 0 ? color.new(#131722, 5) : color.new(#1C2030, 0)) // Tablo hücrelerini doldur table.cell(result_table, 0, num + 1, sym, bgcolor=cellColor, text_color = yaziRengi, text_size = yaziBoyutu) table.cell(result_table, 1, num + 1, str.tostring(price, "#.##"), bgcolor=cellColor, text_color = yaziRengi, text_size = yaziBoyutu) table.cell(result_table, 2, num + 1, str.tostring(change, "#.##"), bgcolor=cellColor, text_color = (price_1 > price ? dususRengi : (price_1 < price ? yukselisRengi : yaziRengi)), text_size = yaziBoyutu) table.cell(result_table, 3, num + 1, buy ? "Yükseliş" : "Düşüş", bgcolor=cellColor, text_color = (sell ? dususRengi : (buy ? yukselisRengi : yaziRengi)), text_size = yaziBoyutu) num += 1 if (num == 0) table.cell(result_table, 0, 1, "-Hisse Yok-", bgcolor=color.new(#131722, 5), text_color = color.white, text_size = yaziBoyutu)
Kopyala