├── 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 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \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 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \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 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | "
OpenHighLowCloseVolumeDividendsStock Splits
Datetime
2021-01-21 10:05:00-03:0033.66000034.15000233.66000034.150002000
2021-01-21 10:10:00-03:0034.11000134.59999834.07000034.15000270190000
2021-01-21 10:15:00-03:0034.18000034.49000234.15000234.49000249420000
2021-01-21 10:20:00-03:0034.49000234.93000034.41000034.86000172150000
2021-01-21 10:25:00-03:0034.83000234.90000234.33000234.49000283580000
........................
2021-01-22 15:35:00-03:0033.68000033.84000033.66999833.79999912110000
2021-01-22 15:40:00-03:0033.81000133.86999933.74000233.8300028010000
2021-01-22 15:45:00-03:0033.84999833.86000133.65000233.6500029840000
2021-01-22 15:50:00-03:0033.65000233.77999933.65000233.7200016130000
2021-01-22 15:55:00-03:0033.73000033.90000233.70000133.74000222630000
\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 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \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 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | "
OpenHighLowCloseVolumeDividendsStock SplitsPivotR1S1R2S2R3S3
Datetime
2021-01-22 15:35:00-03:0033.68000033.84000033.66999833.7999991211000033.76999933.87000033.69999833.94000133.59999734.11000333.429995
2021-01-22 15:40:00-03:0033.81000133.86999933.74000233.830002801000033.81333433.88666733.75666933.94333133.68333734.07332933.553340
2021-01-22 15:45:00-03:0033.84999833.86000133.65000233.650002984000033.72000133.79000133.58000233.93000033.51000234.13999933.300003
2021-01-22 15:50:00-03:0033.65000233.77999933.65000233.720001613000033.71666733.78333333.65333633.84666433.58667033.97666233.456673
2021-01-22 15:55:00-03:0033.73000033.90000233.70000133.7400022263000033.78000133.86000233.66000133.98000233.58000134.18000333.380000
\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 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \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 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \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 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | "
OpenHighLowCloseVolumeDividendsStock SplitsPivotR1S1R2S2R3S3Compra pivotVenda S1Acumulado
Datetime
2021-01-21 10:05:00-03:0033.66000034.15000233.66000034.15000200033.98666834.31333533.82333434.47666933.49666634.96667133.006664NaNNaNNaN
2021-01-21 10:10:00-03:0034.11000134.59999834.07000034.1500027019000034.27333334.47666733.94666834.80333233.74333435.33333133.213336NaNNaNNaN
2021-01-21 10:15:00-03:0034.18000034.49000234.15000234.4900024942000034.37666834.60333534.26333534.71666834.03666835.05666933.696668NaNNaNNaN
2021-01-21 10:20:00-03:0034.49000234.93000034.41000034.8600017215000034.73333435.05666734.53666735.25333434.21333335.77333533.693333NaNNaNNaN
2021-01-21 10:25:00-03:0034.83000234.90000234.33000234.4900028358000034.57333534.81666834.24666835.14333534.00333535.71333433.433336NaNNaNNaN
......................................................
2021-01-22 15:35:00-03:0033.68000033.84000033.66999833.7999991211000033.76999933.87000033.69999833.94000133.59999734.11000333.429995NaNNaNNaN
2021-01-22 15:40:00-03:0033.81000133.86999933.74000233.830002801000033.81333433.88666733.75666933.94333133.68333734.07332933.553340NaNNaNNaN
2021-01-22 15:45:00-03:0033.84999833.86000133.65000233.650002984000033.72000133.79000133.58000233.93000033.51000234.13999933.300003NaNNaNNaN
2021-01-22 15:50:00-03:0033.65000233.77999933.65000233.720001613000033.71666733.78333333.65333633.84666433.58667033.97666233.456673NaNNaNNaN
2021-01-22 15:55:00-03:0033.73000033.90000233.70000133.7400022263000033.78000133.86000233.66000133.98000233.58000134.18000333.380000NaNNaNNaN
\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 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \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 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | "
OpenHighLowCloseVolumeDividendsStock SplitsPivotR1S1R2S2R3S3Compra pivotVenda S1Acumulado
Datetime
2021-01-22 15:35:00-03:0033.68000033.84000033.66999833.7999991211000033.76999933.87000033.69999833.94000133.59999734.11000333.4299950.146666014.6666
2021-01-22 15:40:00-03:0033.81000133.86999933.74000233.830002801000033.81333433.88666733.75666933.94333133.68333734.07332933.5533400.060002606.00026
2021-01-22 15:45:00-03:0033.84999833.86000133.65000233.650002984000033.72000133.79000133.58000233.93000033.51000234.13999933.300003-0.1633330.106668-5.66648
2021-01-22 15:50:00-03:0033.65000233.77999933.65000233.720001613000033.71666733.78333333.65333633.84666433.58667033.97666233.456673000
2021-01-22 15:55:00-03:0033.73000033.90000233.70000133.7400022263000033.78000133.86000233.66000133.98000233.58000134.18000333.3800000.023334502.33345
\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 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \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 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \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 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | "
OpenHighLowCloseVolumeDividendsStock SplitsPivotR1S1R2S2R3S3Compra pivotVenda S1Acumulado
Datetime
2021-01-21 10:05:00-03:0033.66000034.15000233.66000034.15000200033.98666834.31333533.82333434.47666933.49666634.96667133.0066640.37-0.49-12
2021-01-21 10:10:00-03:0034.11000134.59999834.07000034.1500027019000034.27333334.47666733.94666834.80333233.74333435.33333133.2133360.163334016.3334
2021-01-21 10:15:00-03:0034.18000034.49000234.15000234.4900024942000034.37666834.60333534.26333534.71666834.03666835.05666933.6966680.216668021.6668
2021-01-21 10:20:00-03:0034.49000234.93000034.41000034.8600017215000034.73333435.05666734.53666735.25333434.21333335.77333533.6933330.483332048.3332
2021-01-21 10:25:00-03:0034.83000234.90000234.33000234.4900028358000034.57333534.81666834.24666835.14333534.00333535.71333433.433336-0.2433320.0466652-19.6667
......................................................
2021-01-22 15:35:00-03:0033.68000033.84000033.66999833.7999991211000033.76999933.87000033.69999833.94000133.59999734.11000333.4299950.146666014.6666
2021-01-22 15:40:00-03:0033.81000133.86999933.74000233.830002801000033.81333433.88666733.75666933.94333133.68333734.07332933.5533400.060002606.00026
2021-01-22 15:45:00-03:0033.84999833.86000133.65000233.650002984000033.72000133.79000133.58000233.93000033.51000234.13999933.300003-0.1633330.106668-5.66648
2021-01-22 15:50:00-03:0033.65000233.77999933.65000233.720001613000033.71666733.78333333.65333633.84666433.58667033.97666233.456673000
2021-01-22 15:55:00-03:0033.73000033.90000233.70000133.7400022263000033.78000133.86000233.66000133.98000233.58000134.18000333.3800000.023334502.33345
\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": "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RERERESmOM1hFRERERERkaSkglVERERERESSkgpWERERERERSUoqWEVERERERCQpqWAVERERERGRpKSCVURERERERJKSClYRERERERFJSipYRUREREREJCmpYBUREREREZGkpIJVREREREREkpIKVhEREREREUlKKlhFREREREQkKalgFRERERERkaSkglVERERERESSkgpWERERERERSUoqWEVERERERCQpmXMu6jackpnVAftHuXspcDSBzZkqlGNwyjAcyjEcyjE4ZRgO5RicMgyHcgyHcgxOGXrmOufKhrsi6QvW02Fm651z50bdjolOOQanDMOhHMOhHINThuFQjsEpw3Aox3Aox+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 | ![Resultado](https://github.com/alissonf216/Robo-Pivot-Point-Mt5-com-Python/blob/main/ilustrac.png) 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 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \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 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \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 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | "
openhighlowclosetick_volumespreadreal_volumePivotR1S1R2S2R3S3
time
2020-10-26 12:35:0025.7325.7425.7025.70122129220025.71333325.72666725.68666725.75333325.67333325.79333325.633333
2020-10-26 12:40:0025.7025.7125.6525.68200121890025.68000025.71000025.65000025.74000025.62000025.80000025.560000
2020-10-26 12:45:0025.7025.7125.6525.65114112690025.67000025.69000025.63000025.73000025.61000025.79000025.550000
2020-10-26 12:50:0025.6525.7525.6525.75368122940025.71666725.78333325.68333325.81666725.61666725.91666725.516667
2020-10-26 12:55:0025.7525.7525.7325.7461270025.74000025.75000025.73000025.76000025.72000025.78000025.700000
\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