├── 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 | "
"
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 | "
"
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 | 
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 | 
87 |
88 | Buradan duyguları çekelim.
89 |
90 | ```{python}
91 |
92 | emotions = single_face_prediction.emotions
93 |
94 | ```
95 |
96 | 
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 | 
107 |
108 | ```{python}
109 |
110 | figs = single_face_prediction.plot_detections(faces='aus', muscles=True)
111 |
112 | ```
113 |
114 | 
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 | 
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 | 
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 | "
"
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 | "
"
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 | }
--------------------------------------------------------------------------------