├── adx ├── amerikan_borsasi.ipynb ├── binance_tarama ├── bist_20_50_kesişimi.ipynb ├── dip ├── github_veri_çekme.ipynb ├── hisse_supertrend ├── hisse_tarama ├── hisse_tilson ├── istanbul_secim_yuz_tanıma ├── kanal kırılım ├── kripto_dip_tarama.ipynb ├── toplama.ipynb └── yerel_secim.json /adx: -------------------------------------------------------------------------------- 1 | //@version=5 2 | strategy("ADX Di+ Di- Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.GBP) 3 | 4 | // Input parameters 5 | i_sigLen = input.int(14, title='ADX Smoothing') 6 | i_diLen = input.int(14, title='DI Length') 7 | i_hlRange = input.int(20, title='Level Range') 8 | i_hlTrend = input.int(35, title='Level Trend') 9 | i_alertOn = input.bool(true, title="■ Alert On/Off") 10 | i_barColOn = input.bool(true, title="■ Bar Color On/Off") 11 | 12 | // Function to calculate Directional Movement 13 | f_dirMov(_len) => 14 | _up = ta.change(high) 15 | _down = -ta.change(low) 16 | _plusDM = na(_up) ? na : _up > _down and _up > 0 ? _up : 0 17 | _minusDM = na(_down) ? na : _down > _up and _down > 0 ? _down : 0 18 | _trueRange = ta.rma(ta.tr, _len) 19 | _plus = fixnan(100 * ta.rma(_plusDM, _len) / _trueRange) 20 | _minus = fixnan(100 * ta.rma(_minusDM, _len) / _trueRange) 21 | [_plus, _minus] 22 | 23 | // Function to calculate ADX and DI 24 | f_sig(_diLen, _sigLen) => 25 | [_plus, _minus] = f_dirMov(_diLen) 26 | _sum = _plus + _minus 27 | _sig = 100 * ta.rma(math.abs(_plus - _minus) / (_sum == 0 ? 1 : _sum), _sigLen) 28 | [_sig] 29 | 30 | // Calculations 31 | condition = 0.0 32 | [sig] = f_sig(i_diLen, i_sigLen) 33 | [diPlus, _] = f_dirMov(i_diLen) 34 | [_, diMinus] = f_dirMov(i_diLen) 35 | 36 | hlRange = sig <= i_hlRange 37 | diUp = diPlus >= diMinus 38 | diUpUp = diPlus >= i_hlTrend 39 | diDn = diMinus > diPlus 40 | diDnDn = diMinus > i_hlTrend 41 | crossDi = ta.cross(diPlus, diMinus) 42 | sigUp = sig > sig[1] 43 | sigDir = sig > sig[1] and diUp and not hlRange ? 1 : sig > sig[1] and diDn and not hlRange ? -1 : 0 44 | 45 | // Entry and exit conditions 46 | entryLong = not hlRange and diUp and sigUp and not diUp[1] or not hlRange and diUp and sigUp and sig > i_hlRange and hlRange[1] 47 | entryLongStr = not hlRange and diUp and sigUp and diUpUp 48 | exitLong = crossDi and diUp[1] or hlRange and not hlRange[1] 49 | condition := condition[1] != 1 and entryLongStr ? 1 : condition[1] != 0.5 and entryLong ? 0.5 : condition[1] != 0 and exitLong ? 0 : nz(condition[1]) 50 | longE = barstate.isconfirmed and condition[1] != 0.5 and condition == 0.5 51 | longEStr = barstate.isconfirmed and condition[1] != 1 and condition == 1 52 | longX = barstate.isconfirmed and ((condition[1] == 0.5 and condition == 0) or (condition[1] == 1 and condition == 0)) 53 | 54 | // Colors for plots 55 | C_GREEN = color.new(#006400, 0) //Green 56 | C_RED = color.new(#8B0000, 0) //Red 57 | c_sig = hlRange ? color.orange : sigUp and diUp ? C_GREEN : not sigUp and diUp ? color.new(C_GREEN, 50) : sigUp and diDn ? C_RED : not sigUp and diDn ? color.new(C_RED, 50) : na 58 | c_fillAdx = hlRange ? color.new(color.orange, 90) : not hlRange and diUp and diUpUp ? color.new(C_GREEN, 90) : not hlRange and diUp and not diUpUp ? color.new(C_GREEN, 90) : not hlRange and diDn and diDnDn ? color.new(C_RED, 90) : not hlRange and diDn and not diDnDn ? color.new(C_RED, 90) : na 59 | 60 | // Plots 61 | plot(sig, title='ADX', color=c_sig, linewidth=3) 62 | p_diPlus = plot(diPlus, title='+DI', color=C_GREEN) 63 | p_diMinus = plot(diMinus, title='-DI', color=C_RED) 64 | fill(p_diPlus, p_diMinus, title='Fill ADX', color=c_fillAdx) 65 | plot(crossDi ? diPlus : na, title='Cross Di', color=#00000000, style=plot.style_circles, linewidth=2) 66 | hline(i_hlRange, title='Level Range', color=color.gray, linestyle=hline.style_dotted, linewidth=1) 67 | hline(i_hlTrend, title='Level Trend', color=color.gray, linestyle=hline.style_dotted, linewidth=1) 68 | barcolor(i_barColOn ? c_sig : na) 69 | 70 | // Alerts 71 | plotshape(i_alertOn and longE ? i_hlTrend + 10 : na, title='Bullish\nTrend', color=C_GREEN, style=shape.triangleup, size=size.tiny, location=location.absolute) 72 | plotshape(i_alertOn and longEStr ? i_hlTrend + 10 : na, title='Strong\nBullish\nTrend', color=C_GREEN, style=shape.triangleup, size=size.small, location=location.absolute) 73 | plotshape(i_alertOn and longX ? i_hlTrend + 10 : na, title='End\nTrend', color=color.new(color.orange, 0), style=shape.xcross, size=size.small, location=location.absolute) 74 | 75 | alertcondition(longE or longEStr or longX, title='Any Alert', message='Any Alert') 76 | alertcondition(longE, title='Buy Weak Alert', message='Buy Weak Alert') 77 | alertcondition(longEStr, title='Buy Strong Alert', message='Buy Strong Alert') 78 | alertcondition(longX, title='Buy Close Alert', message='Buy Close Alert') 79 | 80 | // Strategy logic 81 | var float tpLevel = na 82 | 83 | longCondition = longEStr 84 | exitConditionLong = longX 85 | 86 | if (longCondition) 87 | strategy.entry("Long", strategy.long, stop=close * 0.9, limit=close * 1.1) 88 | tpLevel := close * 1.05 89 | line.new(x1=bar_index, y1=tpLevel, x2=bar_index + 1, y2=tpLevel, color=color.new(color.green, 0), style=line.style_dashed) 90 | 91 | if (exitConditionLong) 92 | strategy.close("Long", comment="Stop Loss") 93 | //label.new(bar_index, high, "stop loss", color=color.red, textcolor=color.red, style=label.style_label_down, yloc=yloc.abovebar) 94 | 95 | if (strategy.position_size > 0 and high >= tpLevel) 96 | strategy.close("Long", comment="İşlem Tamam") 97 | //label.new(bar_index, tpLevel, "işlem tamam", color=color.green, textcolor=color.green, style=label.style_label_up, yloc=yloc.belowbar) 98 | -------------------------------------------------------------------------------- /amerikan_borsasi.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyNiKJnCpoilOTFaJ2u0OVMs", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 2, 32 | "metadata": { 33 | "colab": { 34 | "base_uri": "https://localhost:8080/" 35 | }, 36 | "id": "HNYdTieJAqv5", 37 | "outputId": "69c3f510-359f-4dd6-f7c3-3aec15fef6b0" 38 | }, 39 | "outputs": [ 40 | { 41 | "output_type": "stream", 42 | "name": "stdout", 43 | "text": [ 44 | "Collecting git+https://github.com/rongardF/tvdatafeed\n", 45 | " Cloning https://github.com/rongardF/tvdatafeed to /tmp/pip-req-build-1vdu9cmf\n", 46 | " Running command git clone --filter=blob:none --quiet https://github.com/rongardF/tvdatafeed /tmp/pip-req-build-1vdu9cmf\n", 47 | " Resolved https://github.com/rongardF/tvdatafeed to commit e6f6aaa7de439ac6e454d9b26d2760ded8dc4923\n", 48 | " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 49 | "Collecting tradingview-screener\n", 50 | " Downloading tradingview_screener-2.5.0-py3-none-any.whl (43 kB)\n", 51 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m659.0 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 52 | "\u001b[?25hRequirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (67.7.2)\n", 53 | "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.0.3)\n", 54 | "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (1.8.0)\n", 55 | "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.31.0)\n", 56 | "Collecting pandas (from tvdatafeed==2.1.0)\n", 57 | " Downloading pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)\n", 58 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.0/13.0 MB\u001b[0m \u001b[31m36.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 59 | "\u001b[?25hRequirement already satisfied: numpy>=1.22.4 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (1.25.2)\n", 60 | "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2.8.2)\n", 61 | "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2023.4)\n", 62 | "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2024.1)\n", 63 | "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.3.2)\n", 64 | "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.7)\n", 65 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2.0.7)\n", 66 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2024.6.2)\n", 67 | "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->tvdatafeed==2.1.0) (1.16.0)\n", 68 | "Building wheels for collected packages: tvdatafeed\n", 69 | " Building wheel for tvdatafeed (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 70 | " Created wheel for tvdatafeed: filename=tvdatafeed-2.1.0-py3-none-any.whl size=17533 sha256=8b45f005f85924d8ef6d033e2ee36f8568623b43738efbab2a0593c81437d83a\n", 71 | " Stored in directory: /tmp/pip-ephem-wheel-cache-8ns72a6t/wheels/e4/32/1e/21ebcacc6549d75fae3bf3ff75cee8fcbe4e5c189d88fbd5a1\n", 72 | "Successfully built tvdatafeed\n", 73 | "Installing collected packages: pandas, tvdatafeed, tradingview-screener\n", 74 | " Attempting uninstall: pandas\n", 75 | " Found existing installation: pandas 2.0.3\n", 76 | " Uninstalling pandas-2.0.3:\n", 77 | " Successfully uninstalled pandas-2.0.3\n", 78 | "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", 79 | "cudf-cu12 24.4.1 requires pandas<2.2.2dev0,>=2.0, but you have pandas 2.2.2 which is incompatible.\n", 80 | "google-colab 1.0.0 requires pandas==2.0.3, but you have pandas 2.2.2 which is incompatible.\u001b[0m\u001b[31m\n", 81 | "\u001b[0mSuccessfully installed pandas-2.2.2 tradingview-screener-2.5.0 tvdatafeed-2.1.0\n" 82 | ] 83 | }, 84 | { 85 | "output_type": "stream", 86 | "name": "stderr", 87 | "text": [ 88 | "ERROR:tvDatafeed.main:error while signin\n", 89 | "WARNING:tvDatafeed.main:you are using nologin method, data you access may be limited\n" 90 | ] 91 | }, 92 | { 93 | "output_type": "stream", 94 | "name": "stdout", 95 | "text": [ 96 | "['AMEX:PLAG', 1.485, False]\n", 97 | "['OTC:KDDIY', 13.06, False]\n", 98 | "['OTC:AREVF', 0.028, False]\n", 99 | "['AMEX:CARY', 20.69, False]\n", 100 | "['AMEX:TMFG', 29.43, False]\n", 101 | "['OTC:SKLTY', 28.65, False]\n", 102 | "['ABEO', 4.07, False]\n", 103 | "['AMEX:GBLD', 15.6376, False]\n", 104 | "['AMEX:KOMP', 45.88, False]\n", 105 | "['FFIE', 0.427, False]\n", 106 | "['CALC', 4.45, False]\n", 107 | "['JSMD', 66.08, False]\n", 108 | "['OTC:BESVF', 173.82, False]\n", 109 | "['AMEX:AFIF', 9.11, False]\n", 110 | "['NYSE:IAE', 6.32, False]\n", 111 | "['OTC:NDCVF', 13.0, False]\n", 112 | "['TMC', 1.39, False]\n", 113 | "['AMEX:AULT/PD', 26.6, False]\n", 114 | "['EMB', 88.975, False]\n", 115 | "['OTC:WBRBY', 6.56, False]\n", 116 | "['AMEX:CEI', 0.116554, False]\n", 117 | "['OTC:MCEM', 193.7327, False]\n", 118 | "['OTC:PRLPF', 16.83, False]\n", 119 | "['OTC:MMTLF', 0.17535, False]\n", 120 | "['SLNA', 0.0791, False]\n", 121 | "['OTC:STQN', 0.341, False]\n", 122 | "['OTC:TUIFF', 7.11, False]\n", 123 | "['OTC:ADYYF', 1229.815, False]\n", 124 | "['CVGI', 5.02, False]\n", 125 | "['OTC:BRSE', 0.06, False]\n", 126 | "['OTC:WRLC', 551.25, False]\n", 127 | "['OTC:CJREF', 0.1, False]\n", 128 | "['OTC:GWTR', 0.02, False]\n", 129 | "['OTC:LTHCF', 0.3925, False]\n", 130 | "['QQQA', 46.2146, False]\n", 131 | "['NVDS', 39.7, False]\n", 132 | "['AMEX:PALC', 48.73, False]\n", 133 | "['OTC:CVPUF', 1.53, False]\n", 134 | "['OTC:PRXXF', 12.5, False]\n", 135 | "['AMEX:PAVE', 36.82, False]\n", 136 | "['OTC:BAESY', 67.16, False]\n", 137 | "['OTC:SOAGY', 47.47, False]\n", 138 | "['AMEX:SDEM', 25.71, False]\n", 139 | "['MNDO', 1.8799, False]\n", 140 | "['VC', 104.88, False]\n", 141 | "['OTC:VULMF', 0.085, False]\n", 142 | "['OTC:GPPRF', 0.08, False]\n", 143 | "['OTC:GLNLF', 0.0982, False]\n", 144 | "['AMEX:CMCI', 25.559, False]\n", 145 | "['OTC:PGCSF', 1.94, False]\n", 146 | "['FCEF', 20.83, False]\n", 147 | "['BECN', 89.03, False]\n", 148 | "['OTC:CLOEF', 2.1, False]\n", 149 | "['OTC:HLAGF', 180.42, False]\n", 150 | "['OTC:BKISF', 4.0418, False]\n", 151 | "['OTC:SSEBF', 0.0119, True]\n", 152 | "['AMEX:EUM', 13.45, False]\n", 153 | "['AMEX:DJUL', 39.772, False]\n", 154 | "['WINC', 23.86, False]\n", 155 | "['NYSE:APLE', 14.245, False]\n", 156 | "['OTC:QCXGF', 0.005, False]\n", 157 | "['AMEX:BRN', 2.38, False]\n", 158 | "['STRR', 4.01, False]\n", 159 | "['NYSE:EPR/PC', 19.3199, False]\n", 160 | "['KVAC', 10.58, False]\n", 161 | "['AMEX:APRJ', 24.88, False]\n", 162 | "['OTC:CMGO', 0.002, False]\n", 163 | "['CVLY', 22.42, False]\n", 164 | "['ARAY', 1.75, False]\n", 165 | "['NYSE:AHH/PA', 21.57, False]\n", 166 | "['OTC:FZRO', 0.54, False]\n", 167 | "['OTC:WCUI', 0.0006, False]\n", 168 | "['OTC:BUDZ', 0.069, False]\n", 169 | "['OTC:RKMSF', 0.0133, False]\n", 170 | "['AMEX:IWIN', 26.68, False]\n", 171 | "['VTNR', 1.03, False]\n", 172 | "['NYSE:CCM', 0.76, False]\n", 173 | "['NYSE:PDT', 11.385, False]\n", 174 | "['POWI', 69.8, False]\n", 175 | "['AMEX:BCIL', 25.4967, False]\n", 176 | "['OTC:YORKF', 0.055, False]\n", 177 | "['OTC:FXLG', 29.54, False]\n", 178 | "['OTC:FINMY', 11.5099, False]\n", 179 | "['AMEX:SMDV', 60.85, False]\n", 180 | "['OTC:INIKF', 0.08, False]\n", 181 | "['OTC:XNYIF', 0.5491, False]\n", 182 | "['NYSE:OTIS', 95.45, False]\n", 183 | "['AMEX:SEPZ', 37.353, False]\n", 184 | "['OTC:PMAH', 1e-06, False]\n", 185 | "['CAAS', 3.71, False]\n", 186 | "['OTC:NEXHY', 11.06, False]\n", 187 | "['ASUR', 8.2, False]\n", 188 | "['AMEX:HNRA', 2.525, False]\n", 189 | "['OTC:VYND', 0.42825, False]\n", 190 | "['AMEX:FLOW', 30.04, False]\n", 191 | "['NYSE:SLG/PI', 20.94, False]\n", 192 | "['NYSE:AEE', 69.92, False]\n", 193 | "['NAAS', 3.46, False]\n", 194 | "['AMEX:BECO', 20.85, False]\n", 195 | "['AMEX:QTAP', 34.78, False]\n", 196 | "['OTC:BLFR', 0.24, False]\n", 197 | "['AKLI', 0.431949, False]\n", 198 | "['ASPI', 3.2, False]\n", 199 | "['OTC:BBSEY', 5.948, False]\n", 200 | "['AMEX:INCE', 54.1699, False]\n", 201 | "['NYSE:YELP', 36.87, False]\n", 202 | "['KURA', 20.61, False]\n", 203 | "['OTC:RGLSF', 1.49, False]\n", 204 | "['SVCO', 17.64, False]\n", 205 | "['VEV', 0.57, False]\n", 206 | "['OTC:FTMDF', 0.0661, False]\n", 207 | "['GTR', 23.79, False]\n", 208 | "['OTC:NVLHF', 0.0946, False]\n", 209 | "['VSME', 1.88, False]\n", 210 | "['NYSE:BME', 40.2, False]\n", 211 | "['NYSE:HUM', 360.08, False]\n", 212 | "['OSIS', 136.34, False]\n", 213 | "['OTC:IINX', 1e-06, False]\n", 214 | "['AFCG', 11.58, False]\n", 215 | "['AMEX:FTEC', 170.42, False]\n", 216 | "['AMEX:BGI', 2.505, False]\n", 217 | "['OTC:COGNY', 0.36, False]\n", 218 | "['OTC:ADXS', 0.25, False]\n", 219 | "['NYSE:RSKD', 6.36, False]\n", 220 | "['AMEX:SPXV', 58.26, False]\n", 221 | "['OTC:NESRF', 8.685, False]\n", 222 | "['NYSE:UHT', 38.23, False]\n", 223 | "['IPXX', 10.6, False]\n", 224 | "['OTC:DINRF', 94.815, False]\n", 225 | "['OTC:CANOF', 0.295, False]\n", 226 | "['OTC:BWMY', 0.0225, False]\n", 227 | "['OTC:NPPXF', 0.9009, False]\n", 228 | "['OTC:CETI', 0.3, False]\n", 229 | "['AMEX:BFIX', 23.3302, False]\n", 230 | "['ONBPO', 24.95, False]\n", 231 | "['OTC:KROEF', 0.805, False]\n", 232 | "['JFIN', 6.22, False]\n", 233 | "['PUI', 34.6583, False]\n", 234 | "['OTC:BAUFF', 0.075, False]\n", 235 | "['OTC:EVKIF', 19.35, False]\n", 236 | "['OTC:LNMG', 0.24, True]\n", 237 | "['OTC:XOEEF', 0.2172, False]\n", 238 | "['OTC:LWSCF', 10.4, False]\n", 239 | "['ACST', 3.02, False]\n", 240 | "['NYSE:IGT', 19.995, False]\n", 241 | "['OTC:UNVGY', 15.01, False]\n", 242 | "['OTC:BBVXF', 10.05, False]\n", 243 | "['OTC:FFRMF', 1e-06, False]\n", 244 | "['AMEX:THNR', 26.05, False]\n", 245 | "['BLNK', 2.685, False]\n", 246 | "['OTC:FNMAS', 4.7525, False]\n", 247 | "['NYSE:BRX', 22.31, False]\n", 248 | "['AMEX:OFOS', 28.1059, False]\n", 249 | "['AMEX:EV', 23.3574, False]\n", 250 | "['NYSE:GDL/PC', 49.49, False]\n", 251 | "['TBLA', 3.4, False]\n", 252 | "['OTC:PMMAF', 45.39, False]\n", 253 | "['NYSE:PHT', 7.449, False]\n", 254 | "['AMEX:BRZU', 61.97, False]\n", 255 | "['OTC:AJOY', 0.0352, False]\n", 256 | "['MODD', 1.57, False]\n", 257 | "['OTC:ARBV', 16.6, False]\n", 258 | "['NYSE:AGM.A', 123.48, False]\n", 259 | "['DUOT', 2.69, False]\n", 260 | "['OTC:PPBN', 27.5, False]\n", 261 | "['TOP', 2.42, False]\n", 262 | "['AMEX:PCIG', 9.6, False]\n", 263 | "['AMEX:XTNT', 0.6212, False]\n", 264 | "['OTC:AINMF', 0.2215, False]\n", 265 | "['AMEX:UCC', 36.3101, False]\n", 266 | "['AMEX:YMAG', 20.82, False]\n", 267 | "['VONV', 76.779, False]\n", 268 | "['CALB', 20.1, False]\n", 269 | "['TSLA', 196.5, False]\n", 270 | "['NYSE:KB', 55.86, False]\n", 271 | "['OTC:RCAR', 0.0001, False]\n", 272 | "['OTC:WNLV', 1.197, False]\n", 273 | "['TRIB', 2.04, False]\n", 274 | "['BCAL', 12.82, False]\n", 275 | "['AMEX:PSFF', 27.766, False]\n", 276 | "['OTC:LONCF', 0.26, False]\n", 277 | "['IFRX', 1.5899, False]\n", 278 | "['OTC:MICRD', 0.5227, False]\n", 279 | "['NTRP', 1.995, False]\n", 280 | "['ABTS', 0.5001, False]\n", 281 | "['OPI', 2.11, False]\n", 282 | "['NYSE:MFAO', 25.4, False]\n", 283 | "['OTC:SCGPY', 2.28, False]\n", 284 | "['WISE', 27.66, False]\n", 285 | "['AMEX:NTIP', 1.59, False]\n", 286 | "['AMEX:EDOW', 33.9565, False]\n", 287 | "['NFTY', 59.72, False]\n", 288 | "['AMEX:OCTW', 34.4992, False]\n", 289 | "['OTC:GCHK', 0.0002, False]\n", 290 | "['OTC:FSPKF', 18.25, False]\n", 291 | "['OTC:DIGP', 0.0191, False]\n", 292 | "['OTC:COSG', 1e-06, False]\n", 293 | "['AMEX:IDEV', 65.48, False]\n", 294 | "['OTC:DTSRF', 4.6, False]\n", 295 | "['OTC:APTPF', 1.6, False]\n", 296 | "['WAFD', 26.76, False]\n", 297 | "['AMEX:CALF', 43.19, False]\n", 298 | "['AMEX:RSPN', 45.3879, False]\n", 299 | "['NYSE:SNAP', 16.76, False]\n", 300 | "['OTC:RHCGF', 2.1, False]\n", 301 | "['OTC:STMZF', 11.244, False]\n", 302 | "['OTC:NKGFF', 0.205, False]\n", 303 | "['SBLK', 24.62, False]\n", 304 | "['SPPL', 0.5735, False]\n", 305 | "['OTC:SALRY', 13.33, False]\n", 306 | "['TXRH', 171.29, False]\n", 307 | "['OTC:MCHVY', 20.2, False]\n", 308 | "['AMEX:MJUS', 1.73, False]\n", 309 | "['OTC:PREC', 0.005, False]\n", 310 | "['AMEX:TILT', 199.28, False]\n", 311 | "['OTC:ONEXF', 68.99, False]\n", 312 | "['OTC:OILY', 1e-06, False]\n", 313 | "['BOCNU', 11.88, False]\n", 314 | "['OTC:KAIKY', 14.2, False]\n", 315 | "['AMEX:BAUG', 40.54, False]\n", 316 | "['OTC:TRUMY', 16.17, False]\n", 317 | "['AMEX:CLDI', 0.19, False]\n", 318 | "Error fetching data for NYSE:STXI: 1\n", 319 | "['PROF', 8.95, False]\n", 320 | "['TEM', 27.3, False]\n", 321 | "['OTC:IVSRF', 5.95, False]\n", 322 | "['NYSE:SXC', 9.47, False]\n", 323 | "['OTC:ENEAY', 9.42, False]\n", 324 | "['BGC', 8.07, False]\n", 325 | "['BWAY', 6.16, False]\n", 326 | "['OTC:IGBSF', 8.26, False]\n", 327 | "['AMEX:GURU', 43.23, False]\n", 328 | "['OTC:BOMO', 0.00441, False]\n", 329 | "['OTC:GHST', 0.0411, False]\n", 330 | "['MGIC', 9.9891, True]\n", 331 | "['OTC:DSDVF', 154.16, False]\n", 332 | "['OTC:QBIO', 1e-06, False]\n", 333 | "['DWAS', 83.7, False]\n", 334 | "['OTC:CMGMF', 5.03, False]\n", 335 | "['OTC:HMMR', 0.39, False]\n", 336 | "['OTC:MDDVF', 0.2918, False]\n", 337 | "['OTC:REMRF', 0.414, False]\n", 338 | "['AAPU', 33.4, False]\n", 339 | "['OTC:RCRUY', 10.453, False]\n", 340 | "['OTC:DTCFF', 0.5723, False]\n", 341 | "['OTC:CWXZF', 5.158, False]\n", 342 | "['OTC:TOLWF', 3.41, False]\n", 343 | "['OTC:CVAT', 0.009, False]\n", 344 | "['AMEX:IOPP', 27.8099, False]\n", 345 | "['OTC:SFIO', 0.002, False]\n", 346 | "['OTC:DEWM', 1e-06, False]\n", 347 | "['UCBI', 24.92, False]\n", 348 | "['NYSE:PNM', 36.53, False]\n", 349 | "['NYSE:JPM/PM', 19.27, False]\n", 350 | "['NYSE:HCXY', 24.79, False]\n", 351 | "['OTC:MBLU', 18.55, False]\n", 352 | "['AMEX:STPZ', 51.545, False]\n", 353 | "['OTC:FBDS', 0.04, True]\n", 354 | "['OTC:HYPRF', 0.953, False]\n", 355 | "['OTC:ENDRF', 0.389, False]\n", 356 | "['AMEX:NRGU', 491.47, False]\n", 357 | "['OST', 0.4279, True]\n", 358 | "['NYSE:AMPX', 1.23, False]\n", 359 | "['OTC:STOSF', 4.76, False]\n", 360 | "['NYSE:HQH', 17.31, False]\n", 361 | "['OTC:LDNXF', 119.5, False]\n", 362 | "['AMEX:DUBS', 30.57, False]\n", 363 | "['AMEX:JULT', 36.98, False]\n", 364 | "['OTC:SPNRF', 0.0071, False]\n", 365 | "['OTC:KNNGF', 39.11, False]\n", 366 | "['AMEX:SCHZ', 45.705, False]\n", 367 | "['OTC:IVCGF', 11.2535, False]\n", 368 | "['AMEX:KSEA', 26.32, False]\n", 369 | "['NYSE:EFC/PB', 21.77, False]\n", 370 | "['OTC:CNLTN', 32.1313, False]\n", 371 | "['STNE', 11.75, False]\n", 372 | "['OTC:VAYK', 0.001, False]\n", 373 | "['OTC:KIROY', 7.87, False]\n", 374 | "['NYSE:GHLD', 14.89, False]\n", 375 | "['NYSE:RIV', 12.15, False]\n", 376 | "['NXL', 2.69, False]\n", 377 | "['OTC:WARM', 0.0011, False]\n", 378 | "['DKNG', 37.45, False]\n", 379 | "['AMEX:JHMD', 33.0812, False]\n", 380 | "['OTC:ECDP', 0.096, False]\n", 381 | "['VRPX', 0.5115, False]\n", 382 | "['AMEX:CONY', 19.57, False]\n", 383 | "['POCI', 5.6501, False]\n", 384 | "['NYSE:WTRG', 37.23, False]\n", 385 | "['NYSE:KFRC', 62.18, False]\n", 386 | "['WBUY', 0.1669, False]\n", 387 | "['NYSE:AA', 39.0, False]\n", 388 | "['NYSE:TRTX', 8.63, False]\n", 389 | "['CMPO', 6.37, False]\n", 390 | "['OTC:UUGRY', 25.3064, False]\n", 391 | "['PCSA', 2.05, False]\n", 392 | "['NYSE:SBSW', 4.33, False]\n", 393 | "['DCOM', 19.19, False]\n", 394 | "['AMEX:FCOR', 46.35, False]\n", 395 | "['OTC:DCAC', 1e-06, False]\n", 396 | "['OTC:IPOOF', 1.625, False]\n", 397 | "['AMEX:VUSB', 49.48, False]\n", 398 | "['SEVN', 12.5001, False]\n", 399 | "['MGTX', 4.17, False]\n", 400 | "['OTC:BCHEY', 21.4046, False]\n", 401 | "['AMEX:WANT', 33.64, False]\n", 402 | "['OTC:UOVEF', 22.72, False]\n", 403 | "['OTC:CJPRY', 10.6, False]\n", 404 | "['OTC:ORXOY', 2.0, False]\n", 405 | "['OTC:AHNR', 0.04, False]\n", 406 | "['OTC:NWARF', 1.15, False]\n", 407 | "['AMEX:IBUY', 54.99, False]\n", 408 | "['AMEX:QULL', 46.1763, False]\n", 409 | "['OTC:SETO', 0.0222, False]\n", 410 | "['LSBK', 12.65, False]\n", 411 | "['XFOR', 1.0, False]\n", 412 | "['AMEX:HYGH', 85.16, False]\n", 413 | "['AMEX:CPII', 19.46, False]\n", 414 | "['AMEX:NEN', 70.58, False]\n", 415 | "['NYSE:AHL/PE', 19.5879, False]\n", 416 | "['OTC:CBUMY', 17.93, False]\n", 417 | "['OTC:TLRS', 0.0873, False]\n", 418 | "['OTC:PGEZF', 0.1145, False]\n", 419 | "['OTC:SFFYF', 26.0, False]\n", 420 | "['OTC:UJOGF', 0.23, False]\n", 421 | "['NYSE:JHX', 31.65, False]\n", 422 | "['AMEX:IG', 20.525, False]\n", 423 | "['AMEX:CRDT', 24.74, False]\n", 424 | "['NYSE:PAAS', 20.01, False]\n", 425 | "['OTC:CVSC', 0.0001, False]\n", 426 | "['NYSE:BC', 71.22, False]\n", 427 | "['OTC:IICN', 0.018, False]\n", 428 | "['NYSE:KN', 16.98, False]\n", 429 | "['OTC:CHUC', 0.17, False]\n", 430 | "['AMEX:FXI', 26.505, False]\n", 431 | "['OTC:TORVF', 0.024, False]\n", 432 | "['OTC:PEMIF', 0.28, False]\n", 433 | "['OTC:CPFXF', 0.1895, False]\n", 434 | "['NYSE:DLB', 78.64, False]\n", 435 | "['BSCO', 21.05, False]\n", 436 | "['AMEX:PRAE', 32.8526, False]\n", 437 | "['OTC:ASKH', 0.029, False]\n", 438 | "['OTC:SFBE', 0.0004, False]\n", 439 | "['NYSE:IDE', 10.2051, False]\n", 440 | "['OTC:ALTPF', 0.07, False]\n", 441 | "['CAC', 31.71, False]\n", 442 | "['OTC:MLLOF', 0.085, False]\n", 443 | "['AMEX:JANJ', 24.98, False]\n", 444 | "['AIPI', 53.85, False]\n", 445 | "['CHY', 11.045, False]\n", 446 | "['OTC:FSUMF', 14.2, False]\n", 447 | "['OTC:KNBHF', 75.405, False]\n", 448 | "['NYSE:FBP', 17.885, False]\n", 449 | "['OTC:GOAI', 2.9437, False]\n", 450 | "['OTC:ACKDF', 4.645, False]\n", 451 | "['OTC:IGPK', 0.0075, False]\n", 452 | "['BNAI', 3.06, False]\n", 453 | "['OTC:WWRL', 0.0051, False]\n", 454 | "['OTC:KLNG', 0.82, False]\n", 455 | "['OTC:BGLAF', 11.75, False]\n", 456 | "['OTC:OWRDF', 0.02, False]\n", 457 | "['OTC:SINC', 0.0042, False]\n", 458 | "['BIOR', 0.6396, False]\n", 459 | "['OTC:JPPHY', 9.36, False]\n", 460 | "['VRM', 9.26, False]\n", 461 | "['OTC:RSAU', 0.644152, False]\n", 462 | "['NYSE:SQ', 63.35, False]\n", 463 | "['XRTX', 1.9604, False]\n", 464 | "['INO', 7.82, False]\n", 465 | "['NYSE:DAC', 93.75, False]\n", 466 | "['OTC:LOGL', 1e-06, False]\n", 467 | "['AMEX:PCRB', 48.19, False]\n", 468 | "['CLOV', 1.29, False]\n", 469 | "['NYSE:ELME', 15.415, False]\n", 470 | "['OTC:AGGZF', 36.13, False]\n", 471 | "['OTC:SLRRF', 0.055, False]\n", 472 | "['AMEX:SIF', 2.99, False]\n", 473 | "['OTC:PTVRF', 1.0, False]\n", 474 | "['OTC:SNGCF', 0.054, False]\n", 475 | "['WTMA', 11.09, False]\n", 476 | "['NYSE:SNDR', 23.435, False]\n", 477 | "['GEOS', 9.05, True]\n", 478 | "['AMEX:NETL', 22.8583, False]\n", 479 | "['AMEX:RINF', 32.68, False]\n", 480 | "['OTC:PNNX', 0.0375, False]\n", 481 | "['PLAO', 11.44, False]\n", 482 | "['OTC:LANRF', 0.0182, False]\n", 483 | "['NYSE:ZUO', 9.195, False]\n", 484 | "['OTC:GTHP', 0.1111, False]\n", 485 | "['AMEX:GOAU', 18.805, False]\n", 486 | "['OTC:UEPEO', 73.5, False]\n", 487 | "['OTC:TMXXF', 27.72, False]\n", 488 | "['AMEX:OVT', 22.12, False]\n", 489 | "['AMEX:CNDA.U', 10.8, False]\n", 490 | "['NYSE:BSBR', 5.005, False]\n", 491 | "['EDIT', 4.815, False]\n", 492 | "['AMEX:SCIO', 20.3155, False]\n", 493 | "['NYSE:MC', 53.35, False]\n", 494 | "['AMEX:PALL', 85.8063, False]\n", 495 | "['OTC:SSHPF', 0.61, False]\n", 496 | "['OTC:VOPKY', 40.5, False]\n", 497 | "['OTC:INPAP', 66.92, False]\n", 498 | "['OTC:HTCMY', 52.94, False]\n", 499 | "['OTC:RINO', 0.0002, False]\n", 500 | "['AMEX:RAYJ', 24.72, False]\n", 501 | "['NYSE:CXT', 60.43, False]\n", 502 | "['OTC:CSTPF', 0.32, False]\n", 503 | "['OTC:MGPPF', 7.22, False]\n", 504 | "['SWVL', 6.55, False]\n", 505 | "['AKAM', 88.2, False]\n", 506 | "['OTC:IUQFF', 14.16, False]\n", 507 | "['OTC:RWNFF', 36.0655, False]\n", 508 | "['NYSE:BAC', 38.94, False]\n", 509 | "['AMEX:RVNU', 25.63, False]\n", 510 | "['AMEX:PIT', 49.55, False]\n", 511 | "['OTC:ISCXF', 5.7672, False]\n", 512 | "['LAMR', 116.52, False]\n", 513 | "['OTC:LQWC', 0.012, False]\n", 514 | "['OTC:RGUS', 0.0028, False]\n", 515 | "['OTC:TCLHF', 0.8465, False]\n", 516 | "['AMEX:ATFV', 21.295, False]\n", 517 | "['OTC:SZKMF', 11.356, False]\n", 518 | "['OTC:EVOTF', 8.98, False]\n", 519 | "['AMEX:BTG', 2.625, False]\n", 520 | "['NYSE:GSL', 29.54, False]\n", 521 | "['OTC:TATYF', 8.0, False]\n", 522 | "['OTC:SNNF', 6.95, False]\n", 523 | "['FNCB', 6.11, False]\n", 524 | "['OTC:SNLAF', 0.9214, False]\n", 525 | "['OTC:CTXAY', 42.89, False]\n", 526 | "['WABF', 25.535, False]\n", 527 | "['NYSE:RFMZ', 14.04, False]\n", 528 | "['UCAR', 7.94, False]\n", 529 | "['OTC:ACFN', 9.75, False]\n", 530 | "['OTC:GXLM', 31.0, False]\n", 531 | "['AMEX:ITDH', 30.0375, False]\n", 532 | "['BGLC', 0.481, False]\n", 533 | "['NYSE:DSU', 10.765, False]\n", 534 | "['EXAI', 5.25, False]\n", 535 | "['ZYME', 8.41, False]\n", 536 | "['AMEX:ATNM', 7.325, False]\n", 537 | "['OTC:SKHSY', 21.75, False]\n", 538 | "['CITE', 11.34, False]\n", 539 | "['KA', 0.5513, False]\n", 540 | "['NYSE:MYTE', 4.92, False]\n", 541 | "['VONG', 94.1, False]\n", 542 | "['OTC:GOCOF', 0.035, False]\n", 543 | "['CFFI', 51.88, False]\n" 544 | ] 545 | }, 546 | { 547 | "output_type": "stream", 548 | "name": "stderr", 549 | "text": [ 550 | "ERROR:tvDatafeed.main:no data, please check the exchange and symbol\n" 551 | ] 552 | }, 553 | { 554 | "output_type": "stream", 555 | "name": "stdout", 556 | "text": [ 557 | "Error fetching data for OTC:AUMMF: 'NoneType' object has no attribute 'reset_index'\n", 558 | "['OTC:CSSI', 0.025, False]\n", 559 | "['OTC:SRCGF', 0.0331, False]\n", 560 | "['OTC:PMCCF', 0.085, False]\n", 561 | "['OTC:ETRUF', 0.1071, False]\n", 562 | "['WHLRP', 2.1189, False]\n", 563 | "['OTC:AUXIF', 0.0288, False]\n", 564 | "['OTC:ALST', 0.00065, False]\n", 565 | "['IVEG', 18.8591, False]\n", 566 | "['AMEX:PHB', 18.0, False]\n", 567 | "['STKH', 3.5, False]\n", 568 | "['OTC:MHCUF', 14.03, False]\n", 569 | "['OTC:INBP', 0.2, False]\n", 570 | "['VREX', 14.43, False]\n", 571 | "['NYSE:ET/PI', 11.235, False]\n", 572 | "['NYSE:GDV/PH', 22.98, False]\n", 573 | "['OTC:KYYWF', 28.0, False]\n", 574 | "['NYSE:HAE', 82.56, False]\n", 575 | "['AMEX:PFUT', 24.43, False]\n", 576 | "['OTC:AIBGY', 10.61, False]\n", 577 | "['OTC:TLCC', 0.015, False]\n", 578 | "['WHLM', 5.27, False]\n", 579 | "['CNSP', 1.87, False]\n", 580 | "['OTC:MKTAY', 26.98, False]\n", 581 | "['NYSE:BHLB', 21.72, False]\n", 582 | "['AMEX:CGRO', 20.6421, False]\n", 583 | "['OTC:MYBUF', 0.009, False]\n", 584 | "['QQQE', 88.61, False]\n", 585 | "['PABU', 59.45, False]\n", 586 | "['FLXS', 30.8, False]\n", 587 | "['BMBL', 10.14, False]\n", 588 | "['OTC:SINGF', 4.9, False]\n", 589 | "['AMEX:GSG', 22.11, False]\n", 590 | "['NYSE:CNC', 67.6, False]\n", 591 | "['OTC:BCAP', 0.0001, False]\n", 592 | "['AMEX:PSCX', 26.3835, False]\n", 593 | "['AMEX:JPME', 94.71, False]\n", 594 | "['AMEX:PPI', 14.81, False]\n", 595 | "['OTC:CVWFF', 0.6275, False]\n", 596 | "['NMFC', 12.135, False]\n", 597 | "['OTC:COBA', 1.25, False]\n", 598 | "['PNFPP', 23.412, False]\n", 599 | "['NYSE:STEW', 14.4801, False]\n", 600 | "['DHC', 2.675, False]\n", 601 | "['AMEX:ACIO', 37.76, False]\n", 602 | "['USCB', 12.24, False]\n", 603 | "['AMEX:ESUS', 29.7513, False]\n", 604 | "['DGICB', 11.25, False]\n", 605 | "['AMEX:BEMB', 52.0963, False]\n", 606 | "['AMEX:PTL', 197.29, False]\n", 607 | "['AMEX:JHID', 28.5696, False]\n", 608 | "['AMEX:PW/PA', 2.82, False]\n", 609 | " Hisse Adı Son Fiyat Dip Sinyali\n", 610 | "55 OTC:SSEBF 0.0119 True\n", 611 | "140 OTC:LNMG 0.2400 True\n", 612 | "233 MGIC 9.9891 True\n", 613 | "256 OTC:FBDS 0.0400 True\n", 614 | "260 OST 0.4279 True\n", 615 | "380 GEOS 9.0500 True\n" 616 | ] 617 | } 618 | ], 619 | "source": [ 620 | "!pip install git+https://github.com/rongardF/tvdatafeed tradingview-screener\n", 621 | "import numpy as np\n", 622 | "import pandas as pd\n", 623 | "from tvDatafeed import TvDatafeed, Interval\n", 624 | "from tradingview_screener import get_all_symbols\n", 625 | "import warnings\n", 626 | "\n", 627 | "warnings.simplefilter(action='ignore')\n", 628 | "\n", 629 | "# Standart Moving Average\n", 630 | "def sma(series, length):\n", 631 | " \"\"\"\n", 632 | " Calculate the Simple Moving Average (SMA) for a given series.\n", 633 | " \"\"\"\n", 634 | " return series.rolling(window=length).mean()\n", 635 | "\n", 636 | "# Exponential Moving Average\n", 637 | "def ema(series, length):\n", 638 | " \"\"\"\n", 639 | " Calculate the Exponential Moving Average (EMA) for a given series.\n", 640 | " \"\"\"\n", 641 | " return series.ewm(span=length, adjust=False).mean()\n", 642 | "\n", 643 | "def Bankery(data):\n", 644 | " df = data.copy()\n", 645 | " close_minus_rolling_min = data['close'] - pd.Series(data['low']).rolling(window=27).min()\n", 646 | " percentage_change = close_minus_rolling_min / (pd.Series(data['high']).rolling(window=27).max() - pd.Series(data['low']).rolling(window=27).min()) * 100\n", 647 | "\n", 648 | " sma1 = sma(percentage_change, 5)\n", 649 | " sma2 = sma(sma1, 3)\n", 650 | "\n", 651 | " fundtrend = (3 * sma1 - 2 * sma2 - 50) * 1.032 + 50\n", 652 | "\n", 653 | " typ = (2 * data['close'] + data['high'] + data['low'] + data['open']) / 5\n", 654 | " lol = pd.Series(data['low']).rolling(window=34).min()\n", 655 | " hoh = pd.Series(data['high']).rolling(window=34).max()\n", 656 | " bullbearline = ema((typ - lol) / (hoh - lol) * 100, 13)\n", 657 | " bankerentry = (fundtrend > bullbearline) & (bullbearline < 25)\n", 658 | " df['Entry'] = (bankerentry == True)\n", 659 | " return df\n", 660 | "\n", 661 | "# TradingView verisini çekme\n", 662 | "tv = TvDatafeed(username='your_username', password='your_password')\n", 663 | "nasdaq_symbols = get_all_symbols(market='america')[:500]\n", 664 | "nasdaq_symbols = [symbol.replace('NASDAQ:', '') for symbol in nasdaq_symbols]\n", 665 | "\n", 666 | "# Raporlama için kullanılacak başlıklar\n", 667 | "Titles = ['Hisse Adı', 'Son Fiyat', 'Dip Sinyali']\n", 668 | "df_signals = pd.DataFrame(columns=Titles)\n", 669 | "\n", 670 | "for symbol in nasdaq_symbols:\n", 671 | " try:\n", 672 | " data = tv.get_hist(symbol=symbol, exchange='NASDAQ', interval=Interval.in_daily, n_bars=100)\n", 673 | " data = data.reset_index()\n", 674 | " Banker = Bankery(data)\n", 675 | " Banker.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True)\n", 676 | " Banker.set_index('datetime', inplace=True)\n", 677 | " Buy = False\n", 678 | " Signals = Banker.tail(2)\n", 679 | " Signals = Signals.reset_index()\n", 680 | "\n", 681 | " Entry = (Signals.loc[0, 'Entry'] == False) & (Signals.loc[1, 'Entry'] == True)\n", 682 | " Last_Price = Signals.loc[1, 'Close']\n", 683 | " L1 = [symbol, Last_Price, Entry]\n", 684 | " df_signals.loc[len(df_signals)] = L1\n", 685 | " print(L1)\n", 686 | " except Exception as e:\n", 687 | " print(f\"Error fetching data for {symbol}: {e}\")\n", 688 | "\n", 689 | "df_True = df_signals[(df_signals['Dip Sinyali'] == True)]\n", 690 | "print(df_True)\n" 691 | ] 692 | } 693 | ] 694 | } -------------------------------------------------------------------------------- /binance_tarama: -------------------------------------------------------------------------------- 1 | pip install pandas_ta 2 | import pandas as pd 3 | import yfinance as yf 4 | from datetime import datetime, timedelta 5 | import pandas_ta as ta 6 | 7 | # Hisse_Temel_Veriler fonksiyonunu tanımlayın. 8 | def Hisse_Temel_Veriler(sembol): 9 | mevcut_tarih = datetime.now() 10 | baslangic_tarihi = mevcut_tarih - timedelta(days=4*365) # Son 4 yıl 11 | baslangic_tarihi_str = baslangic_tarihi.strftime('%Y-%m-%d') 12 | df = yf.download(sembol, start=baslangic_tarihi_str) 13 | return df 14 | 15 | # Supertrend indikatörünü hesaplayan fonksiyonu tanımlayın. 16 | def Supertrend(data, atr_period=10, multiplier=3): 17 | high_low = (data['High'] + data['Low']) / 2 18 | atr = ta.atr(data['High'], data['Low'], data['Close'], length=atr_period) 19 | supertrend = high_low + (multiplier * atr) 20 | return supertrend 21 | 22 | semboller = ["BTC-USD", "XRP-USD", "ETH-USD", 23 | "AVAX-USD", "ARK-USD", "ARKM-USD", "ARB-USD", "AGIX-USD", "ATOM-USD","ATM-USD", "ASR-USD","ARPA-USD","API3-USD","APE-USD", 24 | "ANKR-USD","AMP-USD", "ALT-USD", "ALICE-USD","ALGO-USD","AI-USD", "ADA-USD","ACM-USD","ACH-USD","ACE-USD","ACA-USD", 25 | 26 | "AXL-USD", "AEVO-USD", "ALT-USD","APT-USD", "ADA-USD","ALGO-USD", "AI-USD","AX-USD","AUDIO-USD", 27 | "BONK-USD", "BNB-USD","BSW-USD", "BOME-USD","BNX-USD","BLUR-USD","BEL-USD","BCH-USD","BAR-USD","BAND-USD","BAKE-USD", 28 | "COMP-USD","CHZ-USD", "CFX-USD","CYBER-USD","CRV-USD","COTI-USD","COS-USD","COMBO-USD","CKB-USD","CITY-USD","CAKE-USD", 29 | "DOGE-USD", "DOT-USD", "DYDX-USD","DYM-USD","DODO-USD","DENT-USD","DAR-USD", 30 | "ETHFI-USD", "EDU-USD","ETHW-USD","ETC-USD","EOS-USD","ENS-USD","ENJ-USD", 31 | "FET-USD", "FTM-USD","FLOKI-USD","FRONT-USD","FIL-USD","FIDA-USD", 32 | "GRT-USD","GMT-USD","GAS-USD","GALA-USD", 33 | "HOT-USD","HBAR-USD", 34 | "IMX-USD","ICP-USD","IOTA-USD", "ID-USD", "INJ-USD", 35 | "JUV-USD", "JUP-USD","JTO-USD","JOE-USD","JASMY-USD", 36 | "LUNC-USD","LDO-USD", "LINK-USD", "LAZIO-USD","LEVER-USD","LIT-USD","LPT-USD","LOOM-USD","LRC-USD","LTC-USD","LUNA-USD", 37 | 38 | "MANTA-USD", "MATIC-USD","MBOX-USD", "MAV-USD", "MANA-USD","MINA-USD", "MEME-USD","MAGIC-USD","METIS-USD","MKR-USD","MOVR-USD", 39 | "MTL-USD", 40 | "NTRN-USD", "NEAR-USD","NEO-USD", "NFP-USD", 41 | "PEPE-USD","PORTAL-USD", "PIXEL-USD","PYTH-USD","PAXG-USD","PENDLE-USD","PORTO-USD","PSG-USD", 42 | "OP-USD","OCEAN-USD","OG-USD","OGN-USD","OM-USD","ONE-USD","ONT-USD","ORDI-USD", 43 | "RNDR-USD","RAD-USD","RARE-USD","RAY-USD","REEF-USD","ROSE-USD","RUNE-USD","RVN-USD", 44 | "SOL-USD", "SHIB-USD","SKL-USD","STRK-USD", "SXP-USD","SEI-USD", "SUI-USD","SAND-USD", "SANTOS-USD", "SEI-USD","SLP-USD", 45 | "SNX-USD", "SPELL-USD","STORJ-USD","STRAX-USD","STX-USD","SUPER-USD", 46 | 47 | "THETA-USD","TIA-USD","TLM-USD","TOMO-USD","TRB-USD","TWT-USD", 48 | "XAI-USD", "XEC-USD","XLM-USD","XTZ-USD","XVG-USD","XVS-USD", 49 | "UMA-USD", "UNI-USD", "UNFI-USD", 50 | "VANRY-USD", "VET-USD","VIC-USD", 51 | "ZIL-USD", 52 | "WLD-USD" , "WAVES-USD", "WIF-USD"] 53 | al_sinyali_verenler = [] 54 | 55 | for sembol in semboller: 56 | data = Hisse_Temel_Veriler(sembol) 57 | data['Supertrend'] = Supertrend(data) 58 | 59 | # Son gün için al sinyalini kontrol et (Fiyat Supertrend değerinin üzerindeyse al sinyali) 60 | if data.iloc[-1]['Close'] > data.iloc[-1]['Supertrend']: 61 | al_sinyali_verenler.append(sembol) 62 | 63 | # Al sinyali veren kripto para birimlerini yazdırın 64 | if al_sinyali_verenler: 65 | print("Al sinyali veren kripto para birimleri:") 66 | for sembol in al_sinyali_verenler: 67 | print(sembol) 68 | else: 69 | print("Hiçbir kripto para biriminden al sinyali gelmedi.") 70 | -------------------------------------------------------------------------------- /bist_20_50_kesişimi.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyPakc97I2l0jV2FhCOWwYjg", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 4, 32 | "metadata": { 33 | "colab": { 34 | "base_uri": "https://localhost:8080/" 35 | }, 36 | "id": "RL416c0b3LoQ", 37 | "outputId": "14d6b760-8d28-44f4-fa8e-bae66572a314" 38 | }, 39 | "outputs": [ 40 | { 41 | "output_type": "stream", 42 | "name": "stdout", 43 | "text": [ 44 | "Collecting git+https://github.com/rongardF/tvdatafeed\n", 45 | " Cloning https://github.com/rongardF/tvdatafeed to /tmp/pip-req-build-rdtmaogg\n", 46 | " Running command git clone --filter=blob:none --quiet https://github.com/rongardF/tvdatafeed /tmp/pip-req-build-rdtmaogg\n", 47 | " Resolved https://github.com/rongardF/tvdatafeed to commit e6f6aaa7de439ac6e454d9b26d2760ded8dc4923\n", 48 | " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 49 | "Requirement already satisfied: tradingview-screener in /usr/local/lib/python3.10/dist-packages (2.5.0)\n", 50 | "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (71.0.4)\n", 51 | "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.1.4)\n", 52 | "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (1.8.0)\n", 53 | "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.31.0)\n", 54 | "Requirement already satisfied: numpy<2,>=1.22.4 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (1.26.4)\n", 55 | "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2.8.2)\n", 56 | "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2024.1)\n", 57 | "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2024.1)\n", 58 | "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.3.2)\n", 59 | "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.7)\n", 60 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2.0.7)\n", 61 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2024.7.4)\n", 62 | "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->tvdatafeed==2.1.0) (1.16.0)\n", 63 | "Requirement already satisfied: ta in /usr/local/lib/python3.10/dist-packages (0.11.0)\n", 64 | "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from ta) (1.26.4)\n", 65 | "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from ta) (2.1.4)\n", 66 | "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->ta) (2.8.2)\n", 67 | "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->ta) (2024.1)\n", 68 | "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas->ta) (2024.1)\n", 69 | "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->ta) (1.16.0)\n" 70 | ] 71 | }, 72 | { 73 | "output_type": "stream", 74 | "name": "stderr", 75 | "text": [ 76 | "ERROR:tvDatafeed.main:error while signin\n", 77 | "WARNING:tvDatafeed.main:you are using nologin method, data you access may be limited\n" 78 | ] 79 | }, 80 | { 81 | "output_type": "stream", 82 | "name": "stdout", 83 | "text": [ 84 | "Processed BIST:ARZUM\n", 85 | "Processed BIST:KRDMA\n", 86 | "Processed BIST:KUYAS\n", 87 | "Processed BIST:MACKO\n", 88 | "Processed BIST:GMSTR\n", 89 | "Processed BIST:TUCLK\n", 90 | "Processed BIST:KERVT\n", 91 | "Processed BIST:MARKA\n", 92 | "Processed BIST:CLEBI\n", 93 | "Processed BIST:IZINV\n", 94 | "Processed BIST:DENGE\n", 95 | "Processed BIST:YKBNK\n", 96 | "Processed BIST:AGROT\n", 97 | "Processed BIST:SAFKR\n", 98 | "Processed BIST:BVSAN\n", 99 | "Processed BIST:NUGYO\n", 100 | "Processed BIST:ZGOLD\n", 101 | "Processed BIST:SAMAT\n", 102 | "Processed BIST:PGSUS\n", 103 | "Processed BIST:PENTA\n", 104 | "Processed BIST:ZRE20\n", 105 | "Processed BIST:DOKTA\n", 106 | "Processed BIST:GARFA\n", 107 | "Processed BIST:TATGD\n", 108 | "Processed BIST:LUKSK\n", 109 | "Processed BIST:A1CAP\n", 110 | "Processed BIST:YUNSA\n", 111 | "Processed BIST:BFREN\n", 112 | "Processed BIST:BIOEN\n", 113 | "Processed BIST:ISGLK\n", 114 | "Processed BIST:POLTK\n", 115 | "Processed BIST:ENTRA\n", 116 | "Processed BIST:MIATK\n", 117 | "Processed BIST:KENT\n", 118 | "Processed BIST:KRONT\n", 119 | "Processed BIST:DMRGD\n", 120 | "Processed BIST:TTKOM\n", 121 | "Processed BIST:KLGYO\n", 122 | "Processed BIST:AVGYO\n", 123 | "Processed BIST:ARDYZ\n", 124 | "Processed BIST:ISBIR\n", 125 | "Processed BIST:ALKLC\n", 126 | "Processed BIST:SRVGY\n", 127 | "Processed BIST:ATAKP\n", 128 | "Processed BIST:KRGYO\n", 129 | "Processed BIST:PKART\n", 130 | "Processed BIST:LMKDC\n", 131 | "Processed BIST:IMASM\n", 132 | "Processed BIST:KSTUR\n", 133 | "Processed BIST:ONRYT\n", 134 | "Processed BIST:ZSR25\n", 135 | "Processed BIST:FZLGY\n", 136 | "Processed BIST:EKOS\n", 137 | "Processed BIST:KIMMR\n", 138 | "Processed BIST:ADGYO\n", 139 | "Processed BIST:PETKM\n", 140 | "Processed BIST:SNGYO\n", 141 | "Processed BIST:OZSUB\n", 142 | "Processed BIST:GOZDE\n", 143 | "Processed BIST:DYOBY\n", 144 | "Processed BIST:EUHOL\n", 145 | "Processed BIST:AKMGY\n", 146 | "Processed BIST:ULAS\n", 147 | "Processed BIST:AKFGY\n", 148 | "Processed BIST:EUREN\n", 149 | "Processed BIST:HATSN\n", 150 | "Processed BIST:IZENR\n", 151 | "Processed BIST:ODAS\n", 152 | "Processed BIST:CATES\n", 153 | "Processed BIST:TURGG\n", 154 | "Processed BIST:ULUSE\n", 155 | "Processed BIST:MAALT\n", 156 | "Processed BIST:INTEM\n", 157 | "Processed BIST:TABGD\n", 158 | "Processed BIST:GMTAS\n", 159 | "Processed BIST:OSTIM\n", 160 | "Processed BIST:TRILC\n", 161 | "Processed BIST:RPFGY\n", 162 | "Processed BIST:KOZAL\n", 163 | "Processed BIST:EFORC\n", 164 | "Processed BIST:LIDFA\n", 165 | "Processed BIST:AYDEM\n", 166 | "Processed BIST:BRLSM\n", 167 | "Processed BIST:OZGYO\n", 168 | "Processed BIST:ULUFA\n", 169 | "Processed BIST:SASA\n", 170 | "Processed BIST:SELEC\n", 171 | "Processed BIST:KLKIM\n", 172 | "Processed BIST:DEVA\n", 173 | "Processed BIST:QPERP\n", 174 | "Processed BIST:CRDFA\n", 175 | "Processed BIST:KFEIN\n", 176 | "Processed BIST:OSMEN\n", 177 | "Processed BIST:VBTYZ\n", 178 | "Processed BIST:CVKMD\n", 179 | "Processed BIST:FROTO\n", 180 | "Processed BIST:BANVT\n", 181 | "Processed BIST:TERA\n", 182 | "Processed BIST:HUBVC\n", 183 | "Processed BIST:CUSAN\n", 184 | "Processed BIST:VKGYO\n", 185 | "Processed BIST:EKGYO\n", 186 | "Processed BIST:DOFER\n", 187 | "Processed BIST:MEKAG\n", 188 | "Processed BIST:PRKME\n", 189 | "Processed BIST:FRIGO\n", 190 | "Processed BIST:ORGE\n", 191 | "Processed BIST:IHGZT\n", 192 | "Processed BIST:AKYHO\n", 193 | "Processed BIST:DARDL\n", 194 | "Processed BIST:PNLSN\n", 195 | "Processed BIST:TKNSA\n", 196 | "Processed BIST:ASGYO\n", 197 | "Processed BIST:APYVC\n", 198 | "Processed BIST:ADEL\n", 199 | "Processed BIST:KZGYO\n", 200 | "Processed BIST:GEDIK\n", 201 | "Processed BIST:Z30EA\n", 202 | "Processed BIST:BAGFS\n", 203 | "Processed BIST:MARBL\n", 204 | "Processed BIST:CEOEM\n", 205 | "Processed BIST:BAYRK\n", 206 | "Processed BIST:MPARK\n", 207 | "Processed BIST:SARKY\n", 208 | "Processed BIST:GEREL\n", 209 | "Processed BIST:ULKER\n", 210 | "Processed BIST:IHLGM\n", 211 | "Processed BIST:BLCYT\n", 212 | "Processed BIST:KTSKR\n", 213 | "Processed BIST:MERCN\n", 214 | "Processed BIST:GOLTS\n", 215 | "Processed BIST:APYKS\n", 216 | "Processed BIST:EYGYO\n", 217 | "Processed BIST:KCHOL\n", 218 | "Processed BIST:ODINE\n", 219 | "Processed BIST:SEKUR\n", 220 | "Processed BIST:DAGI\n", 221 | "Processed BIST:EPLAS\n", 222 | "Processed BIST:IHLAS\n", 223 | "Processed BIST:KLMSN\n", 224 | "Processed BIST:PAPIL\n", 225 | "Processed BIST:ARSAN\n", 226 | "Processed BIST:KONKA\n", 227 | "Processed BIST:VAKKO\n", 228 | "Processed BIST:ALDUK\n", 229 | "Processed BIST:OZRDN\n", 230 | "Processed BIST:BRSAN\n", 231 | "Processed BIST:SANEL\n", 232 | "Processed BIST:GSRAY\n", 233 | "Processed BIST:APYMD\n", 234 | "Processed BIST:FENER\n", 235 | "Processed BIST:PARSN\n", 236 | "Processed BIST:ORCAY\n", 237 | "Processed BIST:VKING\n", 238 | "Processed BIST:PRZMA\n", 239 | "Processed BIST:ATLAS\n", 240 | "Processed BIST:ZPLIB\n", 241 | "Processed BIST:IEYHO\n", 242 | "Processed BIST:DMSAS\n", 243 | "Processed BIST:GRTRK\n", 244 | "Processed BIST:QNBFB\n", 245 | "Processed BIST:EMNIS\n", 246 | "Processed BIST:Z30KE\n", 247 | "Processed BIST:RYGYO\n", 248 | "Processed BIST:PKENT\n", 249 | "Processed BIST:AHGAZ\n", 250 | "Processed BIST:HRKET\n", 251 | "Processed BIST:BEGYO\n", 252 | "Processed BIST:KARYE\n", 253 | "Processed BIST:ENKAI\n", 254 | "Processed BIST:AGYO\n", 255 | "Processed BIST:GOKNR\n", 256 | "Processed BIST:AKGRT\n", 257 | "Processed BIST:MEGAP\n", 258 | "Processed BIST:TNZTP\n", 259 | "Processed BIST:GLDTR\n", 260 | "Processed BIST:INDES\n", 261 | "Processed BIST:MERIT\n", 262 | "Processed BIST:OYAKC\n", 263 | "Processed BIST:ZPBDL\n", 264 | "Processed BIST:DOGUB\n", 265 | "Processed BIST:Z30KP\n", 266 | "Processed BIST:PRKAB\n", 267 | "Processed BIST:MAGEN\n", 268 | "Processed BIST:METUR\n", 269 | "Processed BIST:EGPRO\n", 270 | "Processed BIST:ANELE\n", 271 | "Processed BIST:ANHYT\n", 272 | "Processed BIST:KOPOL\n", 273 | "Processed BIST:RNPOL\n", 274 | "Processed BIST:DOCO\n", 275 | "Processed BIST:AKSEN\n", 276 | "Processed BIST:AKSUE\n", 277 | "Processed BIST:YKSLN\n", 278 | "Processed BIST:CCOLA\n", 279 | "Processed BIST:ENERY\n", 280 | "Processed BIST:BOBET\n", 281 | "Processed BIST:IDGYO\n", 282 | "Processed BIST:ANSGR\n", 283 | "Processed BIST:BRKVY\n", 284 | "Processed BIST:GIPTA\n", 285 | "Processed BIST:MEGMT\n", 286 | "Processed BIST:KRVGD\n", 287 | "Processed BIST:EMKEL\n", 288 | "Processed BIST:OTTO\n", 289 | "Processed BIST:VRGYO\n", 290 | "Processed BIST:SUMAS\n", 291 | "Processed BIST:HKTM\n", 292 | "Processed BIST:ADESE\n", 293 | "Processed BIST:FMIZP\n", 294 | "Processed BIST:SKBNK\n", 295 | "Processed BIST:PLTUR\n", 296 | "Processed BIST:KRSTL\n", 297 | "Processed BIST:HURGZ\n", 298 | "Processed BIST:OBASE\n", 299 | "Processed BIST:TGSAS\n", 300 | "Processed BIST:TSGYO\n", 301 | "Processed BIST:TAVHL\n", 302 | "Processed BIST:UFUK\n", 303 | "Processed BIST:PASEU\n", 304 | "Processed BIST:ISCTR\n", 305 | "Processed BIST:HALKB\n", 306 | "Processed BIST:AVOD\n", 307 | "Processed BIST:KMPUR\n", 308 | "Processed BIST:AYES\n", 309 | "Processed BIST:SELVA\n", 310 | "Processed BIST:YYAPI\n", 311 | "Processed BIST:YONGA\n", 312 | "Processed BIST:FORTE\n", 313 | "Processed BIST:EGEPO\n", 314 | "Processed BIST:TCELL\n", 315 | "Processed BIST:AVPGY\n", 316 | "Processed BIST:ALARK\n", 317 | "Processed BIST:KARTN\n", 318 | "Processed BIST:MAVI\n", 319 | "Processed BIST:ECILC\n", 320 | "Processed BIST:FONET\n", 321 | "Processed BIST:TUREX\n", 322 | "Processed BIST:RTALB\n", 323 | "Processed BIST:KONTR\n", 324 | "Processed BIST:METRO\n", 325 | "Processed BIST:OZKGY\n", 326 | "Processed BIST:TETMT\n", 327 | "Processed BIST:QNBFL\n", 328 | "Processed BIST:ZEDUR\n", 329 | "Processed BIST:TATEN\n", 330 | "Processed BIST:ACSEL\n", 331 | "Processed BIST:ESEN\n", 332 | "Processed BIST:BORSK\n", 333 | "Processed BIST:NTGAZ\n", 334 | "Processed BIST:ISKPL\n", 335 | "Processed BIST:EREGL\n", 336 | "Processed BIST:ZRGYO\n", 337 | "Processed BIST:APLIB\n", 338 | "Processed BIST:EGSER\n", 339 | "Processed BIST:CMENT\n", 340 | "Processed BIST:KAPLM\n", 341 | "Processed BIST:ASUZU\n", 342 | "Processed BIST:TRCAS\n", 343 | "Processed BIST:EKSUN\n", 344 | "Processed BIST:DURDO\n", 345 | "Processed BIST:KAYSE\n", 346 | "Processed BIST:ALBTS\n", 347 | "Processed BIST:KLRHO\n", 348 | "Processed BIST:ARTMS\n", 349 | "Processed BIST:PEKGY\n", 350 | "Processed BIST:GARAN\n", 351 | "Processed BIST:ICUGS\n", 352 | "Processed BIST:ISATR\n", 353 | "Processed BIST:DESPC\n", 354 | "Processed BIST:YESIL\n", 355 | "Processed BIST:BIMAS\n", 356 | "Processed BIST:KLSYN\n", 357 | "Processed BIST:KORDS\n", 358 | "Processed BIST:SONME\n", 359 | "Processed BIST:DERIM\n", 360 | "Processed BIST:NTHOL\n", 361 | "Processed BIST:CASA\n", 362 | "Processed BIST:KATMR\n", 363 | "Processed BIST:BURCE\n", 364 | "Processed BIST:VERTU\n", 365 | "Processed BIST:DOAS\n", 366 | "Processed BIST:BJKAS\n", 367 | "Processed BIST:GLBMD\n", 368 | "Processed BIST:ENJSA\n", 369 | "Processed BIST:ALFAS\n", 370 | "Processed BIST:ALCAR\n", 371 | "Processed BIST:RUBNS\n", 372 | "Processed BIST:BRMEN\n", 373 | "Processed BIST:SODSN\n", 374 | "Processed BIST:PSGYO\n", 375 | "Processed BIST:ALKIM\n", 376 | "Processed BIST:SMART\n", 377 | "Processed BIST:ETYAT\n", 378 | "Processed BIST:DZGYO\n", 379 | "Processed BIST:TURSG\n", 380 | "Processed BIST:AGESA\n", 381 | "Processed BIST:HEDEF\n", 382 | "Processed BIST:ZELOT\n", 383 | "Processed BIST:SEGYO\n", 384 | "Processed BIST:EKIZ\n", 385 | "Processed BIST:TDGYO\n", 386 | "Processed BIST:HEKTS\n", 387 | "Processed BIST:MNDTR\n", 388 | "Processed BIST:APYKF\n", 389 | "Processed BIST:SMRTG\n", 390 | "Processed BIST:SNKRN\n", 391 | "Processed BIST:ERCB\n", 392 | "Processed BIST:BASGZ\n", 393 | "Processed BIST:GRNYO\n", 394 | "Processed BIST:GUBRF\n", 395 | "Processed BIST:EUYO\n", 396 | "Processed BIST:CIMSA\n", 397 | "Processed BIST:AYGAZ\n", 398 | "Processed BIST:MERKO\n", 399 | "Processed BIST:TOASO\n", 400 | "Processed BIST:VERUS\n", 401 | "Processed BIST:AKCNS\n", 402 | "Processed BIST:DITAS\n", 403 | "Processed BIST:CRFSA\n", 404 | "Processed BIST:PINSU\n", 405 | "Processed BIST:ISGYO\n", 406 | "Processed BIST:TBORG\n", 407 | "Processed BIST:CELHA\n", 408 | "Processed BIST:CEMAS\n", 409 | "Processed BIST:THYAO\n", 410 | "Processed BIST:ANGEN\n", 411 | "Processed BIST:DERHL\n", 412 | "Processed BIST:KAREL\n", 413 | "Processed BIST:BIENY\n", 414 | "Processed BIST:IPEKE\n", 415 | "Processed BIST:GSDDE\n", 416 | "Processed BIST:BIGCH\n", 417 | "Processed BIST:AKBNK\n", 418 | "Processed BIST:KOCMT\n", 419 | "Processed BIST:ISFIN\n", 420 | "Processed BIST:ALTNY\n", 421 | "Processed BIST:MGROS\n", 422 | "Processed BIST:OBAMS\n", 423 | "Processed BIST:MEPET\n", 424 | "Processed BIST:BNTAS\n", 425 | "Processed BIST:BURVA\n", 426 | "Processed BIST:TMPOL\n", 427 | "Processed BIST:HUNER\n", 428 | "Processed BIST:PENGD\n", 429 | "Processed BIST:IHAAS\n", 430 | "Processed BIST:DCTTR\n", 431 | "Processed BIST:OFSYM\n", 432 | "Processed BIST:ORMA\n", 433 | "Processed BIST:YAYLA\n", 434 | "Processed BIST:SDTTR\n", 435 | "Processed BIST:INVEO\n", 436 | "Processed BIST:VESBE\n", 437 | "Processed BIST:DOHOL\n", 438 | "Processed BIST:DESA\n", 439 | "Processed BIST:ZOREN\n", 440 | "Processed BIST:AYCES\n", 441 | "Processed BIST:CANTE\n", 442 | "Processed BIST:AVTUR\n", 443 | "Processed BIST:NUHCM\n", 444 | "Processed BIST:SNPAM\n", 445 | "Processed BIST:ALBRK\n", 446 | "Processed BIST:OTKAR\n", 447 | "Processed BIST:KRTEK\n", 448 | "Processed BIST:ATSYH\n", 449 | "Processed BIST:HOROZ\n", 450 | "Processed BIST:GENIL\n", 451 | "Processed BIST:BUCIM\n", 452 | "Processed BIST:SAYAS\n", 453 | "Processed BIST:TSKB\n", 454 | "Processed BIST:RYSAS\n", 455 | "Processed BIST:GSDHO\n", 456 | "Processed BIST:MOBTL\n", 457 | "Processed BIST:KARSN\n", 458 | "Processed BIST:ESCAR\n", 459 | "Processed BIST:OYLUM\n", 460 | "Processed BIST:QUAGR\n", 461 | "Processed BIST:RPAVS\n", 462 | "Processed BIST:OPX30\n", 463 | "Processed BIST:ATATP\n", 464 | "Processed BIST:INGRM\n", 465 | "Processed BIST:AKENR\n", 466 | "Processed BIST:USDTR\n", 467 | "Processed BIST:BASCM\n", 468 | "Processed BIST:MEDTR\n", 469 | "Processed BIST:YIGIT\n", 470 | "Processed BIST:SEGMN\n", 471 | "Processed BIST:ULUUN\n", 472 | "Processed BIST:PNSUT\n", 473 | "Processed BIST:KZBGY\n", 474 | "Processed BIST:IZMDC\n", 475 | "Processed BIST:ALKA\n", 476 | "Processed BIST:YBTAS\n", 477 | "Processed BIST:MAKTK\n", 478 | "Processed BIST:BMSCH\n", 479 | "Processed BIST:ATAGY\n", 480 | "Processed BIST:VESTL\n", 481 | "Processed BIST:VKFYO\n", 482 | "Processed BIST:SEKFK\n", 483 | "Processed BIST:KRPLS\n", 484 | "Processed BIST:APX30\n", 485 | "Processed BIST:PCILT\n", 486 | "Processed BIST:UZERB\n", 487 | "Processed BIST:EUKYO\n", 488 | "Processed BIST:RAYSG\n", 489 | "Processed BIST:ALCTL\n", 490 | "Processed BIST:OYAYO\n", 491 | "Processed BIST:KBORU\n", 492 | "Processed BIST:EDIP\n", 493 | "Processed BIST:KNFRT\n", 494 | "Processed BIST:ISSEN\n", 495 | "Processed BIST:GEDZA\n", 496 | "Processed BIST:KRDMB\n", 497 | "Processed BIST:ECZYT\n", 498 | "Processed BIST:MARTI\n", 499 | "Processed BIST:YGGYO\n", 500 | "Processed BIST:MTRKS\n", 501 | "Processed BIST:HDFGS\n", 502 | "Processed BIST:QTEMZ\n", 503 | "Processed BIST:IHYAY\n", 504 | "Processed BIST:LINK\n", 505 | "Processed BIST:ASELS\n", 506 | "Processed BIST:LIDER\n", 507 | "Processed BIST:NETAS\n", 508 | "Processed BIST:KRDMD\n", 509 | "Processed BIST:SAHOL\n", 510 | "Processed BIST:TEZOL\n", 511 | "Processed BIST:PAGYO\n", 512 | "Processed BIST:GLRYH\n", 513 | "Processed BIST:TARKM\n", 514 | "Processed BIST:YYLGD\n", 515 | "Processed BIST:PSDTC\n", 516 | "Processed BIST:TEKTU\n", 517 | "Processed BIST:VAKFN\n", 518 | "Processed BIST:SUWEN\n", 519 | "Processed BIST:GWIND\n", 520 | "Processed BIST:CWENE\n", 521 | "Processed BIST:BRKSN\n", 522 | "Processed BIST:ISDMR\n", 523 | "Processed BIST:AGHOL\n", 524 | "Processed BIST:MPATA\n", 525 | "Processed BIST:AKSA\n", 526 | "Processed BIST:CONSE\n", 527 | "Processed BIST:OYYAT\n", 528 | "Processed BIST:ETILR\n", 529 | "Processed BIST:SKTAS\n", 530 | "Processed BIST:YGYO\n", 531 | "Processed BIST:EDATA\n", 532 | "Processed BIST:GZNMI\n", 533 | "Processed BIST:SISE\n", 534 | "Processed BIST:PRDGS\n", 535 | "Processed BIST:ISKUR\n", 536 | "Processed BIST:ALMAD\n", 537 | "Processed BIST:BYDNR\n", 538 | "Processed BIST:ZPX30\n", 539 | "Processed BIST:GLYHO\n", 540 | "Processed BIST:NIBAS\n", 541 | "Processed BIST:ALVES\n", 542 | "Processed BIST:TKFEN\n", 543 | "Processed BIST:RODRG\n", 544 | "Processed BIST:ISGSY\n", 545 | "Processed BIST:TRGYO\n", 546 | "Processed BIST:SKYMD\n", 547 | "Processed BIST:PAMEL\n", 548 | "Processed BIST:ARASE\n", 549 | "Processed BIST:KGYO\n", 550 | "Processed BIST:KLNMA\n", 551 | "Processed BIST:POLHO\n", 552 | "Processed BIST:PETUN\n", 553 | "Processed BIST:BINHO\n", 554 | "Processed BIST:DIRIT\n", 555 | "Processed BIST:YATAS\n", 556 | "Processed BIST:MAKIM\n", 557 | "Processed BIST:UMPAS\n", 558 | "Processed BIST:VANGD\n", 559 | "Processed BIST:SANFM\n", 560 | "Processed BIST:ISMEN\n", 561 | "Processed BIST:KCAER\n", 562 | "Processed BIST:GLCVY\n", 563 | "Processed BIST:IHEVA\n", 564 | "Processed BIST:MZHLD\n", 565 | "Processed BIST:ARCLK\n", 566 | "Processed BIST:ALGYO\n", 567 | "Processed BIST:LKMNH\n", 568 | "Processed BIST:SANKO\n", 569 | "Processed BIST:ERSU\n", 570 | "Processed BIST:NATEN\n", 571 | "Processed BIST:ONCSM\n", 572 | "Processed BIST:BEYAZ\n", 573 | "Processed BIST:AZTEK\n", 574 | "Processed BIST:SNICA\n", 575 | "Processed BIST:MMCAS\n", 576 | "Processed BIST:BIZIM\n", 577 | "Processed BIST:INVES\n", 578 | "Processed BIST:EGGUB\n", 579 | "Processed BIST:SOKE\n", 580 | "Processed BIST:JANTS\n", 581 | "Processed BIST:PEHOL\n", 582 | "Processed BIST:KTLEV\n", 583 | "Processed BIST:AKFYE\n", 584 | "Processed BIST:RALYH\n", 585 | "Processed BIST:IZFAS\n", 586 | "Processed BIST:ZPT10\n", 587 | "Processed BIST:ARENA\n", 588 | "Processed BIST:ISBTR\n", 589 | "Processed BIST:LILAK\n", 590 | "Processed BIST:EGEEN\n", 591 | "Processed BIST:MRSHL\n", 592 | "Processed BIST:ENSRI\n", 593 | "Processed BIST:ALTIN\n", 594 | "Processed BIST:SKYLP\n", 595 | "Processed BIST:BARMA\n", 596 | "Processed BIST:BORLS\n", 597 | "Processed BIST:TTRAK\n", 598 | "Processed BIST:MANAS\n", 599 | "Processed BIST:HTTBT\n", 600 | "Processed BIST:CMBTN\n", 601 | "Processed BIST:BAKAB\n", 602 | "Processed BIST:DNISI\n", 603 | "Processed BIST:MRGYO\n", 604 | "Processed BIST:BSOKE\n", 605 | "Processed BIST:RGYAS\n", 606 | "Processed BIST:FORMT\n", 607 | "Processed BIST:DGGYO\n", 608 | "Processed BIST:CEMTS\n", 609 | "Processed BIST:HLGYO\n", 610 | "Processed BIST:TUKAS\n", 611 | "Processed BIST:APBDL\n", 612 | "Processed BIST:SOKM\n", 613 | "Processed BIST:COSMO\n", 614 | "Processed BIST:MTRYO\n", 615 | "Processed BIST:BTCIM\n", 616 | "Processed BIST:DGATE\n", 617 | "Processed BIST:ISYAT\n", 618 | "Processed BIST:ATEKS\n", 619 | "Processed BIST:KERVN\n", 620 | "Processed BIST:PATEK\n", 621 | "Processed BIST:KOZAA\n", 622 | "Processed BIST:KONYA\n", 623 | "Processed BIST:OZYSR\n", 624 | "Processed BIST:BRISA\n", 625 | "Processed BIST:USAK\n", 626 | "Processed BIST:KUVVA\n", 627 | "Processed BIST:SILVR\n", 628 | "Processed BIST:AKSGY\n", 629 | "Processed BIST:GESAN\n", 630 | "Processed BIST:BALAT\n", 631 | "Processed BIST:EUPWR\n", 632 | "Processed BIST:BRYAT\n", 633 | "Processed BIST:SURGY\n", 634 | "Processed BIST:TSPOR\n", 635 | "Processed BIST:MSGYO\n", 636 | "Processed BIST:DGNMO\n", 637 | "Processed BIST:MIPAZ\n", 638 | "Processed BIST:REEDR\n", 639 | "Processed BIST:KUTPO\n", 640 | "Processed BIST:BMSTL\n", 641 | "Processed BIST:MHRGY\n", 642 | "Processed BIST:YAPRK\n", 643 | "Processed BIST:UNLU\n", 644 | "Processed BIST:TUPRS\n", 645 | "Processed BIST:DOBUR\n", 646 | "Processed BIST:ICBCT\n", 647 | "Processed BIST:VAKBN\n", 648 | "Processed BIST:ZTM15\n", 649 | "Processed BIST:SELGD\n", 650 | "Processed BIST:ERBOS\n", 651 | "Processed BIST:KLSER\n", 652 | "Processed BIST:DAPGM\n", 653 | "Processed BIST:EBEBK\n", 654 | "Processed BIST:MNDRS\n", 655 | "Processed BIST:HATEK\n", 656 | "Processed BIST:AYEN\n", 657 | "Processed BIST:TMSN\n", 658 | "Processed BIST:LRSHO\n", 659 | "Processed BIST:BERA\n", 660 | "Processed BIST:SUNTK\n", 661 | "Processed BIST:DAGHL\n", 662 | "Processed BIST:GRSEL\n", 663 | "Processed BIST:FADE\n", 664 | "Processed BIST:MOGAN\n", 665 | "Processed BIST:GOODY\n", 666 | "Processed BIST:AVHOL\n", 667 | "Processed BIST:ELITE\n", 668 | "Processed BIST:AFYON\n", 669 | "Processed BIST:LOGO\n", 670 | "Processed BIST:SEYKM\n", 671 | "Processed BIST:ASTOR\n", 672 | "Processed BIST:AEFES\n", 673 | "Processed BIST:KOTON\n", 674 | "Processed BIST:YEOTK\n", 675 | "Processed BIST:GENTS\n", 676 | "Processed BIST:BOSSA\n", 677 | "Processed BIST:BRKO\n", 678 | "Processed BIST:TLMAN\n", 679 | "Processed BIST:ESCOM\n", 680 | "Processed BIST:FLAP\n", 681 | "Processed BIST:INFO\n", 682 | "Symbol: BIST:EUHOL, Last Price: 3.85, Date: 2024-07-31 06:00:00\n", 683 | "Symbol: BIST:DAGI, Last Price: 8.87, Date: 2024-07-31 06:00:00\n", 684 | "Symbol: BIST:EMKEL, Last Price: 15.09, Date: 2024-07-31 06:00:00\n", 685 | "Symbol: BIST:HURGZ, Last Price: 5.01, Date: 2024-07-31 06:00:00\n", 686 | "Symbol: BIST:NTGAZ, Last Price: 5.68, Date: 2024-07-31 06:00:00\n", 687 | "Symbol: BIST:BIGCH, Last Price: 34.66, Date: 2024-07-31 06:00:00\n", 688 | "Symbol: BIST:PATEK, Last Price: 116.2, Date: 2024-07-31 06:00:00\n" 689 | ] 690 | } 691 | ], 692 | "source": [ 693 | "# Gerekli kütüphanelerin kurulumu\n", 694 | "!pip install git+https://github.com/rongardF/tvdatafeed tradingview-screener\n", 695 | "!pip install ta\n", 696 | "\n", 697 | "import numpy as np\n", 698 | "import pandas as pd\n", 699 | "from tvDatafeed import TvDatafeed, Interval\n", 700 | "from tradingview_screener import get_all_symbols\n", 701 | "import ta\n", 702 | "import warnings\n", 703 | "import logging\n", 704 | "\n", 705 | "warnings.simplefilter(action='ignore')\n", 706 | "\n", 707 | "# Log ayarları\n", 708 | "logging.basicConfig(level=logging.INFO)\n", 709 | "logger = logging.getLogger()\n", 710 | "\n", 711 | "# TvDatafeed başlatma\n", 712 | "tv = TvDatafeed(username='your_username', password='your_password')\n", 713 | "\n", 714 | "# EMA hesaplama fonksiyonu\n", 715 | "def calculate_ema(data, period):\n", 716 | " return data.ewm(span=period, adjust=False).mean()\n", 717 | "\n", 718 | "# EMA 20 ve EMA 50 kesişimi belirleme fonksiyonu\n", 719 | "def check_ema_crossover(data):\n", 720 | " data['EMA20'] = calculate_ema(data['close'], 20)\n", 721 | " data['EMA50'] = calculate_ema(data['close'], 50)\n", 722 | " data['BullishCross'] = (data['EMA20'] > data['EMA50']) & (data['EMA20'].shift(1) <= data['EMA50'].shift(1))\n", 723 | " return data\n", 724 | "\n", 725 | "# Türkiye piyasasından tüm sembolleri çekme\n", 726 | "all_symbols = get_all_symbols(market='turkey')\n", 727 | "\n", 728 | "# BIST sembollerini filtreleme\n", 729 | "bist_symbols = [symbol for symbol in all_symbols if 'BIST:' in symbol]\n", 730 | "\n", 731 | "# Taramayı gerçekleştirme\n", 732 | "results = []\n", 733 | "\n", 734 | "for symbol in bist_symbols:\n", 735 | " try:\n", 736 | " exchange, symbol_code = symbol.split(':')\n", 737 | " data = tv.get_hist(symbol=symbol_code, exchange=exchange, interval=Interval.in_daily, n_bars=100)\n", 738 | " data = data.reset_index()\n", 739 | " data = check_ema_crossover(data)\n", 740 | "\n", 741 | " last_row = data.iloc[-1]\n", 742 | " if last_row['BullishCross']:\n", 743 | " results.append({\n", 744 | " 'Symbol': symbol,\n", 745 | " 'Last Price': last_row['close'],\n", 746 | " 'Date': last_row['datetime']\n", 747 | " })\n", 748 | " print(f\"Processed {symbol}\")\n", 749 | " except Exception as e:\n", 750 | " print(f\"Error fetching data for {symbol}: {e}\")\n", 751 | "\n", 752 | "# Sonuçları yazdırma\n", 753 | "for result in results:\n", 754 | " print(f\"Symbol: {result['Symbol']}, Last Price: {result['Last Price']}, Date: {result['Date']}\")\n", 755 | "\n" 756 | ] 757 | } 758 | ] 759 | } -------------------------------------------------------------------------------- /dip: -------------------------------------------------------------------------------- 1 | !pip install git+https://github.com/rongardF/tvdatafeed tradingview-screener 2 | 3 | import numpy as np 4 | import pandas as pd 5 | from tvDatafeed import TvDatafeed, Interval 6 | from tradingview_screener import get_all_symbols 7 | import warnings 8 | 9 | warnings.simplefilter(action='ignore') 10 | 11 | #Standart Moving Average 12 | def sma(series, length): 13 | """ 14 | Calculate the Simple Moving Average (SMA) for a given series. 15 | """ 16 | return series.rolling(window=length).mean() 17 | 18 | #Exponential Moving Average 19 | def ema(series, length): 20 | """ 21 | Calculate the Exponential Moving Average (EMA) for a given series. 22 | """ 23 | return series.ewm(span=length, adjust=False).mean() 24 | 25 | 26 | def Bankery(data): 27 | df=data.copy() 28 | close_minus_rolling_min = data['close'] - pd.Series(data['low']).rolling(window=27).min() 29 | percentage_change = close_minus_rolling_min / (pd.Series(data['high']).rolling(window=27).max() - pd.Series(data['low']).rolling(window=27).min()) * 100 30 | 31 | sma1 = sma(percentage_change, 5) 32 | sma2 = sma(sma1, 3) 33 | 34 | fundtrend = (3 * sma1 - 2 * sma2 - 50) * 1.032 + 50 35 | 36 | typ = (2 * data['close'] + data['high'] + data['low'] + data['open']) / 5 37 | lol = pd.Series(data['low']).rolling(window=34).min() 38 | hoh = pd.Series(data['high']).rolling(window=34).max() 39 | bullbearline = ema((typ - lol) / (hoh - lol) * 100, 13) 40 | bankerentry = (fundtrend > bullbearline) & (bullbearline < 25) 41 | df['Entry'] = (bankerentry==True) 42 | return df 43 | 44 | 45 | tv = TvDatafeed() 46 | Hisseler = get_all_symbols(market='turkey') 47 | Hisseler = [symbol.replace('BIST:', '') for symbol in Hisseler] 48 | Hisseler = sorted(Hisseler) 49 | 50 | 51 | #Raporlama için kullanılacak başlıklar 52 | Titles = ['Hisse Adı', 'Son Fiyat','Dip Sinyali'] 53 | df_signals = pd.DataFrame(columns=Titles) 54 | 55 | for hisse in Hisseler: 56 | try: 57 | data = tv.get_hist(symbol=hisse, exchange='BIST', interval=Interval.in_1_hour, n_bars=100) 58 | data = data.reset_index() 59 | Banker = Bankery(data) 60 | Banker.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True) 61 | Banker.set_index('datetime', inplace=True) 62 | Buy = False 63 | Signals = Banker.tail(2) 64 | Signals = Signals.reset_index() 65 | 66 | Entry = (Signals.loc[0, 'Entry'] == False) & (Signals.loc[1, 'Entry'] == True) 67 | Last_Price = Signals.loc[1, 'Close'] 68 | L1 = [hisse, Last_Price,Entry] 69 | df_signals.loc[len(df_signals)] = L1 70 | print(L1) 71 | except: 72 | pass 73 | 74 | df_True = df_signals[(df_signals['Dip Sinyali'] == True)] 75 | print(df_True) 76 | -------------------------------------------------------------------------------- /hisse_supertrend: -------------------------------------------------------------------------------- 1 | !pip install yfinance 2 | !pip install vectorbt 3 | !pip install pandas_ta 4 | 5 | import pandas as pd 6 | import pandas_ta as ta 7 | import ssl 8 | from urllib import request 9 | import yfinance as yf 10 | import matplotlib.pyplot as plt 11 | import vectorbt as vbt 12 | import numpy as np 13 | 14 | def Hisse_Temel_Veriler(): 15 | url1="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/Temel-Degerler-Ve-Oranlar.aspx#page-1" 16 | context = ssl._create_unverified_context() 17 | response = request.urlopen(url1, context=context) 18 | url1 = response.read() 19 | 20 | df = pd.read_html(url1,decimal=',', thousands='.') #Tüm Hisselerin Tablolarını Aktar 21 | df2=df[6] 22 | return df2 23 | 24 | def Supertrend(data,SENSITIVITY = 3,ATR_PERIOD = 14): 25 | Supertrend=data.copy() 26 | # UT Bot Parameters 27 | Supertrend['xATR'] = ta.atr(data['High'], data['Low'], data['Adj Close'], timeperiod=ATR_PERIOD) 28 | Supertrend['nLoss'] = SENSITIVITY * Supertrend['xATR'] 29 | Supertrend = Supertrend.dropna() 30 | Supertrend = Supertrend.reset_index() 31 | # Filling ATRTrailing Variable 32 | Supertrend['ATRTrailing'] = [0.0] + [np.nan for i in range(len(Supertrend) - 1)] 33 | 34 | for i in range(1, len(Supertrend)): 35 | if (Supertrend.loc[i, 'Adj Close'] > Supertrend.loc[i - 1, 'ATRTrailing']) and (Supertrend.loc[i - 1, 'Adj Close'] > Supertrend.loc[i - 1, 'ATRTrailing']): 36 | Supertrend.loc[i, 'ATRTrailing'] = max(Supertrend.loc[i - 1, 'ATRTrailing'],Supertrend.loc[i, 'Adj Close']-Supertrend.loc[i,'nLoss']) 37 | 38 | elif (Supertrend.loc[i, 'Adj Close'] < Supertrend.loc[i - 1, 'ATRTrailing']) and (Supertrend.loc[i - 1, 'Adj Close'] < Supertrend.loc[i - 1, 'ATRTrailing']): 39 | Supertrend.loc[i, 'ATRTrailing'] = min(Supertrend.loc[i - 1, 'ATRTrailing'],Supertrend.loc[i, 'Adj Close']+Supertrend.loc[i,'nLoss']) 40 | 41 | elif Supertrend.loc[i, 'Adj Close'] > Supertrend.loc[i - 1, 'ATRTrailing']: 42 | Supertrend.loc[i, 'ATRTrailing']=Supertrend.loc[i, 'Adj Close']-Supertrend.loc[i,'nLoss'] 43 | else: 44 | Supertrend.loc[i, 'ATRTrailing']=Supertrend.loc[i, 'Adj Close']+Supertrend.loc[i,'nLoss'] 45 | 46 | # Calculating signals 47 | ema = vbt.MA.run(Supertrend['Adj Close'], 1, short_name='EMA', ewm=True) 48 | Supertrend['Above'] = ema.ma_crossed_above(Supertrend['ATRTrailing']) 49 | Supertrend['Below'] = ema.ma_crossed_below(Supertrend['ATRTrailing']) 50 | Supertrend['Entry'] = (Supertrend['Adj Close'] > Supertrend['ATRTrailing']) & (Supertrend['Above']==True) 51 | Supertrend['Exit'] = (Supertrend['Adj Close'] < Supertrend['ATRTrailing']) & (Supertrend['Below']==True) 52 | Supertrend=Supertrend.drop(Supertrend.columns[[7,8,10,11]],axis = 1) 53 | return Supertrend 54 | 55 | Hisse_Ozet=Hisse_Temel_Veriler() 56 | Hisseler=Hisse_Ozet['Kod'].values.tolist() 57 | 58 | Titles=['Hisse Adı','Kazanma Oranı[%]','Sharpe Oranı','Ort. Kazanma Oranı [%]','Ort Kazanma Süresi','Ort. Kayıp Oranı [%]','Ort Kayıp Süresi','Giriş Sinyali','Çıkış Sinyali'] 59 | df_signals=pd.DataFrame(columns=Titles) 60 | 61 | for i in range(0,len(Hisseler)): 62 | try: 63 | S=3 64 | ATR=14 65 | data=yf.download(Hisseler[i]+'.IS',period='2y', interval='1d',progress=False) 66 | Supert=Supertrend(data,S,ATR) 67 | psettings = {'init_cash': 100,'freq': 'D', 'direction': 'longonly', 'accumulate': True} 68 | pf = vbt.Portfolio.from_signals(Supert['Adj Close'], entries=Supert['Entry'], exits=Supert['Exit'],**psettings) 69 | Stats=pf.stats() 70 | 71 | Buy=False 72 | Sell=False 73 | Signals = Supert.tail(2) 74 | Signals = Signals.reset_index() 75 | Buy = Signals.loc[0, 'Entry']==False and Signals.loc[1, 'Entry']==True 76 | Sell = Signals.loc[0, 'Exit']== False and Signals.loc[1, 'Exit']== True 77 | 78 | L1=[Hisseler[i],round(Stats.loc['Win Rate [%]'],2),round(Stats.loc['Sharpe Ratio'],2), 79 | round(Stats.loc['Avg Winning Trade [%]'],2),str(Stats.loc['Avg Winning Trade Duration']), 80 | round(Stats.loc['Avg Losing Trade [%]'],2),str(Stats.loc['Avg Losing Trade Duration']), 81 | str(Buy),str(Sell)] 82 | 83 | print(L1) 84 | df_signals.loc[len(df_signals)] = L1 85 | 86 | if Buy==True: 87 | pf.plot(subplots = ['orders','trades','drawdowns','trade_pnl','cum_returns']).write_image((Hisseler[i]+"_Backtest.png")) 88 | except: 89 | pass 90 | 91 | df_True = df_signals[(df_signals['Giriş Sinyali'] == 'True')] 92 | print(df_True) 93 | -------------------------------------------------------------------------------- /hisse_tarama: -------------------------------------------------------------------------------- 1 | pip install pandas_ta 2 | import pandas as pd 3 | import pandas_ta as ta 4 | import ssl 5 | from urllib import request 6 | import requests 7 | import matplotlib.pyplot as plt 8 | 9 | def Hisse_Temel_Veriler(): 10 | url1="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/Temel-Degerler-Ve-Oranlar.aspx#page-1" 11 | context = ssl._create_unverified_context() 12 | response = request.urlopen(url1, context=context) 13 | url1 = response.read() 14 | df = pd.read_html(url1,decimal=',', thousands='.') #Tüm Hisselerin Tablolarını Aktar 15 | df=df[6] 16 | Hisseler=df['Kod'].values.tolist() 17 | return Hisseler 18 | 19 | def Stock_Prices(Hisse,period=120,Bar=100): 20 | url = f"https://www.isyatirim.com.tr/_Layouts/15/IsYatirim.Website/Common/ChartData.aspx/IntradayDelay?period={period}&code={Hisse}.E.BIST&last={Bar}" 21 | r1 = requests.get(url).json() 22 | data = pd.DataFrame.from_dict(r1) 23 | data[['Volume', 'Close']] = pd.DataFrame(data['data'].tolist(), index=data.index) 24 | data.drop(columns=['data'], inplace=True) 25 | return data 26 | 27 | def BBands_Squeeze(data,length=20,stdev=2,perct=2.5): 28 | df=data.copy() 29 | stdev=float(stdev) 30 | BBands=ta.bbands(df['Close'],length=20) 31 | BBands['Band_Width'] = BBands['BBU_'+str(length)+'_'+str(stdev)] - BBands['BBL_'+str(length)+'_'+str(stdev)] 32 | BBands['Band_Width_Percentage'] = (BBands['Band_Width'] / BBands['BBM_'+str(length)+'_'+str(stdev)]) * 100 33 | BBands['Squeeze'] = BBands.apply(lambda x: 1 if x['Band_Width_Percentage'] < perct else 0, axis=1) 34 | return BBands 35 | 36 | def Plot_BBands_with_Squeze(Hisse,data,BBands,length=20,stdev=2): 37 | plt.close() 38 | stdev=float(stdev) 39 | last_10_squeeze = BBands['Squeeze'].iloc[-10:].tolist() 40 | last_perct=BBands['Band_Width_Percentage'].iloc[-1:].tolist() 41 | 42 | if 1 in last_10_squeeze: 43 | # Verileri ve Bollinger bantlarını çiz 44 | plt.figure(figsize=(10, 5)) 45 | plt.plot(data.index, data['Close'], label='Close Price') 46 | plt.plot(BBands.index, BBands['BBU_'+str(length)+'_'+str(stdev)], label='Upper Band', color='green',linestyle='--') 47 | plt.plot(BBands.index, BBands['BBL_'+str(length)+'_'+str(stdev)], label='Lower Band', color='red',linestyle='--') 48 | plt.plot(BBands.index, BBands['BBM_'+str(length)+'_'+str(stdev)], label='Middle Band', color='blue',linestyle='--') 49 | last_squeeze_point = BBands[BBands['Squeeze'] == 1].index[-1] 50 | plt.axvline(x=last_squeeze_point, color='orange', linestyle='--', alpha=0.5) 51 | plt.legend() 52 | plt.title(f'{Hisse} Bollinger Bands Sıkışması') 53 | plt.xlabel('Date') 54 | plt.ylabel('Price') 55 | plt.grid() 56 | plt.savefig(f'{Hisse}_BB_Sıkışması.png', bbox_inches='tight', dpi=200) 57 | else: 58 | return 59 | return 60 | Hisseler=Hisse_Temel_Veriler() 61 | 62 | for i in range(0,len(Hisseler)): 63 | print(Hisseler[i]) 64 | try: 65 | P=240 66 | B=100 67 | L=20 68 | S=2 69 | Perc=2.5 70 | data=Stock_Prices(Hisseler[i],period=P,Bar=B) 71 | BBands=BBands_Squeeze(data,length=L,stdev=S,perct=Perc) 72 | Plot_BBands_with_Squeze(Hisseler[i],data,BBands,length=L,stdev=S) 73 | except: 74 | pass 75 | 76 | -------------------------------------------------------------------------------- /hisse_tilson: -------------------------------------------------------------------------------- 1 | !pip install yfinance 2 | !pip install vectorbt 3 | !pip install pandas_ta 4 | !pip install mplcyberpunk 5 | 6 | import pandas as pd 7 | import pandas_ta as ta 8 | import ssl 9 | from urllib import request 10 | import yfinance as yf 11 | import matplotlib.pyplot as plt 12 | import mplcyberpunk 13 | import vectorbt as vbt 14 | 15 | def Hisse_Temel_Veriler(): 16 | url1="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/Temel-Degerler-Ve-Oranlar.aspx#page-1" 17 | context = ssl._create_unverified_context() 18 | response = request.urlopen(url1, context=context) 19 | url1 = response.read() 20 | 21 | df = pd.read_html(url1,decimal=',', thousands='.') #Tüm Hisselerin Tablolarını Aktar 22 | df2=df[6] 23 | return df2 24 | 25 | def TillsonT3(data,Length=21,vf=0.618): 26 | Tillson=data.copy() 27 | 28 | ema_first_input = (Tillson['High'] + Tillson['Low'] + 2 * Tillson['Adj Close']) / 4 29 | e1 = ta.ema(ema_first_input, Length) 30 | e2 = ta.ema(e1, Length) 31 | e3 = ta.ema(e2, Length) 32 | e4 = ta.ema(e3, Length) 33 | e5 = ta.ema(e4, Length) 34 | e6 = ta.ema(e5, Length) 35 | 36 | c1 = -1 * vf * vf * vf 37 | c2 = 3 * vf * vf + 3 * vf * vf * vf 38 | c3 = -6 * vf * vf - 3 * vf - 3 * vf * vf * vf 39 | c4 = 1 + 3 * vf + vf * vf * vf + 3 * vf * vf 40 | Tillson['TillsonT3'] = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3 41 | Tillson = Tillson.dropna() 42 | Tillson = Tillson.reset_index() 43 | Tillson['Entry']=False 44 | Tillson['Exit']=False 45 | for i in range(1, len(Tillson)): 46 | if Tillson.loc[i,'TillsonT3']>Tillson.loc[i-1,'TillsonT3']: 47 | Tillson.loc[i,'Entry']=True 48 | if Tillson.loc[i,'TillsonT3'] 55.0)] 89 | print(df_True) 90 | -------------------------------------------------------------------------------- /istanbul_secim_yuz_tanıma: -------------------------------------------------------------------------------- 1 | --- 2 | title: "İstanbul İlçe Belediye Başkanlarının X (Twitter) Profillerindeki Duygu Dağılımı" 3 | author: "Uraz Akgül" 4 | date: "2024-04-13" 5 | # date-modified: last-modified 6 | date-format: "MMMM D, YYYY" 7 | categories: [Yüz] 8 | image: "imgs/emotions_heatmap.png" 9 | execute: 10 | eval: false 11 | --- 12 | 13 | Yapılan çalışmaların yanında içinde profil fotoğrafının da olduğu sosyal medya kullanımı da önemli olabiliyor. 14 | 15 | Bu uygulamada, İstanbul ilçe belediye başkanlarının X (Twitter) profillerindeki duygularını inceleyeceğiz. Duyguların tespitinde `Py-Feat` kütüphanesinden faydalanacağız. 16 | 17 | **Kullanılacak Kütüphaneler** 18 | 19 | ```{python} 20 | 21 | import os 22 | import pandas as pd 23 | from feat import Detector 24 | from feat.plotting import imshow 25 | import seaborn as sns 26 | import matplotlib.pyplot as plt 27 | 28 | ``` 29 | 30 | **Fotoğrafların İçe Aktarılması** 31 | 32 | [Buradan](https://github.com/urazakgul/python-blog/tree/main/posts/post_6){.external target="_blank"} ulaşabileceğiniz fotoğraflar ilçe belediye başkanlarının X (Twitter) hesaplarından indirilmiştir. 33 | 34 | ```{python} 35 | 36 | image_folder = 'ilce_bb_profil/' 37 | image_files = [f for f in os.listdir(image_folder) if f.endswith('.jpg')] 38 | 39 | ``` 40 | 41 | **Duyguların Tespit Edilmesi ve Görselleştirilmesi** 42 | 43 | `Py-Feat`, görüntülerden ve videolardan yüz ifadelerini kolayca tespit etmek, yüz ifadesi verilerini önceden işlemek ve analiz etmek ve yüz ifadesi verilerini görselleştirmek için kapsamlı bir araç ve model seti sağlar. `Py-Feat` önceden eğitilmiş çeşitli modelleri içeriyor. 44 | 45 | ```{python} 46 | 47 | detector = Detector( 48 | face_model='retinaface', # face detection 49 | landmark_model='mobilefacenet', # facial landmark detection 50 | facepose_model='img2pose', # facial pose estimation 51 | au_model='xgb', # action unit detection 52 | emotion_model='resmasknet', # emotion detection 53 | ) 54 | 55 | ``` 56 | 57 | * Yüz tespiti (Face detection, `face_model`): Bir görüntüdeki veya bir videodaki insan yüzlerini algılama sürecidir. Yüz tespiti, bir görüntü içindeki yüz bölgelerini belirlemek için kullanılır. Parametre seçenekleri şunlardır: `retinaface`, `mtcnn`, `faceboxes`, `img2pose` ve `img2pose-c`. 58 | 59 | * Yüz belirleme (Facial landmark detection, `landmark_model`): Yüzün belirli noktalarını (örneğin, gözler, burun, ağız) tespit etme sürecidir. Bu noktalar genellikle gözbebekleri, burun ucundaki nokta, dudakların kenarları gibi önemli anatomik yerlerdir. Parametre seçenekleri şunlardır: `mobilefacenet`, `mobilenet` ve `pfld`. 60 | 61 | * Yüz poz tahmini (Facial Pose estimation, `facepose_model`): Bir yüzün konumunu ve/veya dönüşünü belirleme sürecidir. Yüzün kaç derece eğik olduğunu, hangi yönde baktığını tahmin etmeyi içerir. Parametre seçenekleri şunlardır: `img2pose` ve `img2pose-c`. 62 | 63 | * Hareket Birimi tespiti (Action Unit detection, `au_model`): Yüz ifadelerindeki belirli kas gruplarını temsil eden hareket birimlerini (action units) tanımlama sürecidir. Örneğin, kaşların kaldırılması, dudakların büzülmesi gibi. Parametre seçenekleri şunlardır: `xgb` ve `svm`. 64 | 65 | * Duygu tespiti (Emotion detection, `emotion_model`): Bir kişinin yüz ifadesinden duygusal durumunu belirleme sürecidir. Örneğin, mutlu, üzgün, kızgın gibi duyguları tanımlama. Parametre seçenekleri şunlardır: `resmasknet` ve `svm`. 66 | 67 | Bir döngü ile tüm fotoğrafları dahil edeceğiz ama öncesinde örnek bir fotoğraf ile sürece bakalım. 68 | 69 | ```{python} 70 | 71 | example_img = 'uskudar_chp.jpg' 72 | imshow(image_folder + example_img) 73 | 74 | ``` 75 | 76 | ![](ilce_bb_profil/uskudar_chp.jpg) 77 | 78 | `detect_image()` ile yüklenen modelleri kullanalım. 79 | 80 | ```{python} 81 | 82 | single_face_prediction = detector.detect_image(image_folder + example_img) 83 | 84 | ``` 85 | 86 | ![](imgs/single_face_prediction.PNG) 87 | 88 | Buradan duyguları çekelim. 89 | 90 | ```{python} 91 | 92 | emotions = single_face_prediction.emotions 93 | 94 | ``` 95 | 96 | ![](imgs/emotions.PNG) 97 | 98 | `Py-Feat` görselleştirme imkanı da sunuyor. Bunu iki farklı şekilde yapabiliriz. 99 | 100 | ```{python} 101 | 102 | figs = single_face_prediction.plot_detections(poses=True) 103 | 104 | ``` 105 | 106 | ![](imgs/emotions_plot_1.png) 107 | 108 | ```{python} 109 | 110 | figs = single_face_prediction.plot_detections(faces='aus', muscles=True) 111 | 112 | ``` 113 | 114 | ![](imgs/emotions_plot_2.png) 115 | 116 | Tüm fotoğraflar için duyguları tespit edelim. Görseli ısı haritası ile yapacağız. 117 | 118 | Öncesinde `image_files` değişkenine tüm fotoğrafları aktarmıştık. Bunu kullanabiliriz. 119 | 120 | ```{python} 121 | 122 | emotions_df = pd.DataFrame() 123 | 124 | for image_file in image_files: 125 | face_prediction = detector.detect_image(image_folder + image_file) 126 | face_prediction_final = face_prediction[face_prediction['FaceScore'] == face_prediction['FaceScore'].max()] 127 | emotions = face_prediction_final.emotions 128 | ilce, parti = image_file.split('_') 129 | parti = parti.split('.')[0] 130 | emotions['image_file'] = ilce.upper() + '-' + parti.upper() 131 | emotions_df = pd.concat([emotions_df, emotions], ignore_index=True) 132 | 133 | emotions_df = emotions_df.set_index('image_file') 134 | emotions_df.columns = emotions_df.columns.str.upper() 135 | 136 | ``` 137 | 138 | Döngüde bulunan `face_prediction_final` değişkenini birden fazla yüz tespiti olduğu için oluşturdum. Büyükçekmece belediye başkanının profilinde kedi de bulunmaktadır. 139 | 140 | ```{python} 141 | 142 | example_img = 'buyukcekmece_chp.jpg' 143 | imshow(image_folder + example_img) 144 | 145 | ``` 146 | 147 | ![](ilce_bb_profil/buyukcekmece_chp.jpg) 148 | 149 | Isı haritası ile duyguları gösterebiliriz. 150 | 151 | ```{python} 152 | 153 | plt.figure(figsize=(10, 12)) 154 | sns.heatmap(emotions_df, cmap='Reds', annot=False, linewidths=.5) 155 | plt.title('İstanbul İlçe Belediye Başkanları X (Twitter) Profilleri Duygu Dağılımı') 156 | plt.tick_params(left=False, bottom=False) 157 | plt.ylabel('') 158 | plt.show() 159 | 160 | ``` 161 | 162 | ![](imgs/emotions_heatmap.png) 163 | 164 | Profil fotoğraflarında doğal olarak en güçlü duygunun `happiness` olduğunu görüyoruz. `neutral` pozlar da kendini göstermektedir. 165 | -------------------------------------------------------------------------------- /kanal kırılım: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import requests 4 | import matplotlib.pyplot as plt 5 | from scipy import stats 6 | from scipy.signal import argrelextrema 7 | import ssl 8 | from urllib import request 9 | 10 | def Hisse_Temel_Veriler(): 11 | url1="https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/Temel-Degerler-Ve-Oranlar.aspx#page-1" 12 | context = ssl._create_unverified_context() 13 | response = request.urlopen(url1, context=context) 14 | url1 = response.read() 15 | df = pd.read_html(url1,decimal=',', thousands='.') #Tüm Hisselerin Tablolarını Aktar 16 | df=df[6] 17 | Hisseler=df['Kod'].values.tolist() 18 | return Hisseler 19 | 20 | def Stock_Prices(Hisse): 21 | Bar = 1000 22 | url = f"https://www.isyatirim.com.tr/_Layouts/15/IsYatirim.Website/Common/ChartData.aspx/IntradayDelay?period=120&code={Hisse}.E.BIST&last={Bar}" 23 | r1 = requests.get(url).json() 24 | data = pd.DataFrame.from_dict(r1) 25 | data[['Volume', 'Close']] = pd.DataFrame(data['data'].tolist(), index=data.index) 26 | data.drop(columns=['data'], inplace=True) 27 | return data 28 | 29 | def Trend_Channel(df): 30 | best_period = None 31 | best_r_value = 0 32 | periods = [100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] 33 | for period in periods: 34 | close_data = df['Close'].tail(period) 35 | x = np.arange(len(close_data)) 36 | slope, intercept, r_value, _, _ = stats.linregress(x, close_data) 37 | if abs(r_value) > abs(best_r_value): 38 | best_r_value = abs(r_value) 39 | best_period = period 40 | 41 | return best_period, best_r_value 42 | 43 | def Plot_Trendlines(Hisse,data,best_period,rval=0.85): 44 | plt.close() 45 | close_data = data['Close'].tail(best_period) 46 | x_best_period = np.arange(len(close_data)) 47 | slope_best_period, intercept_best_period, r_value_best_period, _, _ = stats.linregress(x_best_period, close_data) 48 | trendline=slope_best_period * x_best_period + intercept_best_period 49 | upper_channel = (slope_best_period * x_best_period + intercept_best_period) + (trendline.std() * 1.1) 50 | lower_channel = (slope_best_period * x_best_period + intercept_best_period) - (trendline.std() * 1.1) 51 | 52 | plt.figure(figsize=(10, 6)) 53 | plt.plot(data.index, data['Close'], label='Kapanış Fiyatı') 54 | plt.plot(data.index[-best_period:], trendline, 'g-', label=f'Trend Çizgisi (R={r_value_best_period:.2f})') 55 | plt.fill_between(data.index[-best_period:], upper_channel, trendline, color='lightgreen', alpha=0.3, label='Üst Kanal') 56 | plt.fill_between(data.index[-best_period:], trendline, lower_channel, color='lightcoral', alpha=0.3, label='Alt Kanal') 57 | plt.title(str(Hisse)+' Kapanış Fiyatı ve Trend Çizgisi') 58 | plt.xlabel('Tarih Endeksi') 59 | plt.ylabel('Kapanış Fiyatı') 60 | plt.legend() 61 | plt.grid(True) 62 | plt.xticks(rotation=45) 63 | plt.tight_layout() 64 | 65 | upper_diff = upper_channel - close_data 66 | lower_diff = close_data - lower_channel 67 | last_upper_diff = upper_diff.iloc[-1] 68 | last_lower_diff = lower_diff.iloc[-1] 69 | 70 | if abs(r_value_best_period) > rval and (last_upper_diff < 0): 71 | print(str(Hisse)+' Yazdırıldı.') 72 | print('Trend Yukarı yönlü kırılmış.') 73 | print('Hesaplanan R Değeri:'+str(abs(r_value_best_period))) 74 | print('Hesaplanan Fark:'+str(last_upper_diff)) 75 | plt.savefig(f'{Hisse}_Yukarı_Kırılım.png', bbox_inches='tight', dpi=200) 76 | 77 | if abs(r_value_best_period) > rval and (last_lower_diff < 0): 78 | print(str(Hisse)+' Yazdırıldı.') 79 | print('Trend Aşağı yönlü kırılmış') 80 | print('Hesaplanan R Değeri:'+str(abs(r_value_best_period))) 81 | print('Hesaplanan Fark:'+str(last_lower_diff)) 82 | plt.savefig(f'{Hisse}_Aşağı_Kırılım.png', bbox_inches='tight', dpi=200) 83 | 84 | return 85 | 86 | Hisseler=Hisse_Temel_Veriler() 87 | for i in range(0,len(Hisseler)): 88 | print(Hisseler[i]) 89 | try: 90 | data=Stock_Prices(Hisseler[i]) 91 | best_period, best_r_value = Trend_Channel(data) 92 | Plot_Trendlines(Hisseler[i],data,best_period) 93 | except: 94 | pass 95 | -------------------------------------------------------------------------------- /kripto_dip_tarama.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyNVyCnPXcNoLqs6UU5lD3Ze", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "source": [ 32 | "\n", 33 | "!pip install git+https://github.com/rongardF/tvdatafeed tradingview-screener\n", 34 | "\n", 35 | "import numpy as np\n", 36 | "import pandas as pd\n", 37 | "from tvDatafeed import TvDatafeed, Interval\n", 38 | "import warnings\n", 39 | "\n", 40 | "warnings.simplefilter(action='ignore')\n", 41 | "\n", 42 | "# Standart Moving Average\n", 43 | "def sma(series, length):\n", 44 | " \"\"\"\n", 45 | " Calculate the Simple Moving Average (SMA) for a given series.\n", 46 | " \"\"\"\n", 47 | " return series.rolling(window=length).mean()\n", 48 | "\n", 49 | "# Exponential Moving Average\n", 50 | "def ema(series, length):\n", 51 | " \"\"\"\n", 52 | " Calculate the Exponential Moving Average (EMA) for a given series.\n", 53 | " \"\"\"\n", 54 | " return series.ewm(span=length, adjust=False).mean()\n", 55 | "\n", 56 | "def Bankery(data):\n", 57 | " df = data.copy()\n", 58 | " close_minus_rolling_min = data['close'] - pd.Series(data['low']).rolling(window=27).min()\n", 59 | " percentage_change = close_minus_rolling_min / (pd.Series(data['high']).rolling(window=27).max() - pd.Series(data['low']).rolling(window=27).min()) * 100\n", 60 | "\n", 61 | " sma1 = sma(percentage_change, 5)\n", 62 | " sma2 = sma(sma1, 3)\n", 63 | "\n", 64 | " fundtrend = (3 * sma1 - 2 * sma2 - 50) * 1.032 + 50\n", 65 | "\n", 66 | " typ = (2 * data['close'] + data['high'] + data['low'] + data['open']) / 5\n", 67 | " lol = pd.Series(data['low']).rolling(window=34).min()\n", 68 | " hoh = pd.Series(data['high']).rolling(window=34).max()\n", 69 | " bullbearline = ema((typ - lol) / (hoh - lol) * 100, 13)\n", 70 | " bankerentry = (fundtrend > bullbearline) & (bullbearline < 25)\n", 71 | " df['Entry'] = (bankerentry == True)\n", 72 | " return df\n", 73 | "\n", 74 | "# TradingView verisini çekme\n", 75 | "tv = TvDatafeed(username='your_username', password='your_password')\n", 76 | "symbols = [\"BTCUSDT\", \"XRPUSDT\", \"ETHUSDT\",\n", 77 | " \"AVAXUSDT\", \"ARKUSDT\", \"ARKMTUSD\", \"ARBTUSD\", \"AGIXUSDT\", \"ATOMUSDT\",\"ATMUSDT\", \"ASRUSDT\",\"ARPAUSDT\",\"API3USDT\",\"APEUSDT\",\n", 78 | " \"ANKRUSDT\",\"AMPUSDT\", \"ALTUSDT\", \"ALICEUSDT\",\"ALGOUSDT\",\"AIUSDT\", \"ADAUSDT\",\"ACMUSDT\",\"ACHUSDT\",\"ACEUSDT\",\"ACAUSDT\",\n", 79 | "\n", 80 | " \"AXLUSDT\", \"AEVOUSDT\", \"ALTUSDT\",\"APTUSDT\", \"ADAUSDT\",\"ALGOUSDT\", \"AIUSDT\",\"AXLUSDT\",\"AUDIOUSDT\",\n", 81 | " \"BONKUSDT\", \"BNBUSDT\",\"BSWUSDT\", \"BOMEUSDT\",\"BNXUSDT\",\"BLURUSDT\",\"BELUSDT\",\"BCHUSDT\",\"BARUSDT\",\"BANDUSDT\",\"BAKEUSDT\",\n", 82 | " \"COMPUSDT\",\"CHZUSDT\", \"CFXUSDT\",\"CYBERUSDT\",\"CRVUSDT\",\"COTIUSDT\",\"COSUSDT\",\"COMBOUSDT\",\"CKBUSDT\",\"CITYUSDT\",\"CAKEUSDT\",\n", 83 | " \"DOGEUSDT\", \"DOTUSDT\", \"DYDXUSDT\",\"DYMUSDT\",\"DODOUSDT\",\"DENTUSDT\",\"DARUSDT\",\n", 84 | " \"ETHFIUSDT\", \"EDUUSDT\",\"ETHUSDT\",\"ETCUSDT\",\"EOSUSDT\",\"ENSUSDT\",\"ENJUSDT\",\n", 85 | " \"FETUSDT\", \"FTMUSDT\",\"FLOKIUSDT\",\"FRONTUSDT\",\"FILUSDT\",\"FIDAUSDT\",\n", 86 | " \"GRTUSDT\",\"GMTUSDT\",\"GASUSDT\",\"GALAUSDT\",\n", 87 | " \"HOTUSDT\",\"HBARUSDT\",\n", 88 | " \"IMXUSDT\",\"ICPUSDT\",\"IOTAUSDT\", \"IDUSDT\", \"INJUSDT\",\n", 89 | " \"JUVUSDT\", \"JUPUSDT\",\"JTOUSDT\",\"JOEUSDT\",\"JASMYUSDT\",\n", 90 | " \"LUNCUSDT\",\"LDOUSDT\", \"LINKUSDT\", \"LAZIOUSDT\",\"LEVERUSDT\",\"LITUSDT\",\"LPTUSDT\",\"LOOMUSDT\",\"LRCUSDT\",\"LTCUSDT\",\"LUNAUSDT\",\n", 91 | "\n", 92 | " \"MANTAUSDT\", \"MATICUSDT\",\"MBOXUSDT\", \"MAVUSDT\", \"MANAUSDT\",\"MINAUSDT\", \"MEMEUSDT\",\"MAGICUSDT\",\"METISUSDT\",\"MKRUSDT\",\"MOVRUSDT\",\n", 93 | " \"MTLUSDT\",\n", 94 | " \"NTRNUSDT\", \"NEARUSDT\",\"NEOUSDT\", \"NFPUSDT\",\n", 95 | " \"PEPEUSDT\",\"PORTALUSDT\", \"PIXELUSDT\",\"PYTHUSDT\",\"PAXGUSDT\",\"PENDLEUSDT\",\"PORTOUSDT\",\"PSGUSDT\",\n", 96 | " \"OPUSDT\",\"OCEANUSDT\",\"OGUSDT\",\"OGNUSDT\",\"OMUSDT\",\"ONEUSDT\",\"ONTUSDT\",\"ORDIUSDT\",\n", 97 | " \"RNDRUSDT\",\"RADUSDT\",\"RAREUSDT\",\"RAYUSDT\",\"REEFUSDT\",\"ROSEUSDT\",\"RUNEUSDT\",\"RVNUSDT\",\n", 98 | " \"SOLUSDT\", \"SHIBUSDT\",\"SKLUSDT\",\"STRKUSDT\", \"SXPUSDT\",\"SEIUSDT\", \"SUIUSDT\",\"SANDUSDT\", \"SANTOSUSDT\", \"SEIUSDT\",\"SLPUSDT\",\n", 99 | " \"SNXUSDT\", \"SPELLUSDT\",\"STORJUSDT\",\"STRAXUSDT\",\"STXUSDT\",\"SUPERUSDT\",\n", 100 | "\n", 101 | " \"THETAUSDT\",\"TIAUSDT\",\"TLMUSDT\",\"TRBUSDT\",\"TWTUSDT\",\n", 102 | " \"XAIUSDT\", \"XECUSDT\",\"XLMUSDT\",\"XTZUSDT\",\"XVGUSDT\",\"XVSUSDT\",\n", 103 | " \"UMAUSDT\", \"UNIUSDT\", \"UNFIUSDT\",\n", 104 | " \"VANRYUSDT\", \"VETUSDT\",\"VICUSDT\",\n", 105 | " \"ZILUSDT\",\n", 106 | " \"WLDUSDT\" , \"WIFUSDT\"]\n", 107 | "exchange = 'BINANCE'\n", 108 | "\n", 109 | "# Raporlama için kullanılacak başlıklar\n", 110 | "Titles = ['Kripto Çifti', 'Son Fiyat', 'Dip Sinyali']\n", 111 | "df_signals = pd.DataFrame(columns=Titles)\n", 112 | "\n", 113 | "for symbol in symbols:\n", 114 | " try:\n", 115 | " data = tv.get_hist(symbol=symbol, exchange=exchange, interval=Interval.in_daily, n_bars=100)\n", 116 | " data = data.reset_index()\n", 117 | " Banker = Bankery(data)\n", 118 | " Banker.rename(columns={'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'volume': 'Volume'}, inplace=True)\n", 119 | " Banker.set_index('datetime', inplace=True)\n", 120 | " Buy = False\n", 121 | " Signals = Banker.tail(2)\n", 122 | " Signals = Signals.reset_index()\n", 123 | "\n", 124 | " Entry = (Signals.loc[0, 'Entry'] == False) & (Signals.loc[1, 'Entry'] == True)\n", 125 | " Last_Price = Signals.loc[1, 'Close']\n", 126 | " L1 = [symbol, Last_Price, Entry]\n", 127 | " df_signals.loc[len(df_signals)] = L1\n", 128 | " print(L1)\n", 129 | " except Exception as e:\n", 130 | " print(f\"Error fetching data for {symbol}: {e}\")\n", 131 | "\n", 132 | "df_True = df_signals[(df_signals['Dip Sinyali'] == True)]\n", 133 | "print(df_True)\n" 134 | ], 135 | "metadata": { 136 | "colab": { 137 | "base_uri": "https://localhost:8080/" 138 | }, 139 | "id": "xC45kr8neLUK", 140 | "outputId": "82ffaf39-a623-4209-a061-94e07da8b0a4" 141 | }, 142 | "execution_count": 5, 143 | "outputs": [ 144 | { 145 | "output_type": "stream", 146 | "name": "stdout", 147 | "text": [ 148 | "Collecting git+https://github.com/rongardF/tvdatafeed\n", 149 | " Cloning https://github.com/rongardF/tvdatafeed to /tmp/pip-req-build-v_t6kxj6\n", 150 | " Running command git clone --filter=blob:none --quiet https://github.com/rongardF/tvdatafeed /tmp/pip-req-build-v_t6kxj6\n", 151 | " Resolved https://github.com/rongardF/tvdatafeed to commit e6f6aaa7de439ac6e454d9b26d2760ded8dc4923\n", 152 | " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 153 | "Requirement already satisfied: tradingview-screener in /usr/local/lib/python3.10/dist-packages (2.5.0)\n", 154 | "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (67.7.2)\n", 155 | "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.2.2)\n", 156 | "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (1.8.0)\n", 157 | "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from tvdatafeed==2.1.0) (2.31.0)\n", 158 | "Requirement already satisfied: numpy>=1.22.4 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (1.25.2)\n", 159 | "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2.8.2)\n", 160 | "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2023.4)\n", 161 | "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->tvdatafeed==2.1.0) (2024.1)\n", 162 | "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.3.2)\n", 163 | "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (3.7)\n", 164 | "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2.0.7)\n", 165 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->tvdatafeed==2.1.0) (2024.6.2)\n", 166 | "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->tvdatafeed==2.1.0) (1.16.0)\n" 167 | ] 168 | }, 169 | { 170 | "output_type": "stream", 171 | "name": "stderr", 172 | "text": [ 173 | "ERROR:tvDatafeed.main:error while signin\n", 174 | "WARNING:tvDatafeed.main:you are using nologin method, data you access may be limited\n" 175 | ] 176 | }, 177 | { 178 | "output_type": "stream", 179 | "name": "stdout", 180 | "text": [ 181 | "['BTCUSDT', 61648.0, False]\n", 182 | "['XRPUSDT', 0.475, False]\n", 183 | "['ETHUSDT', 3382.59, False]\n", 184 | "['AVAXUSDT', 26.16, False]\n", 185 | "['ARKUSDT', 0.4542, False]\n", 186 | "['ARKMTUSD', 2.005, False]\n", 187 | "['ARBTUSD', 0.823, False]\n", 188 | "['AGIXUSDT', 0.7374, False]\n", 189 | "['ATOMUSDT', 6.883, False]\n", 190 | "['ATMUSDT', 2.245, False]\n", 191 | "['ASRUSDT', 2.372, False]\n", 192 | "['ARPAUSDT', 0.04759, False]\n", 193 | "['API3USDT', 2.203, False]\n", 194 | "['APEUSDT', 0.957, False]\n", 195 | "['ANKRUSDT', 0.0314, False]\n", 196 | "['AMPUSDT', 0.004902, True]\n", 197 | "['ALTUSDT', 0.1882, False]\n", 198 | "['ALICEUSDT', 1.127, False]\n", 199 | "['ALGOUSDT', 0.1419, True]\n", 200 | "['AIUSDT', 0.698, False]\n", 201 | "['ADAUSDT', 0.3918, False]\n", 202 | "['ACMUSDT', 1.683, False]\n", 203 | "['ACHUSDT', 0.0225, False]\n", 204 | "['ACEUSDT', 3.465, False]\n", 205 | "['ACAUSDT', 0.0683, False]\n", 206 | "['AXLUSDT', 0.5893, True]\n", 207 | "['AEVOUSDT', 0.497, False]\n", 208 | "['ALTUSDT', 0.1883, False]\n", 209 | "['APTUSDT', 6.85, False]\n", 210 | "['ADAUSDT', 0.3918, False]\n", 211 | "['ALGOUSDT', 0.1419, True]\n", 212 | "['AIUSDT', 0.698, False]\n", 213 | "['AXLUSDT', 0.5892, True]\n", 214 | "['AUDIOUSDT', 0.1524, False]\n", 215 | "['BONKUSDT', 2.285e-05, False]\n", 216 | "['BNBUSDT', 573.6, False]\n", 217 | "['BSWUSDT', 0.0632, False]\n", 218 | "['BOMEUSDT', 0.009255, False]\n", 219 | "['BNXUSDT', 1.1928, False]\n", 220 | "['BLURUSDT', 0.2375, False]\n", 221 | "['BELUSDT', 0.581, False]\n", 222 | "['BCHUSDT', 378.4, True]\n", 223 | "['BARUSDT', 1.934, False]\n", 224 | "['BANDUSDT', 1.128, False]\n", 225 | "['BAKEUSDT', 0.2745, False]\n", 226 | "['COMPUSDT', 48.73, False]\n", 227 | "['CHZUSDT', 0.07839, False]\n", 228 | "['CFXUSDT', 0.1563, False]\n", 229 | "['CYBERUSDT', 4.991, False]\n", 230 | "['CRVUSDT', 0.3103, False]\n", 231 | "['COTIUSDT', 0.09509, False]\n", 232 | "['COSUSDT', 0.008495, True]\n", 233 | "['COMBOUSDT', 0.651, False]\n", 234 | "['CKBUSDT', 0.011889, True]\n", 235 | "['CITYUSDT', 2.293, False]\n", 236 | "['CAKEUSDT', 2.167, False]\n", 237 | "['DOGEUSDT', 0.12436, False]\n", 238 | "['DOTUSDT', 5.911, False]\n", 239 | "['DYDXUSDT', 1.362, False]\n", 240 | "['DYMUSDT', 1.561, False]\n", 241 | "['DODOUSDT', 0.1297, False]\n", 242 | "['DENTUSDT', 0.000966, False]\n", 243 | "['DARUSDT', 0.12306, False]\n", 244 | "['ETHFIUSDT', 3.241, False]\n", 245 | "['EDUUSDT', 0.6008, False]\n", 246 | "['ETHUSDT', 3381.26, False]\n", 247 | "['ETCUSDT', 23.64, True]\n", 248 | "['EOSUSDT', 0.5762, True]\n", 249 | "['ENSUSDT', 24.45, False]\n", 250 | "['ENJUSDT', 0.2034, False]\n", 251 | "['FETUSDT', 1.791, False]\n", 252 | "['FTMUSDT', 0.5738, False]\n", 253 | "['FLOKIUSDT', 0.00017286, False]\n", 254 | "['FRONTUSDT', 0.9007, False]\n", 255 | "['FILUSDT', 4.389, False]\n", 256 | "['FIDAUSDT', 0.2926, False]\n", 257 | "['GRTUSDT', 0.2205, False]\n", 258 | "['GMTUSDT', 0.1655, False]\n", 259 | "['GASUSDT', 3.662, False]\n", 260 | "['GALAUSDT', 0.02831, False]\n", 261 | "['HOTUSDT', 0.001823, False]\n", 262 | "['HBARUSDT', 0.0772, False]\n", 263 | "['IMXUSDT', 1.5339, False]\n", 264 | "['ICPUSDT', 8.264, False]\n", 265 | "['IOTAUSDT', 0.1756, False]\n", 266 | "['IDUSDT', 0.442, False]\n", 267 | "['INJUSDT', 22.94, False]\n", 268 | "['JUVUSDT', 1.85, False]\n", 269 | "['JUPUSDT', 0.7968, False]\n", 270 | "['JTOUSDT', 2.403, False]\n", 271 | "['JOEUSDT', 0.3322, False]\n", 272 | "['JASMYUSDT', 0.030179, False]\n", 273 | "['LUNCUSDT', 8.19e-05, False]\n", 274 | "['LDOUSDT', 2.369, False]\n", 275 | "['LINKUSDT', 13.981, False]\n", 276 | "['LAZIOUSDT', 1.577, False]\n", 277 | "['LEVERUSDT', 0.002121, False]\n", 278 | "['LITUSDT', 0.806, False]\n", 279 | "['LPTUSDT', 17.112, False]\n", 280 | "['LOOMUSDT', 0.05609, False]\n", 281 | "['LRCUSDT', 0.1795, False]\n", 282 | "['LTCUSDT', 71.43, False]\n", 283 | "['LUNAUSDT', 0.4287, False]\n", 284 | "['MANTAUSDT', 1.009, False]\n", 285 | "['MATICUSDT', 0.5563, False]\n", 286 | "['MBOXUSDT', 0.23, False]\n", 287 | "['MAVUSDT', 0.2795, False]\n", 288 | "['MANAUSDT', 0.3385, False]\n", 289 | "['MINAUSDT', 0.5389, False]\n", 290 | "['MEMEUSDT', 0.01952, False]\n", 291 | "['MAGICUSDT', 0.6239, False]\n", 292 | "['METISUSDT', 48.52, False]\n", 293 | "['MKRUSDT', 2359.0, False]\n", 294 | "['MOVRUSDT', 11.374, False]\n", 295 | "['MTLUSDT', 1.324, False]\n", 296 | "['NTRNUSDT', 0.4403, False]\n", 297 | "['NEARUSDT', 5.247, False]\n", 298 | "['NEOUSDT', 11.35, False]\n", 299 | "['NFPUSDT', 0.3364, False]\n", 300 | "['PEPEUSDT', 1.265e-05, False]\n", 301 | "['PORTALUSDT', 0.492, False]\n", 302 | "['PIXELUSDT', 0.2719, False]\n", 303 | "['PYTHUSDT', 0.3197, False]\n", 304 | "['PAXGUSDT', 2291.0, False]\n", 305 | "['PENDLEUSDT', 5.503, False]\n", 306 | "['PORTOUSDT', 1.697, False]\n", 307 | "['PSGUSDT', 3.087, False]\n", 308 | "['OPUSDT', 1.75, False]\n", 309 | "['OCEANUSDT', 0.7382, False]\n", 310 | "['OGUSDT', 3.205, True]\n", 311 | "['OGNUSDT', 0.1036, False]\n", 312 | "['OMUSDT', 0.7257, False]\n", 313 | "['ONEUSDT', 0.01505, False]\n", 314 | "['ONTUSDT', 0.2097, False]\n", 315 | "['ORDIUSDT', 37.9, False]\n", 316 | "['RNDRUSDT', 7.602, False]\n", 317 | "['RADUSDT', 1.585, True]\n", 318 | "['RAREUSDT', 0.0965, False]\n", 319 | "['RAYUSDT', 1.5509, False]\n", 320 | "['REEFUSDT', 0.001433, False]\n", 321 | "['ROSEUSDT', 0.08978, False]\n", 322 | "['RUNEUSDT', 4.166, False]\n", 323 | "['RVNUSDT', 0.01968, True]\n", 324 | "['SOLUSDT', 137.87, True]\n", 325 | "['SHIBUSDT', 1.751e-05, False]\n", 326 | "['SKLUSDT', 0.05249, False]\n", 327 | "['STRKUSDT', 0.71, False]\n", 328 | "['SXPUSDT', 0.2521, False]\n", 329 | "['SEIUSDT', 0.3626, False]\n", 330 | "['SUIUSDT', 0.8537, False]\n", 331 | "['SANDUSDT', 0.3357, False]\n", 332 | "['SANTOSUSDT', 3.168, False]\n", 333 | "['SEIUSDT', 0.3626, False]\n", 334 | "['SLPUSDT', 0.003025, False]\n", 335 | "['SNXUSDT', 1.992, False]\n", 336 | "['SPELLUSDT', 0.0007212, False]\n", 337 | "['STORJUSDT', 0.3923, False]\n", 338 | "['STRAXUSDT', 0.0468, False]\n", 339 | "['STXUSDT', 1.726, True]\n", 340 | "['SUPERUSDT', 0.675, False]\n", 341 | "['THETAUSDT', 1.61, False]\n", 342 | "['TIAUSDT', 6.6, False]\n", 343 | "['TLMUSDT', 0.0124, False]\n", 344 | "['TRBUSDT', 101.17, False]\n", 345 | "['TWTUSDT', 1.0021, False]\n", 346 | "['XAIUSDT', 0.4724, False]\n", 347 | "['XECUSDT', 3.223e-05, False]\n", 348 | "['XLMUSDT', 0.091, True]\n", 349 | "['XTZUSDT', 0.777, False]\n", 350 | "['XVGUSDT', 0.004167, False]\n", 351 | "['XVSUSDT', 6.17, False]\n", 352 | "['UMAUSDT', 2.648, False]\n", 353 | "['UNIUSDT', 9.368, False]\n", 354 | "['UNFIUSDT', 5.014, False]\n", 355 | "['VANRYUSDT', 0.1416, False]\n", 356 | "['VETUSDT', 0.02644, False]\n", 357 | "['VICUSDT', 0.352, False]\n", 358 | "['ZILUSDT', 0.01776, False]\n", 359 | "['WLDUSDT', 2.837, False]\n", 360 | "['WIFUSDT', 2.0344, False]\n", 361 | " Kripto Çifti Son Fiyat Dip Sinyali\n", 362 | "15 AMPUSDT 0.004902 True\n", 363 | "18 ALGOUSDT 0.141900 True\n", 364 | "25 AXLUSDT 0.589300 True\n", 365 | "30 ALGOUSDT 0.141900 True\n", 366 | "32 AXLUSDT 0.589200 True\n", 367 | "41 BCHUSDT 378.400000 True\n", 368 | "51 COSUSDT 0.008495 True\n", 369 | "53 CKBUSDT 0.011889 True\n", 370 | "66 ETCUSDT 23.640000 True\n", 371 | "67 EOSUSDT 0.576200 True\n", 372 | "129 OGUSDT 3.205000 True\n", 373 | "136 RADUSDT 1.585000 True\n", 374 | "142 RVNUSDT 0.019680 True\n", 375 | "143 SOLUSDT 137.870000 True\n", 376 | "158 STXUSDT 1.726000 True\n", 377 | "167 XLMUSDT 0.091000 True\n" 378 | ] 379 | } 380 | ] 381 | } 382 | ] 383 | } -------------------------------------------------------------------------------- /toplama.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyNiH0X7kWJven5Jot5SlVJB", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 1, 32 | "metadata": { 33 | "colab": { 34 | "base_uri": "https://localhost:8080/" 35 | }, 36 | "id": "RE54Mq9ahTey", 37 | "outputId": "059eb8d5-d8c1-4eb4-b6aa-ed595fa206b4" 38 | }, 39 | "outputs": [ 40 | { 41 | "output_type": "execute_result", 42 | "data": { 43 | "text/plain": [ 44 | "7" 45 | ] 46 | }, 47 | "metadata": {}, 48 | "execution_count": 1 49 | } 50 | ], 51 | "source": [ 52 | "x=3\n", 53 | "y=4\n", 54 | "z=x+y\n", 55 | "z" 56 | ] 57 | } 58 | ] 59 | } --------------------------------------------------------------------------------