├── Pontos de pivo para Daytrade - simulação resultados .ipynb
├── README.md
├── Robô Pivot point-Mt5-Python.ipynb
└── ilustrac.png
/Pontos de pivo para Daytrade - simulação resultados .ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "### Pontos de pivo para Daytrade\n",
8 | "Uma estrategia basica para trading\n",
9 | "\n",
10 | "OBS: Esse modelo Só é funcional para ativos com volatilidade superior a do IBOV, ativos de Beta baixo deverar consultar se compensa com os custo operacionais."
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": 2,
16 | "metadata": {},
17 | "outputs": [],
18 | "source": [
19 | "import pandas as pd\n",
20 | "from pandas_datareader import data as pdr\n",
21 | "import numpy as np\n",
22 | "import matplotlib.pyplot as plt\n",
23 | "import yfinance\n",
24 | "import warnings\n",
25 | "%matplotlib inline\n",
26 | "warnings.filterwarnings('ignore')"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 89,
32 | "metadata": {},
33 | "outputs": [],
34 | "source": [
35 | "ativo = yfinance.Ticker(\"csna3.SA\")\n",
36 | "df = ativo.history(interval=\"5m\", period = \"1d\")\n",
37 | "\n",
38 | "# buscando series historias outro jeito mais simples\n",
39 | "#df = pdr.DataReader('itub4.SA',data_source='yahoo', start='2020-02-28', end = '2020-04-02');\n",
40 | "#df.tail()"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": 90,
46 | "metadata": {},
47 | "outputs": [
48 | {
49 | "data": {
50 | "text/plain": [
51 | "Open 33.730000\n",
52 | "High 33.900002\n",
53 | "Low 33.700001\n",
54 | "Close 33.740002\n",
55 | "Volume 226300.000000\n",
56 | "Dividends 0.000000\n",
57 | "Stock Splits 0.000000\n",
58 | "Name: 2021-01-22 15:55:00-03:00, dtype: float64"
59 | ]
60 | },
61 | "execution_count": 90,
62 | "metadata": {},
63 | "output_type": "execute_result"
64 | }
65 | ],
66 | "source": [
67 | "df.iloc[-1].copy()"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "execution_count": 91,
73 | "metadata": {},
74 | "outputs": [
75 | {
76 | "data": {
77 | "text/html": [
78 | "
\n",
79 | "\n",
92 | "
\n",
93 | " \n",
94 | " \n",
95 | " | \n",
96 | " Open | \n",
97 | " High | \n",
98 | " Low | \n",
99 | " Close | \n",
100 | " Volume | \n",
101 | " Dividends | \n",
102 | " Stock Splits | \n",
103 | "
\n",
104 | " \n",
105 | " Datetime | \n",
106 | " | \n",
107 | " | \n",
108 | " | \n",
109 | " | \n",
110 | " | \n",
111 | " | \n",
112 | " | \n",
113 | "
\n",
114 | " \n",
115 | " \n",
116 | " \n",
117 | " 2021-01-21 10:05:00-03:00 | \n",
118 | " 33.660000 | \n",
119 | " 34.150002 | \n",
120 | " 33.660000 | \n",
121 | " 34.150002 | \n",
122 | " 0 | \n",
123 | " 0 | \n",
124 | " 0 | \n",
125 | "
\n",
126 | " \n",
127 | " 2021-01-21 10:10:00-03:00 | \n",
128 | " 34.110001 | \n",
129 | " 34.599998 | \n",
130 | " 34.070000 | \n",
131 | " 34.150002 | \n",
132 | " 701900 | \n",
133 | " 0 | \n",
134 | " 0 | \n",
135 | "
\n",
136 | " \n",
137 | " 2021-01-21 10:15:00-03:00 | \n",
138 | " 34.180000 | \n",
139 | " 34.490002 | \n",
140 | " 34.150002 | \n",
141 | " 34.490002 | \n",
142 | " 494200 | \n",
143 | " 0 | \n",
144 | " 0 | \n",
145 | "
\n",
146 | " \n",
147 | " 2021-01-21 10:20:00-03:00 | \n",
148 | " 34.490002 | \n",
149 | " 34.930000 | \n",
150 | " 34.410000 | \n",
151 | " 34.860001 | \n",
152 | " 721500 | \n",
153 | " 0 | \n",
154 | " 0 | \n",
155 | "
\n",
156 | " \n",
157 | " 2021-01-21 10:25:00-03:00 | \n",
158 | " 34.830002 | \n",
159 | " 34.900002 | \n",
160 | " 34.330002 | \n",
161 | " 34.490002 | \n",
162 | " 835800 | \n",
163 | " 0 | \n",
164 | " 0 | \n",
165 | "
\n",
166 | " \n",
167 | " ... | \n",
168 | " ... | \n",
169 | " ... | \n",
170 | " ... | \n",
171 | " ... | \n",
172 | " ... | \n",
173 | " ... | \n",
174 | " ... | \n",
175 | "
\n",
176 | " \n",
177 | " 2021-01-22 15:35:00-03:00 | \n",
178 | " 33.680000 | \n",
179 | " 33.840000 | \n",
180 | " 33.669998 | \n",
181 | " 33.799999 | \n",
182 | " 121100 | \n",
183 | " 0 | \n",
184 | " 0 | \n",
185 | "
\n",
186 | " \n",
187 | " 2021-01-22 15:40:00-03:00 | \n",
188 | " 33.810001 | \n",
189 | " 33.869999 | \n",
190 | " 33.740002 | \n",
191 | " 33.830002 | \n",
192 | " 80100 | \n",
193 | " 0 | \n",
194 | " 0 | \n",
195 | "
\n",
196 | " \n",
197 | " 2021-01-22 15:45:00-03:00 | \n",
198 | " 33.849998 | \n",
199 | " 33.860001 | \n",
200 | " 33.650002 | \n",
201 | " 33.650002 | \n",
202 | " 98400 | \n",
203 | " 0 | \n",
204 | " 0 | \n",
205 | "
\n",
206 | " \n",
207 | " 2021-01-22 15:50:00-03:00 | \n",
208 | " 33.650002 | \n",
209 | " 33.779999 | \n",
210 | " 33.650002 | \n",
211 | " 33.720001 | \n",
212 | " 61300 | \n",
213 | " 0 | \n",
214 | " 0 | \n",
215 | "
\n",
216 | " \n",
217 | " 2021-01-22 15:55:00-03:00 | \n",
218 | " 33.730000 | \n",
219 | " 33.900002 | \n",
220 | " 33.700001 | \n",
221 | " 33.740002 | \n",
222 | " 226300 | \n",
223 | " 0 | \n",
224 | " 0 | \n",
225 | "
\n",
226 | " \n",
227 | "
\n",
228 | "
141 rows × 7 columns
\n",
229 | "
"
230 | ],
231 | "text/plain": [
232 | " Open High Low Close Volume \\\n",
233 | "Datetime \n",
234 | "2021-01-21 10:05:00-03:00 33.660000 34.150002 33.660000 34.150002 0 \n",
235 | "2021-01-21 10:10:00-03:00 34.110001 34.599998 34.070000 34.150002 701900 \n",
236 | "2021-01-21 10:15:00-03:00 34.180000 34.490002 34.150002 34.490002 494200 \n",
237 | "2021-01-21 10:20:00-03:00 34.490002 34.930000 34.410000 34.860001 721500 \n",
238 | "2021-01-21 10:25:00-03:00 34.830002 34.900002 34.330002 34.490002 835800 \n",
239 | "... ... ... ... ... ... \n",
240 | "2021-01-22 15:35:00-03:00 33.680000 33.840000 33.669998 33.799999 121100 \n",
241 | "2021-01-22 15:40:00-03:00 33.810001 33.869999 33.740002 33.830002 80100 \n",
242 | "2021-01-22 15:45:00-03:00 33.849998 33.860001 33.650002 33.650002 98400 \n",
243 | "2021-01-22 15:50:00-03:00 33.650002 33.779999 33.650002 33.720001 61300 \n",
244 | "2021-01-22 15:55:00-03:00 33.730000 33.900002 33.700001 33.740002 226300 \n",
245 | "\n",
246 | " Dividends Stock Splits \n",
247 | "Datetime \n",
248 | "2021-01-21 10:05:00-03:00 0 0 \n",
249 | "2021-01-21 10:10:00-03:00 0 0 \n",
250 | "2021-01-21 10:15:00-03:00 0 0 \n",
251 | "2021-01-21 10:20:00-03:00 0 0 \n",
252 | "2021-01-21 10:25:00-03:00 0 0 \n",
253 | "... ... ... \n",
254 | "2021-01-22 15:35:00-03:00 0 0 \n",
255 | "2021-01-22 15:40:00-03:00 0 0 \n",
256 | "2021-01-22 15:45:00-03:00 0 0 \n",
257 | "2021-01-22 15:50:00-03:00 0 0 \n",
258 | "2021-01-22 15:55:00-03:00 0 0 \n",
259 | "\n",
260 | "[141 rows x 7 columns]"
261 | ]
262 | },
263 | "execution_count": 91,
264 | "metadata": {},
265 | "output_type": "execute_result"
266 | }
267 | ],
268 | "source": [
269 | "df"
270 | ]
271 | },
272 | {
273 | "cell_type": "markdown",
274 | "metadata": {},
275 | "source": [
276 | "### Agora vamos para a formula do pivot point\n",
277 | "Fonte:\n",
278 | "https://www.mql5.com/pt/code/95\n",
279 | "\n",
280 | "Resistência 3 = High + 2*(Pivot - Low)\n",
281 | "\n",
282 | "Resistência 2 = Pivot + (R1 - S1)\n",
283 | "\n",
284 | "Resistência 1 = 2 * Pivot - Low\n",
285 | "\n",
286 | "Pontos Pivô = ( High + Close + Low )/3\n",
287 | "\n",
288 | "Suporte 1 = 2 * Pivot - High\n",
289 | "\n",
290 | "Suporte 2 = Pivot - (R1 - S1)\n",
291 | "\n",
292 | "Suporte 3 = Low - 2*(High - Pivot)\n"
293 | ]
294 | },
295 | {
296 | "cell_type": "code",
297 | "execution_count": 92,
298 | "metadata": {},
299 | "outputs": [],
300 | "source": [
301 | "df['Pivot'] = (df['High'] + df['Low'] + df['Close'])/3\n",
302 | "df['R1'] = 2*df['Pivot'] - df['Low']\n",
303 | "df['S1'] = 2*df['Pivot'] - df['High']\n",
304 | "df['R2'] = df['Pivot'] + (df['High'] - df['Low'])\n",
305 | "df['S2'] = df['Pivot'] - (df['High'] - df['Low'])\n",
306 | "df['R3'] = df['Pivot'] + 2*(df['High'] - df['Low'])\n",
307 | "df['S3'] = df['Pivot'] - 2*(df['High'] - df['Low'])\n"
308 | ]
309 | },
310 | {
311 | "cell_type": "code",
312 | "execution_count": 93,
313 | "metadata": {},
314 | "outputs": [],
315 | "source": [
316 | "#exportar data frame\n",
317 | "#df.to_excel('csna3.xlsx')"
318 | ]
319 | },
320 | {
321 | "cell_type": "markdown",
322 | "metadata": {},
323 | "source": [
324 | "### Generalizando para todos os daods\n"
325 | ]
326 | },
327 | {
328 | "cell_type": "code",
329 | "execution_count": 94,
330 | "metadata": {},
331 | "outputs": [],
332 | "source": [
333 | "#Codigo para exclução de colunas \n",
334 | "#df =df.drop(columns=[('')])"
335 | ]
336 | },
337 | {
338 | "cell_type": "code",
339 | "execution_count": 95,
340 | "metadata": {},
341 | "outputs": [
342 | {
343 | "data": {
344 | "text/html": [
345 | "\n",
346 | "\n",
359 | "
\n",
360 | " \n",
361 | " \n",
362 | " | \n",
363 | " Open | \n",
364 | " High | \n",
365 | " Low | \n",
366 | " Close | \n",
367 | " Volume | \n",
368 | " Dividends | \n",
369 | " Stock Splits | \n",
370 | " Pivot | \n",
371 | " R1 | \n",
372 | " S1 | \n",
373 | " R2 | \n",
374 | " S2 | \n",
375 | " R3 | \n",
376 | " S3 | \n",
377 | "
\n",
378 | " \n",
379 | " Datetime | \n",
380 | " | \n",
381 | " | \n",
382 | " | \n",
383 | " | \n",
384 | " | \n",
385 | " | \n",
386 | " | \n",
387 | " | \n",
388 | " | \n",
389 | " | \n",
390 | " | \n",
391 | " | \n",
392 | " | \n",
393 | " | \n",
394 | "
\n",
395 | " \n",
396 | " \n",
397 | " \n",
398 | " 2021-01-22 15:35:00-03:00 | \n",
399 | " 33.680000 | \n",
400 | " 33.840000 | \n",
401 | " 33.669998 | \n",
402 | " 33.799999 | \n",
403 | " 121100 | \n",
404 | " 0 | \n",
405 | " 0 | \n",
406 | " 33.769999 | \n",
407 | " 33.870000 | \n",
408 | " 33.699998 | \n",
409 | " 33.940001 | \n",
410 | " 33.599997 | \n",
411 | " 34.110003 | \n",
412 | " 33.429995 | \n",
413 | "
\n",
414 | " \n",
415 | " 2021-01-22 15:40:00-03:00 | \n",
416 | " 33.810001 | \n",
417 | " 33.869999 | \n",
418 | " 33.740002 | \n",
419 | " 33.830002 | \n",
420 | " 80100 | \n",
421 | " 0 | \n",
422 | " 0 | \n",
423 | " 33.813334 | \n",
424 | " 33.886667 | \n",
425 | " 33.756669 | \n",
426 | " 33.943331 | \n",
427 | " 33.683337 | \n",
428 | " 34.073329 | \n",
429 | " 33.553340 | \n",
430 | "
\n",
431 | " \n",
432 | " 2021-01-22 15:45:00-03:00 | \n",
433 | " 33.849998 | \n",
434 | " 33.860001 | \n",
435 | " 33.650002 | \n",
436 | " 33.650002 | \n",
437 | " 98400 | \n",
438 | " 0 | \n",
439 | " 0 | \n",
440 | " 33.720001 | \n",
441 | " 33.790001 | \n",
442 | " 33.580002 | \n",
443 | " 33.930000 | \n",
444 | " 33.510002 | \n",
445 | " 34.139999 | \n",
446 | " 33.300003 | \n",
447 | "
\n",
448 | " \n",
449 | " 2021-01-22 15:50:00-03:00 | \n",
450 | " 33.650002 | \n",
451 | " 33.779999 | \n",
452 | " 33.650002 | \n",
453 | " 33.720001 | \n",
454 | " 61300 | \n",
455 | " 0 | \n",
456 | " 0 | \n",
457 | " 33.716667 | \n",
458 | " 33.783333 | \n",
459 | " 33.653336 | \n",
460 | " 33.846664 | \n",
461 | " 33.586670 | \n",
462 | " 33.976662 | \n",
463 | " 33.456673 | \n",
464 | "
\n",
465 | " \n",
466 | " 2021-01-22 15:55:00-03:00 | \n",
467 | " 33.730000 | \n",
468 | " 33.900002 | \n",
469 | " 33.700001 | \n",
470 | " 33.740002 | \n",
471 | " 226300 | \n",
472 | " 0 | \n",
473 | " 0 | \n",
474 | " 33.780001 | \n",
475 | " 33.860002 | \n",
476 | " 33.660001 | \n",
477 | " 33.980002 | \n",
478 | " 33.580001 | \n",
479 | " 34.180003 | \n",
480 | " 33.380000 | \n",
481 | "
\n",
482 | " \n",
483 | "
\n",
484 | "
"
485 | ],
486 | "text/plain": [
487 | " Open High Low Close Volume \\\n",
488 | "Datetime \n",
489 | "2021-01-22 15:35:00-03:00 33.680000 33.840000 33.669998 33.799999 121100 \n",
490 | "2021-01-22 15:40:00-03:00 33.810001 33.869999 33.740002 33.830002 80100 \n",
491 | "2021-01-22 15:45:00-03:00 33.849998 33.860001 33.650002 33.650002 98400 \n",
492 | "2021-01-22 15:50:00-03:00 33.650002 33.779999 33.650002 33.720001 61300 \n",
493 | "2021-01-22 15:55:00-03:00 33.730000 33.900002 33.700001 33.740002 226300 \n",
494 | "\n",
495 | " Dividends Stock Splits Pivot R1 \\\n",
496 | "Datetime \n",
497 | "2021-01-22 15:35:00-03:00 0 0 33.769999 33.870000 \n",
498 | "2021-01-22 15:40:00-03:00 0 0 33.813334 33.886667 \n",
499 | "2021-01-22 15:45:00-03:00 0 0 33.720001 33.790001 \n",
500 | "2021-01-22 15:50:00-03:00 0 0 33.716667 33.783333 \n",
501 | "2021-01-22 15:55:00-03:00 0 0 33.780001 33.860002 \n",
502 | "\n",
503 | " S1 R2 S2 R3 \\\n",
504 | "Datetime \n",
505 | "2021-01-22 15:35:00-03:00 33.699998 33.940001 33.599997 34.110003 \n",
506 | "2021-01-22 15:40:00-03:00 33.756669 33.943331 33.683337 34.073329 \n",
507 | "2021-01-22 15:45:00-03:00 33.580002 33.930000 33.510002 34.139999 \n",
508 | "2021-01-22 15:50:00-03:00 33.653336 33.846664 33.586670 33.976662 \n",
509 | "2021-01-22 15:55:00-03:00 33.660001 33.980002 33.580001 34.180003 \n",
510 | "\n",
511 | " S3 \n",
512 | "Datetime \n",
513 | "2021-01-22 15:35:00-03:00 33.429995 \n",
514 | "2021-01-22 15:40:00-03:00 33.553340 \n",
515 | "2021-01-22 15:45:00-03:00 33.300003 \n",
516 | "2021-01-22 15:50:00-03:00 33.456673 \n",
517 | "2021-01-22 15:55:00-03:00 33.380000 "
518 | ]
519 | },
520 | "execution_count": 95,
521 | "metadata": {},
522 | "output_type": "execute_result"
523 | }
524 | ],
525 | "source": [
526 | "#visualizando DF\n",
527 | "df.tail()"
528 | ]
529 | },
530 | {
531 | "cell_type": "code",
532 | "execution_count": 96,
533 | "metadata": {},
534 | "outputs": [],
535 | "source": [
536 | "#criando colulas vazias no data frema\n",
537 | "df['Compra pivot'],df['Venda S1'],df['Acumulado'] = 'NaN','NaN','NaN'"
538 | ]
539 | },
540 | {
541 | "cell_type": "code",
542 | "execution_count": 97,
543 | "metadata": {},
544 | "outputs": [],
545 | "source": [
546 | "#copiando dataframe para poder fazer os calculos\n",
547 | "#dfcalc = df.copy()"
548 | ]
549 | },
550 | {
551 | "cell_type": "code",
552 | "execution_count": 98,
553 | "metadata": {},
554 | "outputs": [],
555 | "source": [
556 | "#excluindo primeira linha do df para poder usar como inicio o comparador do outro df calc vou excluir apenas com um filtro\n",
557 | "#df = df.loc[df.index > '2020-01-02']"
558 | ]
559 | },
560 | {
561 | "cell_type": "code",
562 | "execution_count": 99,
563 | "metadata": {},
564 | "outputs": [
565 | {
566 | "data": {
567 | "text/html": [
568 | "\n",
569 | "\n",
582 | "
\n",
583 | " \n",
584 | " \n",
585 | " | \n",
586 | " Open | \n",
587 | " High | \n",
588 | " Low | \n",
589 | " Close | \n",
590 | " Volume | \n",
591 | " Dividends | \n",
592 | " Stock Splits | \n",
593 | " Pivot | \n",
594 | " R1 | \n",
595 | " S1 | \n",
596 | " R2 | \n",
597 | " S2 | \n",
598 | " R3 | \n",
599 | " S3 | \n",
600 | " Compra pivot | \n",
601 | " Venda S1 | \n",
602 | " Acumulado | \n",
603 | "
\n",
604 | " \n",
605 | " Datetime | \n",
606 | " | \n",
607 | " | \n",
608 | " | \n",
609 | " | \n",
610 | " | \n",
611 | " | \n",
612 | " | \n",
613 | " | \n",
614 | " | \n",
615 | " | \n",
616 | " | \n",
617 | " | \n",
618 | " | \n",
619 | " | \n",
620 | " | \n",
621 | " | \n",
622 | " | \n",
623 | "
\n",
624 | " \n",
625 | " \n",
626 | " \n",
627 | " 2021-01-21 10:05:00-03:00 | \n",
628 | " 33.660000 | \n",
629 | " 34.150002 | \n",
630 | " 33.660000 | \n",
631 | " 34.150002 | \n",
632 | " 0 | \n",
633 | " 0 | \n",
634 | " 0 | \n",
635 | " 33.986668 | \n",
636 | " 34.313335 | \n",
637 | " 33.823334 | \n",
638 | " 34.476669 | \n",
639 | " 33.496666 | \n",
640 | " 34.966671 | \n",
641 | " 33.006664 | \n",
642 | " NaN | \n",
643 | " NaN | \n",
644 | " NaN | \n",
645 | "
\n",
646 | " \n",
647 | " 2021-01-21 10:10:00-03:00 | \n",
648 | " 34.110001 | \n",
649 | " 34.599998 | \n",
650 | " 34.070000 | \n",
651 | " 34.150002 | \n",
652 | " 701900 | \n",
653 | " 0 | \n",
654 | " 0 | \n",
655 | " 34.273333 | \n",
656 | " 34.476667 | \n",
657 | " 33.946668 | \n",
658 | " 34.803332 | \n",
659 | " 33.743334 | \n",
660 | " 35.333331 | \n",
661 | " 33.213336 | \n",
662 | " NaN | \n",
663 | " NaN | \n",
664 | " NaN | \n",
665 | "
\n",
666 | " \n",
667 | " 2021-01-21 10:15:00-03:00 | \n",
668 | " 34.180000 | \n",
669 | " 34.490002 | \n",
670 | " 34.150002 | \n",
671 | " 34.490002 | \n",
672 | " 494200 | \n",
673 | " 0 | \n",
674 | " 0 | \n",
675 | " 34.376668 | \n",
676 | " 34.603335 | \n",
677 | " 34.263335 | \n",
678 | " 34.716668 | \n",
679 | " 34.036668 | \n",
680 | " 35.056669 | \n",
681 | " 33.696668 | \n",
682 | " NaN | \n",
683 | " NaN | \n",
684 | " NaN | \n",
685 | "
\n",
686 | " \n",
687 | " 2021-01-21 10:20:00-03:00 | \n",
688 | " 34.490002 | \n",
689 | " 34.930000 | \n",
690 | " 34.410000 | \n",
691 | " 34.860001 | \n",
692 | " 721500 | \n",
693 | " 0 | \n",
694 | " 0 | \n",
695 | " 34.733334 | \n",
696 | " 35.056667 | \n",
697 | " 34.536667 | \n",
698 | " 35.253334 | \n",
699 | " 34.213333 | \n",
700 | " 35.773335 | \n",
701 | " 33.693333 | \n",
702 | " NaN | \n",
703 | " NaN | \n",
704 | " NaN | \n",
705 | "
\n",
706 | " \n",
707 | " 2021-01-21 10:25:00-03:00 | \n",
708 | " 34.830002 | \n",
709 | " 34.900002 | \n",
710 | " 34.330002 | \n",
711 | " 34.490002 | \n",
712 | " 835800 | \n",
713 | " 0 | \n",
714 | " 0 | \n",
715 | " 34.573335 | \n",
716 | " 34.816668 | \n",
717 | " 34.246668 | \n",
718 | " 35.143335 | \n",
719 | " 34.003335 | \n",
720 | " 35.713334 | \n",
721 | " 33.433336 | \n",
722 | " NaN | \n",
723 | " NaN | \n",
724 | " NaN | \n",
725 | "
\n",
726 | " \n",
727 | " ... | \n",
728 | " ... | \n",
729 | " ... | \n",
730 | " ... | \n",
731 | " ... | \n",
732 | " ... | \n",
733 | " ... | \n",
734 | " ... | \n",
735 | " ... | \n",
736 | " ... | \n",
737 | " ... | \n",
738 | " ... | \n",
739 | " ... | \n",
740 | " ... | \n",
741 | " ... | \n",
742 | " ... | \n",
743 | " ... | \n",
744 | " ... | \n",
745 | "
\n",
746 | " \n",
747 | " 2021-01-22 15:35:00-03:00 | \n",
748 | " 33.680000 | \n",
749 | " 33.840000 | \n",
750 | " 33.669998 | \n",
751 | " 33.799999 | \n",
752 | " 121100 | \n",
753 | " 0 | \n",
754 | " 0 | \n",
755 | " 33.769999 | \n",
756 | " 33.870000 | \n",
757 | " 33.699998 | \n",
758 | " 33.940001 | \n",
759 | " 33.599997 | \n",
760 | " 34.110003 | \n",
761 | " 33.429995 | \n",
762 | " NaN | \n",
763 | " NaN | \n",
764 | " NaN | \n",
765 | "
\n",
766 | " \n",
767 | " 2021-01-22 15:40:00-03:00 | \n",
768 | " 33.810001 | \n",
769 | " 33.869999 | \n",
770 | " 33.740002 | \n",
771 | " 33.830002 | \n",
772 | " 80100 | \n",
773 | " 0 | \n",
774 | " 0 | \n",
775 | " 33.813334 | \n",
776 | " 33.886667 | \n",
777 | " 33.756669 | \n",
778 | " 33.943331 | \n",
779 | " 33.683337 | \n",
780 | " 34.073329 | \n",
781 | " 33.553340 | \n",
782 | " NaN | \n",
783 | " NaN | \n",
784 | " NaN | \n",
785 | "
\n",
786 | " \n",
787 | " 2021-01-22 15:45:00-03:00 | \n",
788 | " 33.849998 | \n",
789 | " 33.860001 | \n",
790 | " 33.650002 | \n",
791 | " 33.650002 | \n",
792 | " 98400 | \n",
793 | " 0 | \n",
794 | " 0 | \n",
795 | " 33.720001 | \n",
796 | " 33.790001 | \n",
797 | " 33.580002 | \n",
798 | " 33.930000 | \n",
799 | " 33.510002 | \n",
800 | " 34.139999 | \n",
801 | " 33.300003 | \n",
802 | " NaN | \n",
803 | " NaN | \n",
804 | " NaN | \n",
805 | "
\n",
806 | " \n",
807 | " 2021-01-22 15:50:00-03:00 | \n",
808 | " 33.650002 | \n",
809 | " 33.779999 | \n",
810 | " 33.650002 | \n",
811 | " 33.720001 | \n",
812 | " 61300 | \n",
813 | " 0 | \n",
814 | " 0 | \n",
815 | " 33.716667 | \n",
816 | " 33.783333 | \n",
817 | " 33.653336 | \n",
818 | " 33.846664 | \n",
819 | " 33.586670 | \n",
820 | " 33.976662 | \n",
821 | " 33.456673 | \n",
822 | " NaN | \n",
823 | " NaN | \n",
824 | " NaN | \n",
825 | "
\n",
826 | " \n",
827 | " 2021-01-22 15:55:00-03:00 | \n",
828 | " 33.730000 | \n",
829 | " 33.900002 | \n",
830 | " 33.700001 | \n",
831 | " 33.740002 | \n",
832 | " 226300 | \n",
833 | " 0 | \n",
834 | " 0 | \n",
835 | " 33.780001 | \n",
836 | " 33.860002 | \n",
837 | " 33.660001 | \n",
838 | " 33.980002 | \n",
839 | " 33.580001 | \n",
840 | " 34.180003 | \n",
841 | " 33.380000 | \n",
842 | " NaN | \n",
843 | " NaN | \n",
844 | " NaN | \n",
845 | "
\n",
846 | " \n",
847 | "
\n",
848 | "
141 rows × 17 columns
\n",
849 | "
"
850 | ],
851 | "text/plain": [
852 | " Open High Low Close Volume \\\n",
853 | "Datetime \n",
854 | "2021-01-21 10:05:00-03:00 33.660000 34.150002 33.660000 34.150002 0 \n",
855 | "2021-01-21 10:10:00-03:00 34.110001 34.599998 34.070000 34.150002 701900 \n",
856 | "2021-01-21 10:15:00-03:00 34.180000 34.490002 34.150002 34.490002 494200 \n",
857 | "2021-01-21 10:20:00-03:00 34.490002 34.930000 34.410000 34.860001 721500 \n",
858 | "2021-01-21 10:25:00-03:00 34.830002 34.900002 34.330002 34.490002 835800 \n",
859 | "... ... ... ... ... ... \n",
860 | "2021-01-22 15:35:00-03:00 33.680000 33.840000 33.669998 33.799999 121100 \n",
861 | "2021-01-22 15:40:00-03:00 33.810001 33.869999 33.740002 33.830002 80100 \n",
862 | "2021-01-22 15:45:00-03:00 33.849998 33.860001 33.650002 33.650002 98400 \n",
863 | "2021-01-22 15:50:00-03:00 33.650002 33.779999 33.650002 33.720001 61300 \n",
864 | "2021-01-22 15:55:00-03:00 33.730000 33.900002 33.700001 33.740002 226300 \n",
865 | "\n",
866 | " Dividends Stock Splits Pivot R1 \\\n",
867 | "Datetime \n",
868 | "2021-01-21 10:05:00-03:00 0 0 33.986668 34.313335 \n",
869 | "2021-01-21 10:10:00-03:00 0 0 34.273333 34.476667 \n",
870 | "2021-01-21 10:15:00-03:00 0 0 34.376668 34.603335 \n",
871 | "2021-01-21 10:20:00-03:00 0 0 34.733334 35.056667 \n",
872 | "2021-01-21 10:25:00-03:00 0 0 34.573335 34.816668 \n",
873 | "... ... ... ... ... \n",
874 | "2021-01-22 15:35:00-03:00 0 0 33.769999 33.870000 \n",
875 | "2021-01-22 15:40:00-03:00 0 0 33.813334 33.886667 \n",
876 | "2021-01-22 15:45:00-03:00 0 0 33.720001 33.790001 \n",
877 | "2021-01-22 15:50:00-03:00 0 0 33.716667 33.783333 \n",
878 | "2021-01-22 15:55:00-03:00 0 0 33.780001 33.860002 \n",
879 | "\n",
880 | " S1 R2 S2 R3 \\\n",
881 | "Datetime \n",
882 | "2021-01-21 10:05:00-03:00 33.823334 34.476669 33.496666 34.966671 \n",
883 | "2021-01-21 10:10:00-03:00 33.946668 34.803332 33.743334 35.333331 \n",
884 | "2021-01-21 10:15:00-03:00 34.263335 34.716668 34.036668 35.056669 \n",
885 | "2021-01-21 10:20:00-03:00 34.536667 35.253334 34.213333 35.773335 \n",
886 | "2021-01-21 10:25:00-03:00 34.246668 35.143335 34.003335 35.713334 \n",
887 | "... ... ... ... ... \n",
888 | "2021-01-22 15:35:00-03:00 33.699998 33.940001 33.599997 34.110003 \n",
889 | "2021-01-22 15:40:00-03:00 33.756669 33.943331 33.683337 34.073329 \n",
890 | "2021-01-22 15:45:00-03:00 33.580002 33.930000 33.510002 34.139999 \n",
891 | "2021-01-22 15:50:00-03:00 33.653336 33.846664 33.586670 33.976662 \n",
892 | "2021-01-22 15:55:00-03:00 33.660001 33.980002 33.580001 34.180003 \n",
893 | "\n",
894 | " S3 Compra pivot Venda S1 Acumulado \n",
895 | "Datetime \n",
896 | "2021-01-21 10:05:00-03:00 33.006664 NaN NaN NaN \n",
897 | "2021-01-21 10:10:00-03:00 33.213336 NaN NaN NaN \n",
898 | "2021-01-21 10:15:00-03:00 33.696668 NaN NaN NaN \n",
899 | "2021-01-21 10:20:00-03:00 33.693333 NaN NaN NaN \n",
900 | "2021-01-21 10:25:00-03:00 33.433336 NaN NaN NaN \n",
901 | "... ... ... ... ... \n",
902 | "2021-01-22 15:35:00-03:00 33.429995 NaN NaN NaN \n",
903 | "2021-01-22 15:40:00-03:00 33.553340 NaN NaN NaN \n",
904 | "2021-01-22 15:45:00-03:00 33.300003 NaN NaN NaN \n",
905 | "2021-01-22 15:50:00-03:00 33.456673 NaN NaN NaN \n",
906 | "2021-01-22 15:55:00-03:00 33.380000 NaN NaN NaN \n",
907 | "\n",
908 | "[141 rows x 17 columns]"
909 | ]
910 | },
911 | "execution_count": 99,
912 | "metadata": {},
913 | "output_type": "execute_result"
914 | }
915 | ],
916 | "source": [
917 | "df"
918 | ]
919 | },
920 | {
921 | "cell_type": "code",
922 | "execution_count": 100,
923 | "metadata": {},
924 | "outputs": [],
925 | "source": [
926 | "#renomedo colunas codigo comentado para nao execultaR\n",
927 | "##dfcalc = dfcalc.rename(columns={'Pivot': 'P-Pivot','S1':'S-S1'})"
928 | ]
929 | },
930 | {
931 | "cell_type": "code",
932 | "execution_count": 101,
933 | "metadata": {},
934 | "outputs": [],
935 | "source": [
936 | "#Criando nova coluna inutil kkkkkkkk\n",
937 | "###df['P-Pivot'] = 'NaN'"
938 | ]
939 | },
940 | {
941 | "cell_type": "code",
942 | "execution_count": null,
943 | "metadata": {},
944 | "outputs": [],
945 | "source": []
946 | },
947 | {
948 | "cell_type": "markdown",
949 | "metadata": {},
950 | "source": [
951 | "## Inicio de teste de loops\n",
952 | "Não execultar linhas abaixos"
953 | ]
954 | },
955 | {
956 | "cell_type": "code",
957 | "execution_count": 102,
958 | "metadata": {},
959 | "outputs": [],
960 | "source": [
961 | "#testes = df['Pivot'][n]/df['Pivot'][n -1]"
962 | ]
963 | },
964 | {
965 | "cell_type": "code",
966 | "execution_count": 103,
967 | "metadata": {},
968 | "outputs": [],
969 | "source": [
970 | "#testes"
971 | ]
972 | },
973 | {
974 | "cell_type": "code",
975 | "execution_count": 104,
976 | "metadata": {},
977 | "outputs": [],
978 | "source": [
979 | "# testa dor de entrada de valor está correto!\n",
980 | "\n",
981 | "#posicao = 4\n",
982 | "#if df['High'][posicao]>df['Pivot'][posicao - 1]:\n",
983 | "# df['Compra pivot'][posicao] = df['Close'][posicao] - df['Pivot'][posicao - 1]\n",
984 | "#else:\n",
985 | "# df['Compra pivot'][posicao] = 0"
986 | ]
987 | },
988 | {
989 | "cell_type": "code",
990 | "execution_count": 105,
991 | "metadata": {},
992 | "outputs": [],
993 | "source": [
994 | "#n = 0\n",
995 | "#while n<7:\n",
996 | "# df['Compra pivot'] = 'NaN';\n",
997 | " # n = n +1;"
998 | ]
999 | },
1000 | {
1001 | "cell_type": "markdown",
1002 | "metadata": {},
1003 | "source": [
1004 | "## Fim de teste de loops\n",
1005 | "tudo abaixo pode ser execultado "
1006 | ]
1007 | },
1008 | {
1009 | "cell_type": "code",
1010 | "execution_count": 106,
1011 | "metadata": {},
1012 | "outputs": [],
1013 | "source": [
1014 | "#criando valores de lucro na entrada comprando no Pivot\n",
1015 | "posicao = 0\n",
1016 | "while posicaodf['Pivot'][posicao - 1]:\n",
1018 | " df['Compra pivot'][posicao] = df['Close'][posicao] - df['Pivot'][posicao - 1]\n",
1019 | " else:\n",
1020 | " df['Compra pivot'][posicao] = 0\n",
1021 | " posicao = posicao +1;\n"
1022 | ]
1023 | },
1024 | {
1025 | "cell_type": "code",
1026 | "execution_count": 107,
1027 | "metadata": {},
1028 | "outputs": [],
1029 | "source": [
1030 | "#criando valores de lucro na entrada vendido na Primeiro Suporte\n",
1031 | "posicao = 0\n",
1032 | "while posicao\n",
1060 | "\n",
1073 | "\n",
1074 | " \n",
1075 | " \n",
1076 | " | \n",
1077 | " Open | \n",
1078 | " High | \n",
1079 | " Low | \n",
1080 | " Close | \n",
1081 | " Volume | \n",
1082 | " Dividends | \n",
1083 | " Stock Splits | \n",
1084 | " Pivot | \n",
1085 | " R1 | \n",
1086 | " S1 | \n",
1087 | " R2 | \n",
1088 | " S2 | \n",
1089 | " R3 | \n",
1090 | " S3 | \n",
1091 | " Compra pivot | \n",
1092 | " Venda S1 | \n",
1093 | " Acumulado | \n",
1094 | "
\n",
1095 | " \n",
1096 | " Datetime | \n",
1097 | " | \n",
1098 | " | \n",
1099 | " | \n",
1100 | " | \n",
1101 | " | \n",
1102 | " | \n",
1103 | " | \n",
1104 | " | \n",
1105 | " | \n",
1106 | " | \n",
1107 | " | \n",
1108 | " | \n",
1109 | " | \n",
1110 | " | \n",
1111 | " | \n",
1112 | " | \n",
1113 | " | \n",
1114 | "
\n",
1115 | " \n",
1116 | " \n",
1117 | " \n",
1118 | " 2021-01-22 15:35:00-03:00 | \n",
1119 | " 33.680000 | \n",
1120 | " 33.840000 | \n",
1121 | " 33.669998 | \n",
1122 | " 33.799999 | \n",
1123 | " 121100 | \n",
1124 | " 0 | \n",
1125 | " 0 | \n",
1126 | " 33.769999 | \n",
1127 | " 33.870000 | \n",
1128 | " 33.699998 | \n",
1129 | " 33.940001 | \n",
1130 | " 33.599997 | \n",
1131 | " 34.110003 | \n",
1132 | " 33.429995 | \n",
1133 | " 0.146666 | \n",
1134 | " 0 | \n",
1135 | " 14.6666 | \n",
1136 | "
\n",
1137 | " \n",
1138 | " 2021-01-22 15:40:00-03:00 | \n",
1139 | " 33.810001 | \n",
1140 | " 33.869999 | \n",
1141 | " 33.740002 | \n",
1142 | " 33.830002 | \n",
1143 | " 80100 | \n",
1144 | " 0 | \n",
1145 | " 0 | \n",
1146 | " 33.813334 | \n",
1147 | " 33.886667 | \n",
1148 | " 33.756669 | \n",
1149 | " 33.943331 | \n",
1150 | " 33.683337 | \n",
1151 | " 34.073329 | \n",
1152 | " 33.553340 | \n",
1153 | " 0.0600026 | \n",
1154 | " 0 | \n",
1155 | " 6.00026 | \n",
1156 | "
\n",
1157 | " \n",
1158 | " 2021-01-22 15:45:00-03:00 | \n",
1159 | " 33.849998 | \n",
1160 | " 33.860001 | \n",
1161 | " 33.650002 | \n",
1162 | " 33.650002 | \n",
1163 | " 98400 | \n",
1164 | " 0 | \n",
1165 | " 0 | \n",
1166 | " 33.720001 | \n",
1167 | " 33.790001 | \n",
1168 | " 33.580002 | \n",
1169 | " 33.930000 | \n",
1170 | " 33.510002 | \n",
1171 | " 34.139999 | \n",
1172 | " 33.300003 | \n",
1173 | " -0.163333 | \n",
1174 | " 0.106668 | \n",
1175 | " -5.66648 | \n",
1176 | "
\n",
1177 | " \n",
1178 | " 2021-01-22 15:50:00-03:00 | \n",
1179 | " 33.650002 | \n",
1180 | " 33.779999 | \n",
1181 | " 33.650002 | \n",
1182 | " 33.720001 | \n",
1183 | " 61300 | \n",
1184 | " 0 | \n",
1185 | " 0 | \n",
1186 | " 33.716667 | \n",
1187 | " 33.783333 | \n",
1188 | " 33.653336 | \n",
1189 | " 33.846664 | \n",
1190 | " 33.586670 | \n",
1191 | " 33.976662 | \n",
1192 | " 33.456673 | \n",
1193 | " 0 | \n",
1194 | " 0 | \n",
1195 | " 0 | \n",
1196 | "
\n",
1197 | " \n",
1198 | " 2021-01-22 15:55:00-03:00 | \n",
1199 | " 33.730000 | \n",
1200 | " 33.900002 | \n",
1201 | " 33.700001 | \n",
1202 | " 33.740002 | \n",
1203 | " 226300 | \n",
1204 | " 0 | \n",
1205 | " 0 | \n",
1206 | " 33.780001 | \n",
1207 | " 33.860002 | \n",
1208 | " 33.660001 | \n",
1209 | " 33.980002 | \n",
1210 | " 33.580001 | \n",
1211 | " 34.180003 | \n",
1212 | " 33.380000 | \n",
1213 | " 0.0233345 | \n",
1214 | " 0 | \n",
1215 | " 2.33345 | \n",
1216 | "
\n",
1217 | " \n",
1218 | "
\n",
1219 | ""
1220 | ],
1221 | "text/plain": [
1222 | " Open High Low Close Volume \\\n",
1223 | "Datetime \n",
1224 | "2021-01-22 15:35:00-03:00 33.680000 33.840000 33.669998 33.799999 121100 \n",
1225 | "2021-01-22 15:40:00-03:00 33.810001 33.869999 33.740002 33.830002 80100 \n",
1226 | "2021-01-22 15:45:00-03:00 33.849998 33.860001 33.650002 33.650002 98400 \n",
1227 | "2021-01-22 15:50:00-03:00 33.650002 33.779999 33.650002 33.720001 61300 \n",
1228 | "2021-01-22 15:55:00-03:00 33.730000 33.900002 33.700001 33.740002 226300 \n",
1229 | "\n",
1230 | " Dividends Stock Splits Pivot R1 \\\n",
1231 | "Datetime \n",
1232 | "2021-01-22 15:35:00-03:00 0 0 33.769999 33.870000 \n",
1233 | "2021-01-22 15:40:00-03:00 0 0 33.813334 33.886667 \n",
1234 | "2021-01-22 15:45:00-03:00 0 0 33.720001 33.790001 \n",
1235 | "2021-01-22 15:50:00-03:00 0 0 33.716667 33.783333 \n",
1236 | "2021-01-22 15:55:00-03:00 0 0 33.780001 33.860002 \n",
1237 | "\n",
1238 | " S1 R2 S2 R3 \\\n",
1239 | "Datetime \n",
1240 | "2021-01-22 15:35:00-03:00 33.699998 33.940001 33.599997 34.110003 \n",
1241 | "2021-01-22 15:40:00-03:00 33.756669 33.943331 33.683337 34.073329 \n",
1242 | "2021-01-22 15:45:00-03:00 33.580002 33.930000 33.510002 34.139999 \n",
1243 | "2021-01-22 15:50:00-03:00 33.653336 33.846664 33.586670 33.976662 \n",
1244 | "2021-01-22 15:55:00-03:00 33.660001 33.980002 33.580001 34.180003 \n",
1245 | "\n",
1246 | " S3 Compra pivot Venda S1 Acumulado \n",
1247 | "Datetime \n",
1248 | "2021-01-22 15:35:00-03:00 33.429995 0.146666 0 14.6666 \n",
1249 | "2021-01-22 15:40:00-03:00 33.553340 0.0600026 0 6.00026 \n",
1250 | "2021-01-22 15:45:00-03:00 33.300003 -0.163333 0.106668 -5.66648 \n",
1251 | "2021-01-22 15:50:00-03:00 33.456673 0 0 0 \n",
1252 | "2021-01-22 15:55:00-03:00 33.380000 0.0233345 0 2.33345 "
1253 | ]
1254 | },
1255 | "execution_count": 109,
1256 | "metadata": {},
1257 | "output_type": "execute_result"
1258 | }
1259 | ],
1260 | "source": [
1261 | "df.tail()"
1262 | ]
1263 | },
1264 | {
1265 | "cell_type": "code",
1266 | "execution_count": 110,
1267 | "metadata": {},
1268 | "outputs": [],
1269 | "source": [
1270 | "#excluindo primeira linha do df usar como inicio do comparador - SE NAO VC TEM UM ENTRADA COM O PARAMENTRO DO ULTIMO DIA\n",
1271 | "# E ISSO IRIA MUDAR O VALOR NA SOMATORIA TOTAL\n",
1272 | "df = df.loc[df.index > '2020-10-20 10:10:00']"
1273 | ]
1274 | },
1275 | {
1276 | "cell_type": "code",
1277 | "execution_count": 111,
1278 | "metadata": {},
1279 | "outputs": [
1280 | {
1281 | "data": {
1282 | "text/html": [
1283 | "\n",
1284 | "\n",
1297 | "
\n",
1298 | " \n",
1299 | " \n",
1300 | " | \n",
1301 | " Open | \n",
1302 | " High | \n",
1303 | " Low | \n",
1304 | " Close | \n",
1305 | " Volume | \n",
1306 | " Dividends | \n",
1307 | " Stock Splits | \n",
1308 | " Pivot | \n",
1309 | " R1 | \n",
1310 | " S1 | \n",
1311 | " R2 | \n",
1312 | " S2 | \n",
1313 | " R3 | \n",
1314 | " S3 | \n",
1315 | " Compra pivot | \n",
1316 | " Venda S1 | \n",
1317 | " Acumulado | \n",
1318 | "
\n",
1319 | " \n",
1320 | " Datetime | \n",
1321 | " | \n",
1322 | " | \n",
1323 | " | \n",
1324 | " | \n",
1325 | " | \n",
1326 | " | \n",
1327 | " | \n",
1328 | " | \n",
1329 | " | \n",
1330 | " | \n",
1331 | " | \n",
1332 | " | \n",
1333 | " | \n",
1334 | " | \n",
1335 | " | \n",
1336 | " | \n",
1337 | " | \n",
1338 | "
\n",
1339 | " \n",
1340 | " \n",
1341 | " \n",
1342 | " 2021-01-21 10:05:00-03:00 | \n",
1343 | " 33.660000 | \n",
1344 | " 34.150002 | \n",
1345 | " 33.660000 | \n",
1346 | " 34.150002 | \n",
1347 | " 0 | \n",
1348 | " 0 | \n",
1349 | " 0 | \n",
1350 | " 33.986668 | \n",
1351 | " 34.313335 | \n",
1352 | " 33.823334 | \n",
1353 | " 34.476669 | \n",
1354 | " 33.496666 | \n",
1355 | " 34.966671 | \n",
1356 | " 33.006664 | \n",
1357 | " 0.37 | \n",
1358 | " -0.49 | \n",
1359 | " -12 | \n",
1360 | "
\n",
1361 | " \n",
1362 | " 2021-01-21 10:10:00-03:00 | \n",
1363 | " 34.110001 | \n",
1364 | " 34.599998 | \n",
1365 | " 34.070000 | \n",
1366 | " 34.150002 | \n",
1367 | " 701900 | \n",
1368 | " 0 | \n",
1369 | " 0 | \n",
1370 | " 34.273333 | \n",
1371 | " 34.476667 | \n",
1372 | " 33.946668 | \n",
1373 | " 34.803332 | \n",
1374 | " 33.743334 | \n",
1375 | " 35.333331 | \n",
1376 | " 33.213336 | \n",
1377 | " 0.163334 | \n",
1378 | " 0 | \n",
1379 | " 16.3334 | \n",
1380 | "
\n",
1381 | " \n",
1382 | " 2021-01-21 10:15:00-03:00 | \n",
1383 | " 34.180000 | \n",
1384 | " 34.490002 | \n",
1385 | " 34.150002 | \n",
1386 | " 34.490002 | \n",
1387 | " 494200 | \n",
1388 | " 0 | \n",
1389 | " 0 | \n",
1390 | " 34.376668 | \n",
1391 | " 34.603335 | \n",
1392 | " 34.263335 | \n",
1393 | " 34.716668 | \n",
1394 | " 34.036668 | \n",
1395 | " 35.056669 | \n",
1396 | " 33.696668 | \n",
1397 | " 0.216668 | \n",
1398 | " 0 | \n",
1399 | " 21.6668 | \n",
1400 | "
\n",
1401 | " \n",
1402 | " 2021-01-21 10:20:00-03:00 | \n",
1403 | " 34.490002 | \n",
1404 | " 34.930000 | \n",
1405 | " 34.410000 | \n",
1406 | " 34.860001 | \n",
1407 | " 721500 | \n",
1408 | " 0 | \n",
1409 | " 0 | \n",
1410 | " 34.733334 | \n",
1411 | " 35.056667 | \n",
1412 | " 34.536667 | \n",
1413 | " 35.253334 | \n",
1414 | " 34.213333 | \n",
1415 | " 35.773335 | \n",
1416 | " 33.693333 | \n",
1417 | " 0.483332 | \n",
1418 | " 0 | \n",
1419 | " 48.3332 | \n",
1420 | "
\n",
1421 | " \n",
1422 | " 2021-01-21 10:25:00-03:00 | \n",
1423 | " 34.830002 | \n",
1424 | " 34.900002 | \n",
1425 | " 34.330002 | \n",
1426 | " 34.490002 | \n",
1427 | " 835800 | \n",
1428 | " 0 | \n",
1429 | " 0 | \n",
1430 | " 34.573335 | \n",
1431 | " 34.816668 | \n",
1432 | " 34.246668 | \n",
1433 | " 35.143335 | \n",
1434 | " 34.003335 | \n",
1435 | " 35.713334 | \n",
1436 | " 33.433336 | \n",
1437 | " -0.243332 | \n",
1438 | " 0.0466652 | \n",
1439 | " -19.6667 | \n",
1440 | "
\n",
1441 | " \n",
1442 | " ... | \n",
1443 | " ... | \n",
1444 | " ... | \n",
1445 | " ... | \n",
1446 | " ... | \n",
1447 | " ... | \n",
1448 | " ... | \n",
1449 | " ... | \n",
1450 | " ... | \n",
1451 | " ... | \n",
1452 | " ... | \n",
1453 | " ... | \n",
1454 | " ... | \n",
1455 | " ... | \n",
1456 | " ... | \n",
1457 | " ... | \n",
1458 | " ... | \n",
1459 | " ... | \n",
1460 | "
\n",
1461 | " \n",
1462 | " 2021-01-22 15:35:00-03:00 | \n",
1463 | " 33.680000 | \n",
1464 | " 33.840000 | \n",
1465 | " 33.669998 | \n",
1466 | " 33.799999 | \n",
1467 | " 121100 | \n",
1468 | " 0 | \n",
1469 | " 0 | \n",
1470 | " 33.769999 | \n",
1471 | " 33.870000 | \n",
1472 | " 33.699998 | \n",
1473 | " 33.940001 | \n",
1474 | " 33.599997 | \n",
1475 | " 34.110003 | \n",
1476 | " 33.429995 | \n",
1477 | " 0.146666 | \n",
1478 | " 0 | \n",
1479 | " 14.6666 | \n",
1480 | "
\n",
1481 | " \n",
1482 | " 2021-01-22 15:40:00-03:00 | \n",
1483 | " 33.810001 | \n",
1484 | " 33.869999 | \n",
1485 | " 33.740002 | \n",
1486 | " 33.830002 | \n",
1487 | " 80100 | \n",
1488 | " 0 | \n",
1489 | " 0 | \n",
1490 | " 33.813334 | \n",
1491 | " 33.886667 | \n",
1492 | " 33.756669 | \n",
1493 | " 33.943331 | \n",
1494 | " 33.683337 | \n",
1495 | " 34.073329 | \n",
1496 | " 33.553340 | \n",
1497 | " 0.0600026 | \n",
1498 | " 0 | \n",
1499 | " 6.00026 | \n",
1500 | "
\n",
1501 | " \n",
1502 | " 2021-01-22 15:45:00-03:00 | \n",
1503 | " 33.849998 | \n",
1504 | " 33.860001 | \n",
1505 | " 33.650002 | \n",
1506 | " 33.650002 | \n",
1507 | " 98400 | \n",
1508 | " 0 | \n",
1509 | " 0 | \n",
1510 | " 33.720001 | \n",
1511 | " 33.790001 | \n",
1512 | " 33.580002 | \n",
1513 | " 33.930000 | \n",
1514 | " 33.510002 | \n",
1515 | " 34.139999 | \n",
1516 | " 33.300003 | \n",
1517 | " -0.163333 | \n",
1518 | " 0.106668 | \n",
1519 | " -5.66648 | \n",
1520 | "
\n",
1521 | " \n",
1522 | " 2021-01-22 15:50:00-03:00 | \n",
1523 | " 33.650002 | \n",
1524 | " 33.779999 | \n",
1525 | " 33.650002 | \n",
1526 | " 33.720001 | \n",
1527 | " 61300 | \n",
1528 | " 0 | \n",
1529 | " 0 | \n",
1530 | " 33.716667 | \n",
1531 | " 33.783333 | \n",
1532 | " 33.653336 | \n",
1533 | " 33.846664 | \n",
1534 | " 33.586670 | \n",
1535 | " 33.976662 | \n",
1536 | " 33.456673 | \n",
1537 | " 0 | \n",
1538 | " 0 | \n",
1539 | " 0 | \n",
1540 | "
\n",
1541 | " \n",
1542 | " 2021-01-22 15:55:00-03:00 | \n",
1543 | " 33.730000 | \n",
1544 | " 33.900002 | \n",
1545 | " 33.700001 | \n",
1546 | " 33.740002 | \n",
1547 | " 226300 | \n",
1548 | " 0 | \n",
1549 | " 0 | \n",
1550 | " 33.780001 | \n",
1551 | " 33.860002 | \n",
1552 | " 33.660001 | \n",
1553 | " 33.980002 | \n",
1554 | " 33.580001 | \n",
1555 | " 34.180003 | \n",
1556 | " 33.380000 | \n",
1557 | " 0.0233345 | \n",
1558 | " 0 | \n",
1559 | " 2.33345 | \n",
1560 | "
\n",
1561 | " \n",
1562 | "
\n",
1563 | "
141 rows × 17 columns
\n",
1564 | "
"
1565 | ],
1566 | "text/plain": [
1567 | " Open High Low Close Volume \\\n",
1568 | "Datetime \n",
1569 | "2021-01-21 10:05:00-03:00 33.660000 34.150002 33.660000 34.150002 0 \n",
1570 | "2021-01-21 10:10:00-03:00 34.110001 34.599998 34.070000 34.150002 701900 \n",
1571 | "2021-01-21 10:15:00-03:00 34.180000 34.490002 34.150002 34.490002 494200 \n",
1572 | "2021-01-21 10:20:00-03:00 34.490002 34.930000 34.410000 34.860001 721500 \n",
1573 | "2021-01-21 10:25:00-03:00 34.830002 34.900002 34.330002 34.490002 835800 \n",
1574 | "... ... ... ... ... ... \n",
1575 | "2021-01-22 15:35:00-03:00 33.680000 33.840000 33.669998 33.799999 121100 \n",
1576 | "2021-01-22 15:40:00-03:00 33.810001 33.869999 33.740002 33.830002 80100 \n",
1577 | "2021-01-22 15:45:00-03:00 33.849998 33.860001 33.650002 33.650002 98400 \n",
1578 | "2021-01-22 15:50:00-03:00 33.650002 33.779999 33.650002 33.720001 61300 \n",
1579 | "2021-01-22 15:55:00-03:00 33.730000 33.900002 33.700001 33.740002 226300 \n",
1580 | "\n",
1581 | " Dividends Stock Splits Pivot R1 \\\n",
1582 | "Datetime \n",
1583 | "2021-01-21 10:05:00-03:00 0 0 33.986668 34.313335 \n",
1584 | "2021-01-21 10:10:00-03:00 0 0 34.273333 34.476667 \n",
1585 | "2021-01-21 10:15:00-03:00 0 0 34.376668 34.603335 \n",
1586 | "2021-01-21 10:20:00-03:00 0 0 34.733334 35.056667 \n",
1587 | "2021-01-21 10:25:00-03:00 0 0 34.573335 34.816668 \n",
1588 | "... ... ... ... ... \n",
1589 | "2021-01-22 15:35:00-03:00 0 0 33.769999 33.870000 \n",
1590 | "2021-01-22 15:40:00-03:00 0 0 33.813334 33.886667 \n",
1591 | "2021-01-22 15:45:00-03:00 0 0 33.720001 33.790001 \n",
1592 | "2021-01-22 15:50:00-03:00 0 0 33.716667 33.783333 \n",
1593 | "2021-01-22 15:55:00-03:00 0 0 33.780001 33.860002 \n",
1594 | "\n",
1595 | " S1 R2 S2 R3 \\\n",
1596 | "Datetime \n",
1597 | "2021-01-21 10:05:00-03:00 33.823334 34.476669 33.496666 34.966671 \n",
1598 | "2021-01-21 10:10:00-03:00 33.946668 34.803332 33.743334 35.333331 \n",
1599 | "2021-01-21 10:15:00-03:00 34.263335 34.716668 34.036668 35.056669 \n",
1600 | "2021-01-21 10:20:00-03:00 34.536667 35.253334 34.213333 35.773335 \n",
1601 | "2021-01-21 10:25:00-03:00 34.246668 35.143335 34.003335 35.713334 \n",
1602 | "... ... ... ... ... \n",
1603 | "2021-01-22 15:35:00-03:00 33.699998 33.940001 33.599997 34.110003 \n",
1604 | "2021-01-22 15:40:00-03:00 33.756669 33.943331 33.683337 34.073329 \n",
1605 | "2021-01-22 15:45:00-03:00 33.580002 33.930000 33.510002 34.139999 \n",
1606 | "2021-01-22 15:50:00-03:00 33.653336 33.846664 33.586670 33.976662 \n",
1607 | "2021-01-22 15:55:00-03:00 33.660001 33.980002 33.580001 34.180003 \n",
1608 | "\n",
1609 | " S3 Compra pivot Venda S1 Acumulado \n",
1610 | "Datetime \n",
1611 | "2021-01-21 10:05:00-03:00 33.006664 0.37 -0.49 -12 \n",
1612 | "2021-01-21 10:10:00-03:00 33.213336 0.163334 0 16.3334 \n",
1613 | "2021-01-21 10:15:00-03:00 33.696668 0.216668 0 21.6668 \n",
1614 | "2021-01-21 10:20:00-03:00 33.693333 0.483332 0 48.3332 \n",
1615 | "2021-01-21 10:25:00-03:00 33.433336 -0.243332 0.0466652 -19.6667 \n",
1616 | "... ... ... ... ... \n",
1617 | "2021-01-22 15:35:00-03:00 33.429995 0.146666 0 14.6666 \n",
1618 | "2021-01-22 15:40:00-03:00 33.553340 0.0600026 0 6.00026 \n",
1619 | "2021-01-22 15:45:00-03:00 33.300003 -0.163333 0.106668 -5.66648 \n",
1620 | "2021-01-22 15:50:00-03:00 33.456673 0 0 0 \n",
1621 | "2021-01-22 15:55:00-03:00 33.380000 0.0233345 0 2.33345 \n",
1622 | "\n",
1623 | "[141 rows x 17 columns]"
1624 | ]
1625 | },
1626 | "execution_count": 111,
1627 | "metadata": {},
1628 | "output_type": "execute_result"
1629 | }
1630 | ],
1631 | "source": [
1632 | "df"
1633 | ]
1634 | },
1635 | {
1636 | "cell_type": "code",
1637 | "execution_count": 112,
1638 | "metadata": {},
1639 | "outputs": [
1640 | {
1641 | "data": {
1642 | "text/plain": [
1643 | ""
1644 | ]
1645 | },
1646 | "execution_count": 112,
1647 | "metadata": {},
1648 | "output_type": "execute_result"
1649 | },
1650 | {
1651 | "data": {
1652 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6wAAAHKCAYAAAAHCcYqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXid91nn//ejfbGWI8uytR7ZjpfYjjcpibM0SZPSPd2gtKUtbQltaQuFa+aa0jILMwwwnQE6A8OvzJQZSoEpIZTSFZqGdKFkl2wn8ZZ402ZJlrXv2znP748jn9ixndjWcrS8X9eVy9ZznuecW1cbW598v9/7DsIwRJIkSZKkxSYt1QVIkiRJknQ5BlZJkiRJ0qJkYJUkSZIkLUoGVkmSJEnSomRglSRJkiQtSgZWSZIkSdKilJHqAl5NaWlpWFtbm+oyJEmSJEnzoLGxsTsMwzWXe23RB9ba2loaGhpSXYYkSZIkaR4EQdB8pdfcEixJkiRJWpQMrJIkSZKkRcnAKkmSJElalAyskiRJkqRFycAqSZIkSVqUZh1YgyBID4LgQBAE35n5uiQIgkeCIDg+82vkgns/FwTBiSAIXgiC4A2z/WxJkiRJ0vI1FyusvwocveDrzwKPhmG4CXh05muCINgGvBfYDrwR+GIQBOlz8PmSJEmSpGVoVoE1CIIq4C3A/7ng8tuBr8z8/ivAOy64/mAYhhNhGJ4GTgC3zObzJUmSJEnL12xXWP8H8BkgfsG1tWEYdgDM/Fo2c70SaL3gvraZa5cIguBjQRA0BEHQcO7cuVmWKEmSJElaiq47sAZB8FagKwzDxqt95DLXwsvdGIbhl8IwrA/DsH7NmjXXW6IkSZIkaQnLmMWzdwBvC4LgzUAOUBgEwV8BZ4MgKA/DsCMIgnKga+b+NqD6guergPZZfL4kSZIkaRm77hXWMAw/F4ZhVRiGtSSaKf0gDMMPAN8CPjRz24eAb878/lvAe4MgyA6CYD2wCXj6uiuXJEmSJC1rs1lhvZLPAw8FQfAA0AK8GyAMw8NBEDwEHAGmgU+FYRibh8+XJEmSJC0DQRhe9hjpolFfXx82NDSkugxJkiRJ0jwIgqAxDMP6y702F3NYJUmSJEmacwZWSZIkSVqinm8bYN/vPsqxzsFUlzIvDKySJEmStET9yY9P0Dk4zv/3w5OpLmVeGFglSZIkaQlq7R3le4c6ieRl8t3n2mnpGb3o9Vg85Ej70l55NbBKkiRJ0hL0F080EQQBX/7ILWSkpfGnPzmVfG1sMsYn/qqRd/3JY5zpH0tdkbNkYJUkSZK07DV1j3DozECqy5gzwxPTPPh0K2++qZzd1cW8a28lDzW0cqR9kONnh/i5//Mkjxw9y2ffuJXK4txUl3vd5mMOqyRJkiQtKp/9+nMcbh/kJ595LcV5WakuZ9a+vr+NoYlpHrhzPQAfu2sDf9PQypv/6CcAZGek8Sfvr+ONO9alssxZM7BKkiRJWtZGJ6dpbO5jKhbyv358is++aWuqS5q1p073UhXJZXd1MQAb1qziq7+4L7n9d1dVEZvWFqSyxDlhYJUkSZK0rD19upepWMj60nz+/PHTfOSOWtYW5qS6rFk51jHItvLCi67dtnF1iqqZP55hlSRJkrSsPXaim6yMNP73B+uYjoX80aPHU13SrIxPxTjdPcLWlwXW5cjAKkmSJGlZe+xED/XRCJvXFvC+W2r4m2daae0dffUHF6njZ4eJh3DjuqW/5ffVGFglSZIkLVs9wxMc6RjkjhtKAfjkazcSBPB//+V0iiu7fkc7ErNVXWGVJEmSpCXs8ZM9AMnAWl6Uy9t3V/LgMy30DE+ksrTrdrRzkNzMdGpK8lJdyrwzsEqSJElath470U1BTgY3VRYlr/3S3RsYn4rzlSeaU1jZ9TvWMcTmdQWkpwWpLmXeGVglSZIkLVuPnezmtg2rLwp3N5QV8FPb1vKVx5sYmZhOYXXXLgxDjnUOsq18+Z9fBQOrJEmSpGWqd2SS1t4x6msjl7z28bs2MDA2xfcOdaagsuvXNTRB3+gUW9ct//OrYGCVJEmStEwdaU80J9peUXTJa3trIhTkZNDQ3LfQZc1KsuHSCugQDAZWSZIkScvUkY4BALZdpptuWlrA3poI+5dYYD3WOQTgCqskSZIkLWWH2wepKMohkp912dfrohFe7BpiYGxqgSu7fsc6Et9TUV5mqktZEAZWSZIkScvSkfZBtlVceSWyPhohDOFga/8CVjU7h9oHV8T81fMMrJIkSZKWnfGpGCfPDbPtMudXz9tVXUxaAI1XsS347OA4fSOTc1niNesfneRE1zB10UubSC1XBlZJkiRJy86xziHi4eXPr56Xn53BjeWFyXOsP3yhiz/50clL7hudnObtf/wYn/rq/nmr92qcD9b1KyiwZqS6AEmSJEmaay91CH7l7bN10Qh/19hGa+8ov/LVAwxPTBNdncebbypP3vO/fnyKzsFxOgfHOXVumA1rVs1r7VfyTFMfmekBu6qLU/L5qeAKqyRJkqRl50jHAAU5GVRFcl/xvrpohJHJGB/+8tPEw5Atawv49984RO/M9t+OgTG+9M8nec2mUjLSAh58pnUhyr+shqZebqosIiczPWU1LDQDqyRJkqRl53D7INvKCwmC4BXv21uT2F578twIn33TVv7ofXsYHJ/ic19/jn853s1//NZh4iH8l3fdxOtuXMvXGtuYmI4txLdwkfGpGM+1DVBfW7Lgn51KBlZJkiRJy0osHnKsY+gVOwSfVxXJpSqSy74NJXzg1ihb1hXwq/dt4uHDZ/nA/32Khw+f5eN3baAqksf7bq2hd2SSR46cXYDv4mLPnxlgMhZfUedXwTOskiRJkpaZ090jjE3F2P4KHYLPC4KAr3/ydgqyM0lLS6zGfuq1N3DPljLGpmJkZ6RxU2XifV5zQymVxbn89dMtvHVnxbx+Dy/X0JRouLSSOgSDgVWSJEnSMtPY3AvA7upXD6wAZQU5F30dBAE7Ki99Ni0t4Kf3VvI/f3iCwfEpCnMyZ1/sZfzohS6eaxvgV+69IbmluaGpl41r8lm9KntePnOxckuwJEmSpGXlyVO9lK7KYuM8dPPdt2E1YUhyFM58+Pw/HuMLj7zIQw2JBk8T0zEamvu4eYWdXwUDqyRJkqRlJAxDnjrVw63rV79qw6XrsbummIy0gGeaeuf8vQGOdgxyrHOIwpwM/uO3jnCgpY8P/9kzDIxN8frta+flMxczA6skSZKkZaO1d4z2gXH2bZif1ci8rAy2VxbxzOn5WWH9xoEzZKQF/M3HbyMnM413fvFxGpp7+e/v2cW9Ww2skiRJkrRkPXm6B4BbN6yet8+4ORrhYFv/nI+3icVDvnmwnXu2rOHG8kK+8J7dbFyTz59/5BbeuadqTj9rqTCwSpIkSVo2njzVQ0l+FpvK5v786nk3ry9hcjrO820Dc/q+T53qoXNwnHfsqQTgtVvKePRf38MdN5TO6ecsJQZWSZIkScvGU6d6uXV9ybycXz3v/CzUp+f4HOvXD5yhIDuD19248rb+XomBVZIkSdKy0No7ypn+MW5dP7/ddFevymbjmvzkbNS5EIYhjx49y09tW0tOZvqcve9SZ2CVJEmStCw8dTqx4rlv4/ydXz3vlvUlNDT1Eo+Hc/J+zT2j9I1OcfM8h+2lxsAqSZIkaVk40j5IbmY6m8sK5v2z6qMlDI5P88LZoTl5v4Ot/QDsri6ek/dbLgyskiRJkpaFpp4RoqvzSEubv/Or590ysxLaMEfnWA+29pOXlc7mtfMftpcSA6skSZKkZaGpe4T1pfkL8llVkVzWFmbz9BydYz3Q2s9NlUWkL0DYXkoMrJIkSZKWvOlYnJbeUWoXKLAGQcDNtSU8c7qXMLy+c6zn57hOTMc42j7I7hq3A7+cgVWSJEnSknemf4zpeMj61QsTWCGxLbhzcJy2vrFrfvbLj52m/rf/iabuEY60DzIZi7O7ysD6cgZWSZIkSUve6e4RgAVbYYVE4yWAZ67xHOuZ/jH+2/deYGh8mi888uJLDZdcYb2EgVWSJEnSkteUDKx5C/aZW9YVUJCTwTPXeI71t759mJCQd+2t5FvPtvO1xjbWFmZTXpQ7T5UuXQZWSZIkSUteU88o+VnprFmVvWCfmZ4WUBeNXNMK6w+OneXhw2f59H2b+M37t1OUm8nh9kHH2VyBgVWSJEnSkne6e4Ta0nyCYGG77N5cW8KJrmF6Ryav6v4/f7yZ6pJcfvHODRTlZvKJezYCsLs6Mp9lLlkGVkmSJElLXlPPCLUL2HDpvGuZxxqGIYfPDLBv/WqyMhJR7MO31/LR16znHXsq5rXOpcrAKkmSJGlJm4rFaesbW9Dzq+fdVFlEXlY6jx7tetV7u4Ym6BmZZFtFYfJaTmY6//Yt2zy/egUGVkmSJElLWlvfGLF4mJIV1pzMdN66s5xvP9fO0PjUK957pH0QgO0VRQtR2rJgYJUkSZK0pJ3vELx+AUfaXOh9t9QwOhnjW8+2v+J9RzoSgXVrecFClLUsGFglSZIkLWmpmMF6od3VxWxdV8CDT7e+4n2H2weoKcmjMCdzgSpb+gyskiRJkpa0pp4RCrIzWJ2flZLPD4KA991Sw/NnBjh0ZoCuwfHkqu+FjrQPsv2C86t6dQZWSZIkSUvaqXOpGWlzoXfsriQ7I433felJbvndR7nn93/Ef/3eMaZjcQCGJ6Zp6hllW7mB9VpkpLoASZIkSbpe07E4B1v7efvu1I6FKcrL5Ndet5lnmnq5dX0Jp7tH+JMfnaSxuY8//WA9x7uGANheaWC9FgZWSZIkSUvW4fZBhiemuXXD6lSXwifu2cgn2Jj8+tYNJXzma8/xmb97lts3lgKwrdwOwdfCwCpJkiRpyXrqdA8A+9aXpLiSS71zTxXnhib43X84xrOtA5TkZ7G2MDvVZS0pnmGVJEmStGQ9daqXDaX5lBXmpLqUy/rFOzfwmk2ldA6Os72iMKXnbJciA6skSZKkRe97hzr51QcPEIuHyWuxeMjTp3sXxXbgK0lLC/iDn93F2sJs9i3iOhcrA6skSZKkWekbmeTxk90XXWts7qV7eGLOPuPBZ1r45sF2/rbhpVmnRzsGGZqYZt+Gxbcd+EJlBTn85DP38sl7Nr76zbqIgVWSJEnSrPzG3z/Pz/3pUzT3JGaPdg2O857//SR/8P0X5uT94/GQxuY+AH7/+y8yPDENwJOnEudXb12/+FcuszLS3A58HQyskiRJkq7bs639/OOhTgD+5pnE6uffNrYxHQ957ETPnHzGi11DDI1P8+Hba+kenuCLPzwBwJOneqldnce6osV5flWzZ5dgSZIkSdft9x5+gZL8LLasLeChhjZ+7XWbefCZFtLTAlp6R2nrG6Uqkjerz3imKbG6+sCd6xkYm+JPf3KKR46cpblnlHfuqZyLb0OLlCuskiRJkq7LYye6+ZcT3Xzyno08cOd6uocn+M/fOUJr7xgfv2sDAE+cvPIq60f/ooE/+dHJV/2chqZeygqyqYrk8htvvpGf3lvFprWreP32tfz87dE5+360+LjCKkmSJOm6/NGjxykvyuED+6JkpAWsLczmL59spjgvk0/ft4kHn2nliVM9vLu++pJnwzDkxy+e40BLPx99zXoy0q+8ltbQ1MfNtSUEQcCagmw+/9M75/Pb0iLiCqskSZKka9beP8ZTp3t53y015GSmk5GexntmgulP760iJzOd2zas5omTPYRheMnzfaNTTE7H6R6e4LFXWIVt7x/jTP8Y9bWReftetHgZWCVJkiRds+8+1wHA/bsqktc+sC/KPVvW8OHbawHYt3E1HQPjNPeMXvJ858B48vd/v7/tip/TMNMd+ObaxT26RvPDwCpJkiTpmn37uXZuqixifWl+8lpZYQ5//pFbqC5JNFm6fWNi3Mzjl1lBPTuYCKw3lhfy8OGzjMyMqnm5hqZe8rLS2bquYK6/BS0BBlZJkiRJ1+R09wjPtQ1w/67yV7xvQ2k+ZQXZPHHq0sDaORNYf+nuDYxNxXj4cOdl3+OJkz3srYm84hlXLV/+ry5JkiTpmnzn2XYA3rqz4hXvC4KAO24o5bET3cTjF59j7RwYJwjgTTvKqYrk8rXGS7cFH+0Y5HjXMG/YvnbuiteSYmCVJEmSdE2+/Vw7N9dGqCjOfdV77968ht6RSZ4/M3DR9bOD46zOzyYrI40P7Ivy+Mkevneo46J7/v7AGTLSAt7yKsFYy5eBVZIkSdJVO9E1xItnh191dfW812wqJQjgxy+eu+h65+A464qyAXjgzvVsryjk333jEH0jkwDE4iHfPHiGe7aUUZKfNbffhJYMA6skSZKkq/bw4bMAvGH7uqu6f/WqbHZWFvGjF7ouut45MM66whwAMtPT+L2f2UX/6BT/6duHCcOQJ072cHZwgnfuqZzbb0BLSkaqC5AkSZK0dDx8uJNd1cWsK8q56mfu3lLGH//gOP2jkxTnJVZLOwfHqYu+NFt1W0Uhn3rtDfzho8cZHJ8mAAqyM7jvxrK5/ha0hLjCKkmSJOmqnOkf47m2gWtugnT35jXEQ/jJ8W4Axqdi9I9OUf6y0Pvp+zbx795yI0+c7OHRY128+aZycjLT56x+LT0GVkmSJElX5fszo2feeJXbgc/bXV1MUW5m8hzr+RmsawsvDqzpaQG/+JoNPPKv7uIjd9TyyddunIOqtZS5JViSJEnSVXn4cCebylaxYc2qa3ouPS3gNZtK+fGL54jHQzoHEoH1StuKqyJ5/Ob922ddr5Y+V1glSZIkvarekUmePt171c2WXu6eLWWcG5rgSMcgnTMrrOsKr/4crFamWQXWIAhygiB4OgiCZ4MgOBwEwX+auV4SBMEjQRAcn/k1csEznwuC4EQQBC8EQfCG2X4DkiRJkubfv5zoJh7C67Zd2/nV8+7aXAokxtsktwRfQ+MmrUyzXWGdAO4Nw3AXsBt4YxAE+4DPAo+GYbgJeHTma4Ig2Aa8F9gOvBH4YhAEnqKWJEmSFrn9zX3kZqazo6Lwup4vK8hhe0UhP37hHJ0DE+RlpVOQ7QlFvbJZBdYwYXjmy8yZf0Lg7cBXZq5/BXjHzO/fDjwYhuFEGIangRPALbOpQZIkSdLcCMOQv3yyme7hiUteO9Daz86qIjLSrz9C3LNlDY0tfRzvGmJdYQ5BEMymXK0Asz7DGgRBehAEB4Eu4JEwDJ8C1oZh2AEw8+v54UmVQOsFj7fNXJMkSZKUYofbB/n33zjE/3z0+EXXx6diHGkfYE9N5ApPXp27N5cRi4c8dqL7kg7B0uXMOrCGYRgLw3A3UAXcEgTBjle4/XL/CSW85KYg+FgQBA1BEDScO3dutiVKkiRJugpPnOwB4OsHzjA2GUteP9w+wFQsZE9N8azef29NMQU5GcTDK3cIli40Z12CwzDsB35E4mzq2SAIygFmfu2aua0NqL7gsSqg/TLv9aUwDOvDMKxfs2bNXJUoSZIk6RU8frKb3Mx0hsan+e7zHcnrB1r6AWYdWDPS07jzhkTzJQOrrsZsuwSvCYKgeOb3ucDrgGPAt4APzdz2IeCbM7//FvDeIAiygyBYD2wCnp5NDZIkSZJmbyoW5+nTvbxrbyUbSvN58OmW5Gv7W/qoiuRSVjD7kHnPlsSClCNtdDVm25arHPjKTKffNOChMAy/EwTBE8BDQRA8ALQA7wYIw/BwEAQPAUeAaeBTYRjGrvDekiRJkhbI82cGGJmMcccNpURX5/G7/3CMF88OsXltAQda+rm5tmROPue+G9eyqew0ddHZnYfVyjCrwBqG4XPAnstc7wHuu8IzvwP8zmw+V5IkSdLcOn9+dd+G1YRhCb/38At84fsv8rk3b6VjYHzW24HPK12VzSP/6u45eS8tfw4+kiRJksQTJ3vYuq6AkvwsAH71vk38/vdf5JmmXgD2zrJDsHQ95qzpkiRJkqSlaWI6RkNzL7dtXJ289sv3buJLH6xjKhYnLyudG8sLU1ihVipXWCVJkqQV7mBLP+NTcW7fWHrR9ddvX8f3q4rpHp4gK8O1Li08A6skSZK0wh3vGgbgpsqiS15bV5TjCBqljP+ZRJIkSVrheoYnAVi9KivFlUgXM7BKkiRJK1zPyATFeZlkphsPtLj4/0hJkiRphesenmB1vqurWnwMrJIkSdIK1z08yepV2akuQ7qEgVWSJEla4XqGJ1hjYNUiZGCVJEmSVriekUkbLmlRMrBKkiRJK9hULE7/6BSr811h1eJjYJUkSZJWsN6RxEib0gJXWLX4GFglSZKkFax7eALAFVYtSgZWSZIkaQXrHp5ZYfUMqxYhA6skSZK0gvXMrLCW2iVYi5CBVZIkSVpG/s3fPsvDhzuv+v6emRVWuwRrMcpIdQGSJEmS5sbA2BR/29jGk6d7uG9rGRnpr74+1T08QVZGGquyjQZafFxhlSRJkpaJpu4RAFp7x/ju8x0XvTYwOsVHvvw0J7qGL7rePTzJmlXZBEGwYHVKV8vAKkmSJC0Tp2cCa1FuJv/rx6cIwzD52j8c6uCHL5zjbxtaL3qmZ2TC7cBatAyskiRJ0jJxunuEIIB/84YtHO0Y5J+Pdydf+4eZFdcfHOu66Jme4UlW5xtYtTgZWCVJkqRl4nT3CJXFufxsfTXrCnP44x8cJwxD+kYmefxkD6WrsjneNUxr72jyme7hCTsEa9EysEqSJEnLRFPPCOtL88nKSOOX772BZ5r6ePhwJ98/0kksHvIf7t8GwA9fSKyyhmGYWGE1sGqRMrBKkiRJy0AYhpw+lwisAO+9uZrNa1fxu/9wjG8caKe6JJf7d5azvjSfR48mAuvQxDSTsTilnmHVImVglSRJkpaB7uFJhiamk4E1Iz2Nf/eWbbT0jvLEqR7efFM5QRDw2i1lPHGqh9HJabqHJgDcEqxFy8AqSZIkLQNNPYkOwecDK8Bdm9fw2i1rAHjLTeUA3Lu1jMnpOI+f6KFnZBLALsFatAyskiRJ0jJw+tylgRXgv7xrJ7/zzh3cVFkEwC3rS1iVncHfNrbSM5xYYV2d7wqrFqeMVBcgSZIkafZOdY+QmR5QWZx70fV1RTm8/9Zo8uusjDR+6e4N/P73X2R0MgbgGVYtWq6wSpIkSctAU/cINSV5ZKS/+o/4H797I9srCvnJzJzWEuewapEysEqSJEnLwOnukUu2A19JZnoav/czu8hIC4jkZV5VyJVSwS3BkiRJ0hIXj4c09Yxw1+bSq35mW0Uhv/m27bTMNGuSFiMDqyRJkrTEdQyOMzEdp/YqV1jP++C+6KvfJKWQa/+SJEnSEtc8s0pau/raAqu02BlYJUmSpCWuo38cgIqXdQiWljoDqyRJkrTEdQ4mAuu6wpwUVyLNLQOrJEmStMD+z09O8em/PjBn79cxMEZxXia5Welz9p7SYmDTJUmSJGmB/cuJbp481UMYhgRBMOv36xwYp7zI7cBaflxhlSRJkhZY1+AE41Nxuocnr+m5iekYYRhecr1jYJzyIrcDa/kxsEqSJEkLrGtoAoDWvtGrfmZ4Ypp9v/sof/106yWvdQyMs87AqmXIwCpJkiQtoOlYnJ6RmcDae/WB9V+On6NvdIrvPNd+0fXxqRi9I5OU23BJy5CBVZIkSVpAvSOTnN/V29Y3dtXP/eBYFwDPNPUyMjGdvH72fIdgV1i1DBlYJUmSpAV0fjswQNtVbgmOx0N++MI5KotzmYqFPH6yJ/lax4AzWLV8GVglSZKkBdQ1lAiYWelptPZe3Qrr4fZBzg1N8Cv33kBeVjo/frEr+VrngCusWr4MrJIkSdIC6hpMrLBuryy86qZLjx47SxDAT21by+0bS/nRC+eS3YLbBxKhd51nWLUMGVglSZKkBXRuZkvwnuoI7f1jxOKXjql5uR8e62J3dTGrV2Vzz5Y1tPWNcfLcCJBYYS3MySA/O2Ne65ZSwcAqSZIkLaCuoQmKcjPZWJbPVCxMNk26knNDEzzbNsC9W8oAuHvzGgB+/OI54PwMVs+vankysEqSJEkLqGtonLKCbKojecCrj7Z58lSiwdLdWxJBtbokj41r8vnBsbNAYoW1vNjtwFqeDKySJEnSAuoamqCsMJuqSGJVtPVVRtscah8gKz2NresKk9feclM5T5zs4ezg+MwKq4FVy5OBVZIkSVpAXYMTlBXkUBnJJQhefbTN4TODbF63iqyMl350f8eeSuIhfK2xje7hCdYVuiVYy5OBVZIkSVogYRhybniCNQXZZGeks7Ygh9beMToGxnjTH/6E7x/uvOT+w+0D7Kgouuj6hjWr2FVdzJcfawJwhVXLloFVkiRJWiCDY9NMTscpK8gGoLokl9a+UX77O0c52jHIv/3GIQbHp5L3tw+M0zc6xfbKokve6527K+geTnQcdgarlisDqyRJkrRAuoYSHYHXzATWqkgeB1v6+e7zHdy/KxFAv/D9F5P3HzozAMD2isJL3uutuypITwsAqLDpkpYpA6skSZK0QLpmZrCWFSQCZnUkl8lYnPWl+fz+u3fywX1R/uKJpmRQPdw+SFoAN667NLCWrspOjrhZ51gbLVMGVkmSJGmBnDsfWAsTK6yb1hYA8Ftv3052Rjr/+vVbKMnP4j9/5wgAh88MsHHNKnKz0i/7fv/qpzbza6/bxKrsjAWoXlp4/j9bkiRJWiAv3xL85pvKuamyiNrSfACKcjP55D038FvfOcKTp3o43D7IbRtXX/H9dlQWseMy51ul5cIVVkmSJGmBdA1OkJOZRsHMimh6WpAMq+f93K01rCnI5j9/5widg+OXPb8qrRQGVkmSJGmBdA0lZrAGQXDFe3Iy0/n4XRs43D4IwPYKV1C1chlYJUmSpAVybmgiOdLmlbz/1iilqxL3bXOFVSuYZ1glSZKkeTY2GePZtn5Od4+wp6b4Ve/PzUrnP9y/jcdPdFOUm7kAFUqLk4FVkiRJmmOdA+M0NvfR0NzL/uY+DrcPMh0PAaiLRq7qPd62q4K37aqYzzKlRc/AKkmSJM3CdCzOsc4hGpv7kv+c6R8DIDsjjV3VxXzsrg3URSPsqYlQkp+V4oqlpcPAKkmSJF2DgbEpDrS8FE4PthvkpNkAACAASURBVPYzOhkDYG1hNvXREn7hzvXURyPcWF5IVoZtY6TrZWCVJEmSriAMQ5p7RmlIrp72crxrmDCEtABuLC/k3XVV7I1GqItGqCzOfcUOwJKujYFVkiRJmjE+FePQmYGZ86d97G/uo2dkEoCCnAz21kR4684K6qMRdlUXk5/tj9PSfPLfMEmSJK1YXUPj7L/g7OmhM4NMxuIA1K7O4+4ta6iPllAXjbCpbBVpaa6eSgvJwCpJkqQVIRYPefHsxc2RWnpHAchKT2NnVREfuaM2ub33/BxUSaljYJUkSdKyNDwxzcGWfhqaexPNkVr6GZqYBqB0VRZ10Qgf3BdlbzTCjspCsjPSU1yxpJczsEqSJGnJC8OQtr6x5MppQ3MfL3QOEg8hCGDL2gLetruCupnV05qSPJsjSUuAgVWSJElLzuR0nMPtAxdt7+0amgAgPyudPTURfuXeTdRFI+yuKaYwJzPFFUu6HgZWSZIkLXo9wxPsb+lPjpZ5rm2AielEc6SqSC63b1xNXTTC3miEresKSbc5krQsGFglSZK0qMTjISfPDSdnn+5v7uNU9wgAmekB2yuK+MC+KPUzAXVtYU6KK5Y0XwyskiRJSqnRyWkOtvYnx8vsb+lnYGwKgEheJnXREt5dX01dNMLOqiJyMm2OJK0UBlZJkiQtqPb+sYvOnh7pGCQWDwHYVLaKN+1Yl2yOtL403+ZI0gpmYJUkSdK8mYrFOdoxeFFA7RgYByA3M53d1cV84u6NifOnNRGK8myOJOklBlZJkiTNmf7RSQ5cMPv02dYBxqZiAFQU5SRXTuujJWwtLyAzPS3FFUtazAyskiRJui5hGHKqeyTZGKmhuY8TXcMApKcFbCsv5D03VydDakVxboorlrTUGFglSZJ0VcanYjzXNpAcLdPY3EffaKI5UmFOBnXRCO/YXUFdtIRd1UXkZfmjpqTZ8U8RSZIkXVbX4HhytExjcx+H2weYiiWaI20ozed1N65Nrp5uXLOKNGefSppjswqsQRBUA38BrAPiwJfCMPzDIAhKgL8BaoEm4GfDMOybeeZzwANADPh0GIYPz6YGSZIkzV4sHnKsczC5tbexuY+2vjEAsjPS2FVVzAN3bkjOPi3Jz0pxxZJWgtmusE4D/zoMw/1BEBQAjUEQPAJ8GHg0DMPPB0HwWeCzwK8HQbANeC+wHagA/ikIgs1hGMZmWYckSZKuweD4FAdb+mmYOX96oKWPkcnEj2RrCrKpj0b48O211EUjbK8oIivD5kiSFt6sAmsYhh1Ax8zvh4IgOApUAm8H7pm57SvAj4Bfn7n+YBiGE8DpIAhOALcAT8ymDkmSJF1ZGIa09I5eNFrmhbNDhCGkBbB1XSHv2luV3N5bFcl19qmkRWHOzrAGQVAL7AGeAtbOhFnCMOwIgqBs5rZK4MkLHmubuSZJkqQ5MjEd49CZwWRjpMbmfrqHJwAoyM5gd00xb9pRTl00wq7qIgpynH0qaXGak8AaBMEq4O+AXwvDcPAV/ovc5V4IL/N+HwM+BlBTUzMXJUqSJC1b3cMTF42Web5tgMlYHIDo6jzu2lTK3miE+toIm8oKSLc5kqQlYtaBNQiCTBJh9f+FYfj1mctngyAon1ldLQe6Zq63AdUXPF4FtL/8PcMw/BLwJYD6+vpLAq0kSdJKFY+HHO8apmFm9XR/cx9NPaMAZKWnsaOykA/fUcvemgh7o8WUFeSkuGJJun6z7RIcAP8XOBqG4RcueOlbwIeAz8/8+s0Lrn81CIIvkGi6tAl4ejY1SJIkLWcjE9McbO2ncWb19EBLH0Pj0wCszs+iLhrhfbfUUF+baI6Uk5me4oolae7MdoX1DuCDwPNBEBycufYbJILqQ0EQPAC0AO8GCMPwcBAEDwFHSHQY/pQdgiVJkhLCMORM/9hFzZGOdgwSDyEIYHNZAW/dWUH9THOk6Oo8myNJWtaCMFzcO27r6+vDhoaGVJchSZI056ZicQ63D15w/rSXs4OJ5kh5WensqSmmriYx93RPTYSiXJsjSVp+giBoDMOw/nKvzVmXYEmSJL2yvpFJ9rcktvY2NvfxXFs/41OJ5kiVxbncun419bUR9tZE2LqugIx0Z59KWtkMrJIkSfMgHg851T2c3Nrb0NzHqXMjAGSkBWyvLOLnbokmZ5+uK7I5kiS9nIFVkiRpDoxNxni2rT8ZUPe39NE/OgVAcV4mdTURfqauirqaCDurisnNsjmSJL0aA6skSdJ16BwYv2i0zOH2Qabjid4gG9fk84Zt66iLJs6fblyTb3MkSboOBlZJkqRXMR2Lc6xzKLm1d39zH2f6xwDIyUxjV1UxH7trA/W1EfZUR4jkZ6W4YklaHgyskiRJLzMwNsWBlpdGyxxs7Wd0MjGJb21hNvXREh64cz110QjbKgrJtDmSJM0LA6skSVrRwjCkqWf0gtmnvRzvGiYMIT0t4MbyAt5dV0VdbQl10QgVRTlu75WkBWJglSRJK8r4VIxDZwaSo2X2N/fRMzIJQEFOBntrIty/s4K6aIRd1cXkZ/vjkiSlin8CS5KkZa1raJz9F4yWOXRmgKlYojnS+tJ87tlSRl00Qn1thBvWrCItzdVTSVosDKySJGnZiMVDXjw7lGyM1NjcR0vvKABZGWnsrCziF+5cT11Nontv6arsFFcsSXolBlZJkrRkDY1PcbD1pdmnB1r6GZ6YBqB0VTb10Qgf3BelrjbC9opCsjOcfSpJS4mBVZIkLQlhGNLWNzaztbeXxuZ+XugcJB5CEMCWtQW8Y0/i7GldTQnVJbk2R5KkJc7AKkmSFqXJ6TiH2gcuOn96bmgCgFXZGeypKeb1926ivjbC7upiCnIyU1yxJGmuGVglSdKi0DM8wf6Wfhqae9nf3MezbQNMTscBqC7J5Y6NqxOjZWoibFlXQLrNkSRp2TOwSpKkBRePh5w4N3zB7NM+TnePAJCZHrCjsoif3xdNbO+NRigrzElxxZKkVDCwSpKkeTc6OZ1ojtTUR2NLooPv4HiiOVJJfhZ7ayK85+Zq6qIRbqosIifT5kiSJAOrJEmaB+39YxeNljnSMUgsnph9unntKt6ys5y9NRHqa0uoXZ1ncyRJ0mUZWCVJ0qxMxeIc7RhMNkba39xHx8A4ALmZ6eyuLuaT92xkbzTC3uoIRXk2R5IkXR0DqyRJuib9o5Psb3np7OmzrQOMTcUAqCjKob62hLqaYuqiJdxYXkBGelqKK5YkLVUGVkmSdEVhGHKqe4TGmZXThuY+TnQNA5CeFrC9opD33FxNfW2EvTURKopzU1yxJGk5MbBKkqSk8akYz7UNJEfLNDb30Tc6BUBRbiZ10Qjv3FPJ3poIu6qLyMvyRwlJ0vzxbxlJklaws4Pjya29Dc19HD4zwPRMc6QNa/J53Y1rqa9NjJbZULqKNGefSpIWkIFVkqQVYjoW54WzQxfNPm3rGwMgOyONXdXFfPSuDdTVRNgbjVCSn5XiiiVJK52BVZKkZWpwfIoDLf0z4bSXgy39jEwmmiOVFWRTXxvhw7fXUl9bwrbyQrIybI4kSVpcDKySJC0DYRjS0jt60WiZF84OEYaQFsDWdYX8dF0VddFEc6SqSK6zTyVJi56BVZKkJWhiOsahMwMXbO/tp3t4AoCC7Az2RCO8aUc59bURdlUXsyrbv/IlSUuPf3tJkrQEnBuauGj26fNtA0zG4gBEV+dx1+ZS6qKJ5kibygpItzmSJGkZMLBKkrTIxOMhL3Zd3BypuWcUgKz0NG6qKuLDd9Qmt/euKchOccWSJM0PA6skSSk2PDHNs639NDT10djSx4GWPobGpwEoXZXF3poI77+1hrpohB2VRWRnpKe4YkmSFoaBVZKkBRSGIWf6x16afdrUx7HOQeIhBAFsWVvA/bsqqKuJUF8boaYkz+ZIkqQVy8AqSdI8mpyOc6RjMDlaprG5j7ODieZIeVnp7Kkp5pfv3URdNMLu6mKKcjNTXLEkSYuHgVWSpDnUNzKZCKczDZKebe1nYjrRHKmyOJd9G1YnmyNtWVtARrqzTyVJuhIDqyRJ1ykeDznVPZzc2tvY0sepcyMAZKQFbK8s4gP7osnmSOuKclJcsSRJS4uBVZKkqzQ2GeNga39yvMz+lj76R6cAiORlUheN8DN1VdRHS9hZVUROps2RJEmaDQOrJElX0DEwllw93d/Sx5H2QabjIQA3lK3iDdvWUVeb2N67oTTf5kiSJM0xA6skScB0LM6xziEamnppbOlnf3MfZ/rHAMjJTGN3dTEfv3tDcntvcV5WiiuWJGn5M7BKklakgdEp9rf2sX9mBfVgaz9jUzEA1hXmUFcb4Rdfs566aIQbywvJtDmSJEkLzsAqSVr2wjCkqWeUhqbe5PnTF88OA5CeFrCtvJD33FzN3miE+miEiuLcFFcsSZLAwCpJWobGp2I8f2ZgZvZpYhW1Z2QSgMKcDPZGI7xtVwV7oxF2VRWTn+1fh5IkLUb+DS1JWvK6hsaTW3sbW/o4dGaAqViiOdL60nxeu7UsOfv0hjWrSEuzOZIkSUuBgVWStKTE4iEvdA7R2DJz/rS5l9beRHOkrIw0dlUV8Qt3rqc+WsLemmJWr8pOccWSJOl6GVglSYva0PgUB1v7k6NlDrT0MzwxDcCagmzqoxE+dFste6MRdlQUkZVhcyRJkpYLA6skadEIw5DW3jEaW3qT809fODtEGEJaAFvWFfKOPRXUR0uoi0aoiuQ6+1SSpGXMwCpJSpmJ6RiH2wcvOn96bmgCgFXZGeypKeaNO9ZRF42wu7qYgpzMFFcsSZIWkoFVkrRgeoYnEp17Z86fPts2wOR0HICakjzuvKE0OVpm89oC0m2OJEnSimZglSTNi3g85MS54eTW3v0tfZzuHgEgMz1gR2URH7otSl00wt6aCGWFOSmuWJIkLTYGVknSnBiZmObZ1v6LVlAHxxPNkVbnZ7E3GuE9N1dTH42wo7KInMz0FFcsSZIWOwOrJOm6nOkfS4TTpl4aW/o42jFELJ6Yfbp57SresrMiOfu0dnWezZEkSdI1M7BKkl7VVCzO0Y7BZGOk/c19dAyMA5CXlc7u6mI+ec9G6qIR9lRHKMqzOZIkSZo9A6sk6RL9o5Psb+lLnj99tq2f8alEc6TK4lzqa0uon1k93bqugIx0Z59KkqS5Z2CVpBUuDENOdY/Q2NSXPH96omsYgIy0gO0Vhbzvlprk9t7yotwUVyxJklYKA6skrTDjU7FEc6SZrb2NzX30jU4BUJSbSV00wjv3VFIXjbCrqpjcLJsjSZKk1DCwStIyd3ZwPLm1t7Glj8NnBpieaY60cU0+P7Vt7czqaQkbSvNJc/apJElaJAyskrSMTMfiHOscuuj86Zn+MQCyM9LYVV3Mx+7akGiOVBOhJD8rxRVLkiRdmYFVkpawwfEpDrT0J0fLHGzpZ2QyBsDawmzqoyX8wp3rqY9GuLG8kKwMmyNJkqSlw8AqSUtEGIY094wmGyM1NvXxYtcQYQhpAdxYXshP11UlmyNVFuc6+1SSJC1pBlZJWqTGp2Icbh9Ibu3d39JH9/AkAAU5GeytifCWneXURSPsri4mP9s/0iVJ0vLiTzeStEicG5qgsbkvef70+bYBJmOJ2ae1q/O4a/Ma6qMl1EUjbCpbZXMkSZK07BlYJSkFYvGQ411Die29M917m3tGAchKT2NnVREfuaOWvdEIe2sirCnITnHFkiRJC8/AKkkLYHhimoMt/cnzpwea+xiamAagdFUWddEIH7g1yt5ohB2VhWRnOPtUkiTJwCpJcywMQ9r6xtjfMjP7tLmPY52DxEMIAtiytoC37a5INkeqKcmzOZIkSdJlGFglaZYmp+Mc6Rikoak3ef707OAEAPlZ6eypifDL926iPhphd00xhTmZKa5YkiRpaTCwStI16h2ZZP8Fo2WebetnYjrRHKkqksttG1ZTF42wNxph67pC0m2OJEmSdF0MrJL0CuLxkFPdw8mtvY0tfZw6NwJAZnrA9ooiPrAvSv1MQF1bmJPiiiVJkpYPA6skXWBsMsbB1v6Z86e97G/pZ2BsCoBIXiZ10RLeXVdNXTTCzqoicjJtjiRJkjRfDKySVrSOgTEamxPNkfa39HGkfZDpeAjAprJVvGnHOvZGI9RHI6wvzbc5kiRJ0gIysEpaMaZjcY52DNHY3EtjSz+NTb20D4wDkJuZzq7qIn7p7o3URSPsqSmmOC8rxRVLkiStbAZWScvWwOgU+1sTjZEam/s42NrP2FQMgPKiHOqiET4ajVAfLWFreQGZ6WkprliSJEkXMrBKWhbCMOR09wiNzX3J+afHu4YBSE8L2FZeyHturk7OPq0ozk1xxZIkSXo1BlZJS9L4VIznzwwku/fub+mjd2QSgMKcDOqiEd6+u4K6aAm7qovIy/KPO0mSpKXGn+AkLQldg+OJsTIzo2UOnRlgKpZojrShNJ97t5ZRP7N6unHNKtKcfSpJkrTkGVglLTqxeMgLnUM0tvTR2NRLY0sfrb1jAGRnpLGrqpgH7txAXTTC3ppiVq/KTnHFkiRJmg8GVkkpNzQ+xYGW/uTW3gMt/QxPTAOwpiCb+miED91WS100wvaKIrIybI4kSZK0EhhYJS2oMAxp7R2jsaU3ef70hbNDhCGkBbB1XSHv3FOZbI5UFcl19qkkSdIKZWCVFrkwDPn5P3ua+7aW8eE71qe6nGs2MR3j0JlB9l9w/vTc0AQABdkZ7K4p5k07yqmLRthVXURBTmaKK5YkSdJiYWCVFrmmnlF+crybhqY+3rijnHVFOaku6RV1D08kwmlLYv7pc2cGmJyOA1BTksdrbihlbzRCfW2ETWUFpNscSZIkSVdgYJUWuSdO9gAwGYvzew+/wB/87K4UV/SSeDzkxLnhi0bLnO4eASArPY0dlYV86LYoddES9kaLKStY3GFbkiRJi8usAmsQBH8GvBXoCsNwx8y1EuBvgFqgCfjZMAz7Zl77HPAAEAM+HYbhw7P5fGk5GRibghCK8i7eEvv4yW7WFmbzjj2V/O8fn+JDt0fZWVWckhpHJqZ5tjXRHKlhJqAOjSeaI63Oz6IuGuG9N1dTF42wo7KInMz0lNQpSZKk5WG2K6x/Dvwx8BcXXPss8GgYhp8PguCzM1//ehAE24D3AtuBCuCfgiDYHIZhbJY1SEtOPB7y5Kkebtu4OtlQ6IE/f4ZzwxN851fuTJ7jDMPEfXfeUMovv/YGvtbQxn/93jH+3y/um/cawzCkfWBm9unMaJmjHUPE4iFBAJvLCnjrzork7NPo6jybI0mSJGlOzSqwhmH4z0EQ1L7s8tuBe2Z+/xXgR8Cvz1x/MAzDCeB0EAQngFuAJ2ZTg7QUPXqsi4/+RQNffP9e3nxTOafODdPQ3AfAb37zMF94z24AjncN0z08ye0bSynIyeTDt9fyB4+8SHv/GBXFuXNa01QszpH2wWRjpMamPjoHxwHIy0pnT00xn7pnI3ujEfbURCjKtTmSJEmS5td8nGFdG4ZhB0AYhh1BEJTNXK8EnrzgvraZa9KK09DcC8BXHm/izTeV842D7QQBvO+WGr76VAt3bV7DO/ZUJs+v3rZxNQD376rgDx55ke8+18FH79owqxr6RyfZ39KXPH/6bFs/41OJ5kiVxbncsr4kOVpm67oCMtKdfSpJkqSFtZBNly63VzC87I1B8DHgYwA1NTXzWZOUEgdb+gF46nQvxzoH+caBM9yxsZTfett2Xuwc4jf+/nlWr8riiZM9VEVyqS7JA6C2NJ+dVUV8+7n2awqsYRhy8txIcrRMQ3MvJ88lmiNlpAVsryjk526JJgPqYu9ELEmSpJVhPgLr2SAIymdWV8uBrpnrbUD1BfdVAe2Xe4MwDL8EfAmgvr7+sqFWWqpi8ZDnzwzw9t0V/OOhTn79756npXeUT9+3iYz0NL74/r38/J89zUe+/AwZ6QH376y46Pm37argt797lKbuEWpL8y/7GWOTMZ5r6080RprZ4ts/OgVAcV4mdTUR3rW3ivpohJ1VxeRm2RxJkiRJi898BNZvAR8CPj/z6zcvuP7VIAi+QKLp0ibg6Xn4fGlRO941xOhkjNduKSMjLY2/299GTmYab9yxDoCywhwe+qXb+MRfNfLYiR7uuKH0ouffsrOc3/7uUb79bDu/ct8mAM4Ojie39jY293K4fZDpeOK/9Wxck8/rt62lPlrC3miEjWvybY4kSZKkJWG2Y23+mkSDpdIgCNqA3yQRVB8KguABoAV4N0AYhoeDIHgIOAJMA5+yQ7BWovPbgXdVF7O+NJ+/29/G67etY1X2S/86FuZk8uUP38JPjp/jni1lFz1fXpTLLbUlPPhMK8e7hmls7uNM/xgAOZlp7Koq5mN3baC+NsKe6giR/KyF++YkSZKkOTTbLsHvu8JL913h/t8Bfmc2nyktdQdb+ynOy6R2ZgzM77xzB3dsLL3kvqyMNO67ce1l3+Nn6qv4zNeeYzoepz5awgN3rqcuGmFbRSGZNkeSJEnSMrGQTZckkQisu6qKk9ty339r9Jrf4911VfzUjWspzst0e68kSZKWLZdipAU0MjHNi2eH2F1dPKv3CYKASH6WYVWSJEnLmoFVWkDPtQ0QD5l1YJUkSZJWAgOrtIAOtPYBiYZLkiRJkl6ZgVVaQP905Cw3lhdSYudeSZIk6VUZWKUF0to7yv6Wft62qyLVpUiSJElLgoFVmifTsTj/89HjnDo3DMB3nusA4K07y1NZliRJkrRkGFilefK1xjb+4JEX+dRXDzA5Hedbz7azp6aY6pK8VJcmSZIkLQkGVmkejE/F+MNHj7OuMIejHYN85mvPcrRjkPt3uh1YkiRJuloGVuk6jE5O84m/auT42aHLvv6XTzTTMTDOf3/Pbt6+u4JvHGwnCNwOLEmSJF2LjFQXIC1F+5v7+cdDnWRnpPE/3rvnotcGx6f44o9O8P+3d9/hcZ1l+se/j3qXrGZL7t2x45JeTXqykEIWAmRDb8sPlqWzsCwsLLDssqF32ABJ6CwhAVIIBAIEpzrYsePuuMmyZcnqvc37++OckWVZtmSdMzoj6f5c11ySzpwZvXNrRnOeectZu7iUixaWsGxGPut2H2XZjALKC7IiarGIiIiIyMSjglVkDLYebgbgwc01fPSGbkrzMgGob+vmzXetp7mzl3+5bhkA03Iz+M0/X0pmWmpk7RURERERmYg0JFhkDLYeaiEvM42e/hg/e6YKgP317bz8m4+z7XAL33j1OaycVTiwf0Vhts69KiIiIiJymtTDKjIGWw61cOGCYjp7+/nRk/u5cEEJ/3j3emLO8eO3XsA5c4ujbqKIiIiIyISnHlaR09TV288LdW0sryjgtRfO41BzF6/41uPkZKZyz9svVrEqIiIiIhIS9bAmiHOO2tZupmuRnUlne00rMQfLKwu4+oxyFpTlkp+Zxh2vP4+y/MyomyciIiIiMmmoYE2Qp/c2cOv/Pskj77uMhWV5UTdHQrT1UAsAKyoLSUtN4cF3rSUzLQUzi7hlIiIiIiKTi4YEJ0h1UyfOwY6a4c/TKRPX1sPN5GemMWtaNgBZ6akqVkVEREREEkAFa4K0dfcBsL++I+KWSNi2HGrhjMoCFakiIiIiIgmmgjVBWru8gvVAgwrWyaQ/5th+uJUVlQVRN0VEREREZNJTwZog8R7WAw3tEbdEwrT3aDudvf0sr1DBKiIiIiKSaCpYE6RNPayT0pZDzYC3QrCIiIiIiCSWCtYEifewHmrqorc/FnFrJCyP764nPzONJdPzo26KiIiIiMikp4I1QeJzWPtjjkNNnRG3RsLgnOPRHbW8aEkZ6al66YiIiIiIJJqOuhOkrbuXtBRvFVmtFDw5bDnUQm1rN1csK4+6KSIiIiIiU4IK1gRp6+5jsT9sVPNYJ4c/bq/FDC5fWhZ1U0REREREpgQVrAnS1tXHgrJcMtJSqFLBOin8YXstq2YVUZqXGXVTRERERESmBBWsCdLW3UdBVjqzp2VrSPAkcLStm00Hm7hKw4FFRERERMaNCtYEae3qoyArjbkluRoSPAn8aUcdzsGVKlhFRERERMaNCtYE6OmL0d0XIy8zjTnFORxo6MA5F3WzJIA/76yjPD+TFTr/qoiIiIjIuEmLugGTUbt/Dta8rDRyMtNo6+6jsaOX4tyMiFsmY7WxqpHz5hVjZlE3RURERERkylAPawK0xQvWzDTmFucAsL++PcomSQCN7T1UNXSyclZh1E0REREREZlSVLAmQGuXV7DmZ6Uxp8QrWDWPdeLaXN0MwKqZKlhFRERERMaTCtYEONbDms6c4hzSUoztNa0Rt0rGKl6wrlDBKiIiIiIyrlSwJkBbdy/gzWHNSk/l7LnT+MvOuohbJWO16WAT80tzKcxOj7opIiIiIiJTigrWBIgPCc7L9Na0umxJGVsOtVDb2hVls2SMNh9sZqV6V0VERERExp0K1gSIDwnOz/IK1suXlgHwl51HI2uTjE1dazeHmrtYpQWXRERERETGnQrWBGgb0sO6vKKAsvxM/rSjdtT30dDew0+fPkBzZ29C2iij87w/f1U9rCIiIiIi408FawK0dfdhBjkZqQCYGZctKeOxXUfpjzme3d/AN/60+5T3cefj+/jwLzez9rN/5Kt/2EVff2w8mi5DbDrYjJkWXBIRERERiYIK1gRo7eojLzMNMxvYdtmSMpo7e/nOX/bwmjue5n9+u4OOnr6T3sdzVU3MmpbN+fOL+fzvd3LvhurxaLoMsbm6iYVleQO95SIiIiIiMn5UsCZAW3cf+UMKnLWLS0kx+Oxvt9PvHAA1zcMvwuScY9PBJi5eWML/vu5cyvIzeWyX5r+Ot+6+fjYcaNJwYBERERGRiKhgTYC2rj7yso4vWItyMli7uIxF5XncfssqAGpahi9Yqxo6aezoZfXsIsyMSxeVsm73d65VsAAAIABJREFUUWIxl/C2yzF3P76f+vYebj5rZtRNERERERGZkjTOMQHauvuGHUL6ndedQ3pKCnvr2wE4cpKC9bmDTQCsnlUEwMULS7h3QzU7jrRyRkVBglotg9W3dfOVP+7isiVlXLakLOrmiIiIiIhMSephTYDW7j7ystJP2J6ZlkpKijGjIAuAmubuYW//XFUTGWkpLJ2RD8Ali0oBWLdbw4LHy5ce2UVHTz8fvf6MqJsiIiIiIjJlqWBNgLau3hPmsA6Wm5lGfmbaSXtYNx1sZkVlAemp3p+nsiibBWW5JxSstS1dfP53O+jXUOFQPbqjlh8/fYDbzp/D4un5UTdHRERERGTKUsGaACcbEjzY9MKsYRdd6uuPsbm6eWA4cNwlC0t5am8DPX3HTm/z02eq+Oofd7P1UEs4DRd+9swB3nLXepZOz+f91y6JujkiIiIiIlOaCtYEGG7RpaEqCrOGXXRpd10bnb39rJ59/Mq0lywqpaOnf2B+K8BTe+sBBubESjD3bzrEh+7ZzCWLSvn5/7uIopyMqJskIiIiIjKlqWANWX/M0d7TP3IPa8HwPazPVR2/4FLcRQtKSDEGTm/T0xfj2f2NAOytU8EahvufO0xlYRbfff25Ou+qiIiIiEgSUMEasvaePgDyR+hhnVGQRV1b9wnzT5872Ex+VhrzSnKP216Yk865c4t5YNOhgfO0dvV6w4P3qYf1pO7bUM2jO2pH3C8Wczy1t56LFpYOzB0WEREREZFo6cg8ZG1dXsE6mjms/THH0bZjKwU751i3+yjnzJ1GSoqdcJubz5rJC3XtPF/dwpN7vOHAKyoL2HM0moJ115HWURWDUemPOf79V8/zb7/cPPDBwMHGDt7z0w0cbu48bt9dtW00dvRywYLiKJoqIiIiIiLDUMEasrZuv2AdRQ8rcNyw4N21beyv7+DqM6YPe5vrV1aQkZrCvRuqeWpvA8tm5HPWnCL21rXh3PivFPxfD23nrXetZ09d27j/7tHYXtNCS1cfh5q7+MvOOgC+8odd3LfRm6s6OLP4fOCLFpRE0lYRERERETmRCtaQtY6yh3WgYB208NLvtx0B4Kozyoe9TWFOOlcuK+fXz1Wzfl8jFy4oYX5pHi1dfTR29IbR/FGLxRzr9zXQF3N85sHt4/q7R+vJPQ0A5Gem8ZOnD1DT3MW9G6qZW5LDX3bW8X/PHhy0bz2VhVnMmpYdVXNFRERERGQIFawhi/ewjjSHdXphJsBx52J9ZOsRVs4spKLw5EXTzWfN5GhbD529/Vwwv5j5pTkA7D06vr2cu2rbaOnq48yZBTyy7QiPDzlHbDJ4ak89c4pzePWFc/nD9lr+66FtxBz84E0XcP68Yj51/1ZqmrtwzvHUngYuXFCC2YlDsUVEREREJBoqWEN2bA5r+in3K83NJC3FBoYE17V2s6Gq6aTDgeOuWFZGgV8Mnz+/mPmleQDsSfBKwc45fr6+ina/IH9mn9d7+cVXrmHWtGw+ef/WExaQGsnGqiY2VjWNvOMYxGKOp/c1cMH8Ym49bzb9McevNh7ihlUVzCnJ4X9uWUVfv+NtP1jP5upm6tt7NH9VRERERCTJqGANWVu3NzR3pDmsKSlGeX7mwJDgR7fX4hxcvXz44cBxmWmpvO6ieVy2pIySvExmTcsmLcUSvlLwlkMt/MsvNvHdv+4F4Nn9jZTlZ7KoPI8PXLuU7TWtAwtBgVfgxkYoYP/9V8/z7p9uSMj82x1HWmnq6OWCBSXMK83l4oXe3NS3vWghAPNKc/nyrWvYXN3MG7//DAAXav6qiIiIiEhSUcEastHOYQVvpeD4kODfbT1CZWEWyysKRrzdB65byl1vOh+A9NQUZhfnsDfBKwXvr+8A4GfPVNEfczyzr4Hz5k3DzPi7M2eQk5HKg5sPA16xesu3nuDdP9s44n3ur+9gx5HW0Nv7lF88XzDf6zX92A3L+ezLV7K88li+166YwSduWkF9ew8zCrKYU5wTejtERERERGTsVLCGbGCV4FEUrDMKsqhp7qKmuYvHdtVx9fLpY5pDOb80N+FDgg82egVrdVMn/7e+ioONnZw71ysGs9JTuWJZOQ9vqaE/5nh2fyPP7m/kN88d4vEXhp/b2tzRS3On1xv98PNHQm/vk3samFmUzWy/CD2jooBXnTfnhP1ed9E8PnbDct57zWLNXxURERERSTIqWEPW1tVHTkYqqcOcR3WoGYVewXr7wztwDt66dsGYfuf80lz213eMOAQ3iKrGDvKz0ijNy+AzD24D4Lx5x+Z8Xr+ygqNtPTy9t4G7n9hPflYaM4uy+fT924ad21rlF8BpKcbDW2pCbWt8/upoh/i++dL5wxazIiIiIiISLRWsIatr66Y4N2NU+84oyKK9p597/naQN146b6A38HTNK82ls7efI61dI+88RlUNncwtyeHl58yixS/Kz6jIH7j+8qVlZKWncPcT+3jo+cPccs4sPvTiZWw93MI9g04fc+z+vIL1xtWVbD3cMvBzGO7bWE1Dew+XLy0L7T5FRERERGT8qWAN2cHGzlGfy3NGoXcu1pLcDN55xaIx/84FpbkA7E3gsOCDjR3MKsrhVr8n8qw5RaSlHnv65GSkceWych56vobefsdrL5zLjasqOHtOEV/4/c4TelkP+AXqW9bOBwitl7W5o5fPPLiNs+YUcf3KilDuU0REREREoqGCNWTVjZ3MLBpdT+ncEq/QfN+1S8jPOvVpcE5lvl+w7knQwkvOOQ42djK7OJv5pbl84NolvGWY4csvPtMrENcuLmVBWR5mxhsumU9NS9cJp6850NDBtJx0VlQWckZFQWgF6+2/205Dew+fvvlMUkYxLFtERERERJKXCtYQ9fTFONLaxcxR9rCunlXIA++6lNvODzZ/ckZBFtnpqQlbeKmutZvuvtjAkOV3XrmYK5aeePqdq84o55JFJbzrqsUD2y5bUkZaivHItuMXVjrQ0DGwKu8Nqyp4Zl8jdz2+L1A7n69u5kdPHeD1F89jRWVhoPsSEREREZHojbyUrYxaTXMXzjHqIcFmFkphlZJiLCjL5YW6tsD3NZz4AkkjPa6cjDR+9JYLj9tWmJ3OBQuK+f3WI3zo75Ydu8+GDlbM9B77W9cuYGNVEx//9RZ6+2PMKMzib/ubeOmaSlbPLhp1O+98fB856am895olo76NiIiIiIgkL/Wwhih+6pdZRaMrWMO0sCwvYQXrwcZOAGZPG9uiUFefMZ3dtW0D54rtjzmqmzoHelgz0lL4+m1nc/UZ5Xz6gW2888cb+N66vdz+8I5R/47mzl7u33SIm9bMpCDA8GoREREREUkeKlhDdLDJK+xGOyQ4TAvL8qhu6qSrtz/0+46v4DsrQMEK8Ad/WHBNSxe9/W6gYAW/aH312XzttrO49x0X809XLGTdC0c50jK6lY9/vbGart5Y4OHVIiIiIiKSPFSwhqi6sRMzqCgc/4J1QVkuzjHQixmmqoZOSvMyyc5IHdPtZxfnsGxGPr/f6hWsB+q9AnjOkNP4ZKalcsOqSs6aM41bzpmNc/DrjYdGvH/nHD9+uooVlQWsnKW5qyIiIiIik4UK1hBVN3UyPT+LjLTxj3VhWR5AQoYFH2zqGPW83JO5+ozpPLOvgYb2noEe26EF62DzS3NZM7uIX26oHvG+Nx1sZtvhFv5BvasiIiIiIpOKCtYQHWzsiGQ4MHgFnhm8UJuYHtbZpyguR+OG1RXEHHx/3V4ONHSQmmJU+OehPZm/P2sm2w63sL2m5ZT7/Wx9Fdnpqbx0TWWgNoqIiIiISHJRwRqi6qZOZkaw4BJAdkYqM4uyT+hhjcUcz+5vGPP99scch5o6mR2wEF82o4DrV1Vwx2N7+duBRmYWZZOWeuqn3w2rKkhLMe7bcPJhwX39MX77fA1XL58e6Fy2IiIiIiKSfFSwhqQ/5jjc1BV46GwQw60U/Oeddbz8m0+w5VDzmO7zcHMnfTEXuIcV4P3XLKGnP8bjL9SfcjhwXEleJpcvLeOevx2ku2/4xaSe2usNM75+5YzA7RMRERERkeSigjUkta1d9MVcZEOCwStY99S1E4u5gW17/EWYqho6x3Sf8VPahFGILyjL45XnzgIYdQH8uovmUdfazf3PHR72+gc2HyYnI5XLl5YHbp+IiIiIiCQXFawhiRd2UQ0JBm+l4M7efmoGnQrmkH+qnbrW0Z0eZqj4AkljPQfrUO+6ajF5mWksrywY1f5rF5eyuDyP763bi3PuuOv6Y46Hn6/himXlZKWPbQVjERERERFJXipYQ1IdYk/kWA23UnC8YK1t7R7TfcZvN2OEBZJGq6Iwmyc/chWvHuWKvmbGmy6dz5ZDLTy19/i5uE/trae+vYfrV1aE0jYREREREUkuKlhDUt0U72ENpydyLBaW5wLwQu2xgjXeriMtY+thbWzvIScjNdQezLzMNFJSbNT7//1ZMynOzeC7f9173PaHNteQnZ7KFRoOLCIiIiIyKalgDcnBxk5KcjPIzohuaGpZXib5WWnsDrGHtaGjh2k5GaG0b6yy0lN59QVzeGTbEbYd9k5x09LVy/2bDnHlsvJIMxcRERERkcRRwRqS6qbOSBdcAm/47MKyPHb7Paxdvf0cbesBoLZlbAVrY3sPxbnRFqwAb750PgVZ6Xz6ga045/jaH3fT1NnL2y9fGHXTREREREQkQVSwhuRgQ0ek81fjlk7PZ9cRr2A93OwNA87JSKV2jIsuNXT0Mi0JCtainAzec/Vi1u2u53vr9vH9dXu55exZnDmzMOqmiYiIiIhIgox7wWpmf2dmO8xst5l9eLx/fyL09MXY39DBgtK8qJvC4ul51Lf3UN/WPbAQ1KpZhdS399DXHzvt+2ts76E4Jz3sZo7Jay6cy4KyXD51/1bSU1P44HVLo26SiIiIiIgk0LgWrGaWCnwdeDGwHPgHM1s+nm1IhH317fTHHIunR1+wLpmeD8DOI20D81fXzJ6GcwwMDz4dDe09SdHDCpCemsLHrveeLu+4fCHlBeGsXCwiIiIiIskpbZx/3/nAbufcHgAz+ynwUmDrOLcjVPE5o/HTykQpXrDuqm2lvq0HM1g9yxs2e6Sl67ROT9Pd109bdx/FES+6NNgVy8r54/svY35pbtRNERERERGRBBvvIcEzgapBPx/0tx3HzP7RzNab2fq6urpxa9xY7TrShllyFKzTC7yVgnceaaW6qZPp+VkDi0Gd7krBTR29AEnTwxq3oCwPs9GfFkdERERERCam8S5Yh6sy3AkbnPuOc+5c59y5ZWVl49CsYHbXtTFrWnZSnF7FzFgyPZ+dNd6Q4MqiLMrzvV7V0114qaHdG0KcDKsEi4iIiIjI1DPeBetBYPagn2cBh8a5DaHbdaSVRUnQuxq3ZHo+O2u9HtbKomxK8zIwgyODTm3j3AmfE5ygUQWriIiIiIhEaLwL1meAxWY238wygFuBX49zG0LVH3PsOdrOYn/uaDJYMj2Ppo5eDjR0MHNaNmmpKZTkZlLn97C+40fP8s8/2TDi/TR0qGAVEREREZHojOuiS865PjN7J/AwkAp8zzm3ZTzbELaqhg56+mJJ18MK4BzMLPLmr5bnZ3KkpZvOnn4e2VpLv3PUtXZTlp950vuJ97BOS6JFl0REREREZOoY9/OwOucedM4tcc4tdM7953j//rDFVwhelASntIkbfHqdykKvYJ1ekEltaxfr9zfQ0x+jP+b4zXOnHo3d0O4tulSUJOdhFRERERGRqWXcC9bJZnedX7CWJ0/BWpaXOVBkxlcILs/Poralm7/uPkp6qrFkeh73baw+5f00tHdTkJVGeqqeJiIiIiIiMv5UiQS060gb5fmZFGQlTy+kmbGk3BsWXBkfElyQydG2bv6y8yhnzZnGq86bw6aDzQM9xMNp6OjV/FUREREREYmMCtaAdte1HTcEN1msnFVIaV4GBVneNOXygixiDrYdbuHSRaXcuLqCFIP7Npy8l7WxvSfpzsEqIiIiIiJThwrWAJxzvFDbllQLLsW995ol/PLtl2Dmnfq2fNDiSpcsKqE8P4u1i8u4d0P1SU9x09DeQ7EWXBIRERERkYioYA2gpqWLtu4+FiXRKW3i8jLTmFOSM/Dz9IKsge2rZhUBcNPqSqqbOtlY1TTsfTR2qIdVRERERESio4I1gKLsDO5843lcuaw86qaMKN7DeuGC4oFFlK5ePp30VOOh52tO2N85R0N7DyUqWEVEREREJCIqWAPIzkjl8qXlA+c6TWZl+ZksKs/jpjUzB7YVZqezdnEZD2w6fMKw4M7efrr7YuphFRERERGRyKhgnSLSU1N45H2XcdPqyuO2v/jMGVQ3dbLpYPNx2xvaewA0h1VERERERCKjgnWKu3b5DNJSjAefP0xVQwev/PYT/Gpj9UDBqh5WERERERGJSlrUDZBoFeakc8miUu79WzX3PFvN0bZu6tu6+egNywEozk2e88uKiIiIiMjUoh5W4fqVFdS2dpOZlsLbXrSAF+raeXR7LQDTNCRYREREREQioh5W4aY1lTR29PD3Z80kOyOVu57Yx8/XVwFQrCHBIiIiIiISEfWwClnpqbztsoWUF2SRn5XOS86soKs3RopBQZaGBIuIiIiISDRUsMoJbjl3FuANB05JsYhbIyIiIiIiU5WGBMsJLpxfwqxp2WSnp0bdFBERERERmcJUsMoJUlKM229ZTUdPX9RNERERERGRKUwFqwzrooUlUTdBRERERESmOM1hFRERERERkaSkglVERERERESSkgpWERERERERSUoqWEVERERERCQpqWAVERERERGRpKSCVURERERERJKSClYRERERERFJSipYRUREREREJCmpYBUREREREZGkpIJVREREREREkpIKVhEREREREUlKKlhFREREREQkKalgFRERERERkaSkglVERERERESSkgpWERERERERSUoqWEVERERERCQpmXMu6jackpnVAftHuXspcDSBzZkqlGNwyjAcyjEcyjE4ZRgO5RicMgyHcgyHcgxOGXrmOufKhrsi6QvW02Fm651z50bdjolOOQanDMOhHMOhHINThuFQjsEpw3Aox3Aox+CU4cg0JFhERERERESSkgpWERERERERSUqTrWD9TtQNmCSUY3DKMBzKMRzKMThlGA7lGJwyDIdyDIdyDE4ZjmBSzWEVERERERGRyWOy9bCKjDszs6jbICIik5PeY0QmD72ex2ZCFaxmNiPqNkwGZjY96jZMdGa21MxeDOA0TGHMzGyumc2Juh0TnZllRd2Gic7MKnQgEZyZVZpZZtTtmOjMbKWZfQj0HjNWOmYMh44Zg9MxY3ATomA1s2wz+xLwWzP7opm9NOo2TURmlmdmXwQeMrNvm9nLom7TRONn+HngJ0BG1O2ZqPzX9BeBh4C7zOzt/vYJ8T8pWZhZrpl9B/i4mZX421R0nQYzyzSzbwJ/Br6j/4tj4/9v/ALea/oOM7vN367X9Gkwz+eAHwNpZpYedZsmGh0zhkPHjMHpmDE8E+WN5J+AMufcGuA+4DNmtijiNk0oZjYT+AHe3/wleAdn/xNpoyYYMysAfglc6pw72zn3q6jbNIG9C6h0zi0HPgG8B8A5F4uyUROJ36v6SeBSIB+4AvTp7RjcBFQ455YA9wOfNLMlEbdpQjGzSuBOvAOyS4BfAfHeQb2mT08ZUAGc45z7T+dcb9QNmoB0zBiQjhmD0zFjuJK2YDWzPP9rKjAN70AC59yfgXa8HoXC6Fo44XQBdzjn3u2cqwF+Dmw0s1URt2si6cL7B74FwMwuMbNrzWyx/3PSvp6ShZml+jkZsMnfXAk8YGbLomvZxGFmOf633cA3gRcBu4BzzGyhv496WU8h/v7ic0AdgH9A8VvgbWZWFEXbJhIzy/e/bQbe75x7p3OuDZgO3GdmZf5++t94CoNyBCgE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\n",
1653 | "text/plain": [
1654 | ""
1655 | ]
1656 | },
1657 | "metadata": {
1658 | "needs_background": "light"
1659 | },
1660 | "output_type": "display_data"
1661 | }
1662 | ],
1663 | "source": [
1664 | "np.cumsum(df['Acumulado']).plot(figsize = (16,8))"
1665 | ]
1666 | },
1667 | {
1668 | "cell_type": "code",
1669 | "execution_count": null,
1670 | "metadata": {},
1671 | "outputs": [],
1672 | "source": []
1673 | }
1674 | ],
1675 | "metadata": {
1676 | "kernelspec": {
1677 | "display_name": "Python 3",
1678 | "language": "python",
1679 | "name": "python3"
1680 | },
1681 | "language_info": {
1682 | "codemirror_mode": {
1683 | "name": "ipython",
1684 | "version": 3
1685 | },
1686 | "file_extension": ".py",
1687 | "mimetype": "text/x-python",
1688 | "name": "python",
1689 | "nbconvert_exporter": "python",
1690 | "pygments_lexer": "ipython3",
1691 | "version": "3.8.3"
1692 | }
1693 | },
1694 | "nbformat": 4,
1695 | "nbformat_minor": 2
1696 | }
1697 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Robô-Pivot-Point-Mt5-com-Python
2 |
3 | * Vídeo do código: https://youtu.be/mD7_zojami4
4 |
5 |
6 | Robôs Investidores para Metatrader 5, usando a estratégia de Pivot Point feito em python.
7 | Para que esse robô funcione você precisa ter algumas bibliotecas instaladas em seu python:
8 |
9 | pip install metatrader 5; pip install date time;pip install pandas, pip install numpy
10 |
11 | Ponts Pivot são sempre muito úteis para as operações, esta é uma maneira simples para se ter uma idéia de onde o mercado está indo durante o dia.
12 |
13 | O indicador também fornece as três primeiros suportes e resistências.
14 |
15 | As fórmulas que eu usei são:
16 |
17 | Resistência 3 = High + 2*(Pivot - Low)
18 |
19 | Resistência 2 = Pivot + (R1 - S1)
20 |
21 | Resistência 1 = 2 * Pivot - Low
22 |
23 | Pontos Pivô = ( High + Close + Low )/3
24 |
25 | Suporte 1 = 2 * Pivot - High
26 |
27 | Suporte 2 = Pivot - (R1 - S1)
28 |
29 | Suporte 3 = Low - 2*(High - Pivot)
30 |
31 | 
32 |
33 | Obs: Isso nao é uma indicação que essa é a melhor estrategia para negocioação, é a penas um estudo.
34 |
35 |
--------------------------------------------------------------------------------
/Robô Pivot point-Mt5-Python.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Criando Robô Pivot point "
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 1,
13 | "metadata": {},
14 | "outputs": [],
15 | "source": [
16 | "import MetaTrader5 as mt5\n",
17 | "from datetime import datetime\n",
18 | "import time\n",
19 | "import pandas as pd\n",
20 | "from pandas_datareader import data as pdr\n",
21 | "import numpy as np\n",
22 | "import matplotlib.pyplot as plt\n",
23 | "%matplotlib inline\n"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 49,
29 | "metadata": {},
30 | "outputs": [],
31 | "source": [
32 | "# estabelecemos a conexão ao MetaTrader 5\n",
33 | "# conecte-se ao MetaTrader 5\n",
34 | "if not mt5.initialize():\n",
35 | " print(\"initialize() Falha ao Iniciar seu metra Trade 5\")\n",
36 | " mt5.shutdown()"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": 50,
42 | "metadata": {},
43 | "outputs": [],
44 | "source": [
45 | "### Obtendo valores de ativos\n",
46 | "#tenho que fazer uma estrutura de repecticao para ficar gemrado os pontos de entrar e saida\n",
47 | "def get_ohlc(ativo, timeframe, n=5):\n",
48 | " ativo = mt5.copy_rates_from_pos(ativo,timeframe, 0, n)\n",
49 | " ativo = pd.DataFrame(ativo)\n",
50 | " ativo['time'] = pd.to_datetime(ativo['time'], unit='s')\n",
51 | " ativo['Pivot'] = (ativo['high'] + ativo['low'] + ativo['close'])/3\n",
52 | " ativo['R1'] = 2*ativo['Pivot'] - ativo['low']\n",
53 | " ativo['S1'] = 2*ativo['Pivot'] - ativo['high']\n",
54 | " ativo['R2'] = ativo['Pivot'] + (ativo['high'] - ativo['low'])\n",
55 | " ativo['S2'] = ativo['Pivot'] - (ativo['high'] - ativo['low'])\n",
56 | " ativo['R3'] = ativo['Pivot'] + 2*(ativo['high'] - ativo['low'])\n",
57 | " ativo['S3'] = ativo['Pivot'] - 2*(ativo['high'] - ativo['low'])\n",
58 | "\n",
59 | " \n",
60 | " ativo.set_index('time', inplace = True)\n",
61 | " return ativo"
62 | ]
63 | },
64 | {
65 | "cell_type": "code",
66 | "execution_count": 51,
67 | "metadata": {},
68 | "outputs": [],
69 | "source": [
70 | "ativo = (get_ohlc('ITUB4', mt5.TIMEFRAME_M5))"
71 | ]
72 | },
73 | {
74 | "cell_type": "code",
75 | "execution_count": 52,
76 | "metadata": {},
77 | "outputs": [
78 | {
79 | "data": {
80 | "text/html": [
81 | "\n",
82 | "\n",
95 | "
\n",
96 | " \n",
97 | " \n",
98 | " | \n",
99 | " open | \n",
100 | " high | \n",
101 | " low | \n",
102 | " close | \n",
103 | " tick_volume | \n",
104 | " spread | \n",
105 | " real_volume | \n",
106 | " Pivot | \n",
107 | " R1 | \n",
108 | " S1 | \n",
109 | " R2 | \n",
110 | " S2 | \n",
111 | " R3 | \n",
112 | " S3 | \n",
113 | "
\n",
114 | " \n",
115 | " time | \n",
116 | " | \n",
117 | " | \n",
118 | " | \n",
119 | " | \n",
120 | " | \n",
121 | " | \n",
122 | " | \n",
123 | " | \n",
124 | " | \n",
125 | " | \n",
126 | " | \n",
127 | " | \n",
128 | " | \n",
129 | " | \n",
130 | "
\n",
131 | " \n",
132 | " \n",
133 | " \n",
134 | " 2020-10-26 12:35:00 | \n",
135 | " 25.73 | \n",
136 | " 25.74 | \n",
137 | " 25.70 | \n",
138 | " 25.70 | \n",
139 | " 122 | \n",
140 | " 1 | \n",
141 | " 292200 | \n",
142 | " 25.713333 | \n",
143 | " 25.726667 | \n",
144 | " 25.686667 | \n",
145 | " 25.753333 | \n",
146 | " 25.673333 | \n",
147 | " 25.793333 | \n",
148 | " 25.633333 | \n",
149 | "
\n",
150 | " \n",
151 | " 2020-10-26 12:40:00 | \n",
152 | " 25.70 | \n",
153 | " 25.71 | \n",
154 | " 25.65 | \n",
155 | " 25.68 | \n",
156 | " 200 | \n",
157 | " 1 | \n",
158 | " 218900 | \n",
159 | " 25.680000 | \n",
160 | " 25.710000 | \n",
161 | " 25.650000 | \n",
162 | " 25.740000 | \n",
163 | " 25.620000 | \n",
164 | " 25.800000 | \n",
165 | " 25.560000 | \n",
166 | "
\n",
167 | " \n",
168 | " 2020-10-26 12:45:00 | \n",
169 | " 25.70 | \n",
170 | " 25.71 | \n",
171 | " 25.65 | \n",
172 | " 25.65 | \n",
173 | " 114 | \n",
174 | " 1 | \n",
175 | " 126900 | \n",
176 | " 25.670000 | \n",
177 | " 25.690000 | \n",
178 | " 25.630000 | \n",
179 | " 25.730000 | \n",
180 | " 25.610000 | \n",
181 | " 25.790000 | \n",
182 | " 25.550000 | \n",
183 | "
\n",
184 | " \n",
185 | " 2020-10-26 12:50:00 | \n",
186 | " 25.65 | \n",
187 | " 25.75 | \n",
188 | " 25.65 | \n",
189 | " 25.75 | \n",
190 | " 368 | \n",
191 | " 1 | \n",
192 | " 229400 | \n",
193 | " 25.716667 | \n",
194 | " 25.783333 | \n",
195 | " 25.683333 | \n",
196 | " 25.816667 | \n",
197 | " 25.616667 | \n",
198 | " 25.916667 | \n",
199 | " 25.516667 | \n",
200 | "
\n",
201 | " \n",
202 | " 2020-10-26 12:55:00 | \n",
203 | " 25.75 | \n",
204 | " 25.75 | \n",
205 | " 25.73 | \n",
206 | " 25.74 | \n",
207 | " 6 | \n",
208 | " 1 | \n",
209 | " 2700 | \n",
210 | " 25.740000 | \n",
211 | " 25.750000 | \n",
212 | " 25.730000 | \n",
213 | " 25.760000 | \n",
214 | " 25.720000 | \n",
215 | " 25.780000 | \n",
216 | " 25.700000 | \n",
217 | "
\n",
218 | " \n",
219 | "
\n",
220 | "
"
221 | ],
222 | "text/plain": [
223 | " open high low close tick_volume spread \\\n",
224 | "time \n",
225 | "2020-10-26 12:35:00 25.73 25.74 25.70 25.70 122 1 \n",
226 | "2020-10-26 12:40:00 25.70 25.71 25.65 25.68 200 1 \n",
227 | "2020-10-26 12:45:00 25.70 25.71 25.65 25.65 114 1 \n",
228 | "2020-10-26 12:50:00 25.65 25.75 25.65 25.75 368 1 \n",
229 | "2020-10-26 12:55:00 25.75 25.75 25.73 25.74 6 1 \n",
230 | "\n",
231 | " real_volume Pivot R1 S1 R2 \\\n",
232 | "time \n",
233 | "2020-10-26 12:35:00 292200 25.713333 25.726667 25.686667 25.753333 \n",
234 | "2020-10-26 12:40:00 218900 25.680000 25.710000 25.650000 25.740000 \n",
235 | "2020-10-26 12:45:00 126900 25.670000 25.690000 25.630000 25.730000 \n",
236 | "2020-10-26 12:50:00 229400 25.716667 25.783333 25.683333 25.816667 \n",
237 | "2020-10-26 12:55:00 2700 25.740000 25.750000 25.730000 25.760000 \n",
238 | "\n",
239 | " S2 R3 S3 \n",
240 | "time \n",
241 | "2020-10-26 12:35:00 25.673333 25.793333 25.633333 \n",
242 | "2020-10-26 12:40:00 25.620000 25.800000 25.560000 \n",
243 | "2020-10-26 12:45:00 25.610000 25.790000 25.550000 \n",
244 | "2020-10-26 12:50:00 25.616667 25.916667 25.516667 \n",
245 | "2020-10-26 12:55:00 25.720000 25.780000 25.700000 "
246 | ]
247 | },
248 | "execution_count": 52,
249 | "metadata": {},
250 | "output_type": "execute_result"
251 | }
252 | ],
253 | "source": [
254 | "#verifica se está calculando \n",
255 | "ativo"
256 | ]
257 | },
258 | {
259 | "cell_type": "markdown",
260 | "metadata": {},
261 | "source": [
262 | "### preparando a orden"
263 | ]
264 | },
265 | {
266 | "cell_type": "code",
267 | "execution_count": 53,
268 | "metadata": {},
269 | "outputs": [],
270 | "source": [
271 | "#testando se o ativo é valido \n",
272 | "symbol = 'ITUB4'\n",
273 | "symbol_info = mt5.symbol_info(symbol)\n",
274 | "if symbol_info is None:\n",
275 | " print(symbol, \"Não encontrato\")\n",
276 | " mt5.shutdown()\n",
277 | " quit()"
278 | ]
279 | },
280 | {
281 | "cell_type": "code",
282 | "execution_count": 54,
283 | "metadata": {},
284 | "outputs": [],
285 | "source": [
286 | "#adicionado symbol se nao existir\n",
287 | "if not symbol_info.visible:\n",
288 | " print('Symbol Não visivel, tentnado adicionar')\n",
289 | " if not mt5.symbol_select(symbol,True):\n",
290 | " print('symbol_select({{}})failed, exit', symbol)\n",
291 | " mt5.shutdown()\n",
292 | " quit()"
293 | ]
294 | },
295 | {
296 | "cell_type": "code",
297 | "execution_count": 55,
298 | "metadata": {},
299 | "outputs": [],
300 | "source": [
301 | "#preparando a ordem compra request e ordem de venda\n",
302 | "\n",
303 | "#########################################################\n",
304 | "#preparando a ordem \n",
305 | "lot = 100.0\n",
306 | "point = mt5.symbol_info(symbol).point\n",
307 | "price = mt5.symbol_info_tick(symbol).ask\n",
308 | "desviation = 1\n",
309 | "request = {\n",
310 | " \"action\": mt5.TRADE_ACTION_DEAL,\n",
311 | " \"symbol\": symbol,\n",
312 | " \"volume\": lot,\n",
313 | " \"type\": mt5.ORDER_TYPE_BUY,\n",
314 | " \"price\": price,\n",
315 | " \"magic\": 234000,\n",
316 | " \"desviation\": desviation,\n",
317 | " \"comment\": \"prython script open\",\n",
318 | " \"type_time\":mt5.ORDER_TIME_GTC,\n",
319 | " 'type_filling':mt5.ORDER_FILLING_RETURN,\n",
320 | " \n",
321 | " }"
322 | ]
323 | },
324 | {
325 | "cell_type": "code",
326 | "execution_count": 56,
327 | "metadata": {},
328 | "outputs": [],
329 | "source": [
330 | "#preparando a ordem de venda \n",
331 | "lot = 100.0\n",
332 | "point = mt5.symbol_info(symbol).point\n",
333 | "price=mt5.symbol_info_tick(symbol).bid\n",
334 | "desviation = 1\n",
335 | "request2={\n",
336 | " \"action\": mt5.TRADE_ACTION_DEAL,\n",
337 | " \"symbol\": symbol,\n",
338 | " \"volume\": lot,\n",
339 | " \"type\": mt5.ORDER_TYPE_SELL,\n",
340 | " \"price\": price,\n",
341 | " \n",
342 | " \"deviation\": desviation,\n",
343 | " \"magic\": 234000,\n",
344 | " \"comment\": \"python script close\",\n",
345 | " \"type_time\": mt5.ORDER_TIME_GTC,\n",
346 | " \"type_filling\": mt5.ORDER_FILLING_RETURN,\n",
347 | "}"
348 | ]
349 | },
350 | {
351 | "cell_type": "code",
352 | "execution_count": null,
353 | "metadata": {},
354 | "outputs": [],
355 | "source": [
356 | "#ENVIO de Ordem buy, APENAS UM TESTE PARA SABER SE A COMUNICAÇÃO ENTRE PYTHON E MT5 ESTÁ CORRETA...\n",
357 | "result = mt5.order_send(request)\n",
358 | "#verificando a resultado da execulção \n",
359 | "print(f'1. Ordem enviada:{lot} de {symbol} ao preço de {price} com desvio de {desviation}',end = '\\r')"
360 | ]
361 | },
362 | {
363 | "cell_type": "code",
364 | "execution_count": null,
365 | "metadata": {},
366 | "outputs": [
367 | {
368 | "name": "stdout",
369 | "output_type": "stream",
370 | "text": [
371 | "ITUB4 - ultimo valor: 25.48, Topo do Book C: 25.48,Topo do Book V: 25.49 False\r"
372 | ]
373 | }
374 | ],
375 | "source": [
376 | "# EXECULÇÃO DO BOT PIVOTPOINT \n",
377 | "# ANTES DE EXECUTAR ESSA CELULA CERTIFIQUE QUE NENHUMA ORDEM ESTEJA ABERTA.\n",
378 | "\n",
379 | "tempo = time.time() + 18000\n",
380 | "while time.time() < tempo:\n",
381 | " ativo = (get_ohlc('ITUB4', mt5.TIMEFRAME_M5))\n",
382 | " tick = mt5.symbol_info_tick('ITUB4')\n",
383 | " print (f'ITUB4 - ultimo valor: {tick.last}, Topo do Book C: {tick.bid},Topo do Book V: {tick.ask}', tick.last>ativo['Pivot'][-1 -1], end = '\\r')\n",
384 | " if tick.last> ativo['Pivot'][-1 -1]:\n",
385 | " if mt5.positions_get(symbol=\"ITUB4\") == () or mt5.positions_get(symbol=\"ITUB4\")[0][5] == 1:\n",
386 | " #enviadno ordem de compra \n",
387 | " result = mt5.order_send(request)\n",
388 | " print(f'1. Ordem COMPRA enviada:{lot} de {symbol} ao preço de {price} com desvio de {desviation}',end = '\\r')\n",
389 | "\n",
390 | " if tick.last