{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Import Libaries" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#!pip install ta_lib-0.6.5-cp311-cp311-win_amd64.whl" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#%pip install talib" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#!pip install ta\n", "from ta.trend import ADXIndicator, EMAIndicator\n", "from ta.momentum import RSIIndicator\n", "from talib import CDLHAMMER, CDLSHOOTINGSTAR" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import mplfinance as mpf\n", "import keyring as kr\n", "import MetaTrader5 as mt\n", "import requests\n", "import re\n", "from time import sleep\n", "import sqlite3 as db\n", "#import matplotlib.pyplot as plt\n", "import pandas_ta as ta\n", "import numpy as np\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from scipy.signal import savgol_filter\n", "from scipy.signal import find_peaks\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Login" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# login to your Trading Account - sign up in the description\n", "mt.initialize()\n", " \n", "login = 10800246\n", "server = 'VantageInternational-Demo'\n", "password = kr.get_password(server, str(login))\n", "\n", "\n", "mt.login(login, password, server)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'trading-demo'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "project = \"trading-\" + server[-4::1]\n", "project = project.lower()\n", "project" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Set symbol and volume" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "pause_trading = 0\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "symbols = ['XAUUSD']\n", "#symbols = ['BTCUSD']\n", "\n", "#'BTCUSD', 'ETHUSD', \n", " #'XRPUSD', , 'EURNZD', 'EURUSD'" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "volume_dict = {\n", " 'BTCUSD' : 0.1,\n", " 'BTCUSD_short' : 0.1,\n", "\n", " 'ETHUSD' : 1.0,\n", " 'ETHUSD_short' : 1.0,\n", " \n", " 'XRPUSD': 0.1,\n", " 'XRPUSD_short': 0.1,\n", "\n", " 'XAUUSD': 0.1,\n", " 'XAUUSD_short': 0.1,\n", "\n", " 'EURUSD': 0.1,\n", " 'EURUSD_short': 0.1,\n", "\n", " 'EURNZD': 0.1,\n", " 'EURNZD_short': 0.1,\n", "\n", "}" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "periods_dict = {\n", " 'BTCUSD' : ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " \n", " 'ETHUSD' : ['h1', 'm30', 'm15', 'm5', 'm1'],\n", "\n", " \n", " 'XRPUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " \n", " 'XAUUSD': [ 'm5'],\n", "\n", " \n", " 'EURUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", "\n", "\n", " 'EURNZD': ['m5', 'm2', 'm1'],\n", "\n", "}" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def get_symbol():\n", " global symbols, pause_trading, periods_dict\n", " pricemovement = {}\n", "\n", " for s in symbols:\n", " items = mt.symbol_info(s)\n", " pricemovement[s] = round(items.price_change,2)\n", " #print(s, round(items.price_change,2))\n", "\n", " #percentage = pricemovement[max(pricemovement, key=pricemovement.get)]\n", " #symbol = max(pricemovement, key=pricemovement.get)\n", " #volume = volume_dict[symbol]\n", "\n", " sorted_pricemovement = sorted(pricemovement.items(), key=lambda x:x[1], reverse=True)\n", " converted_dict = dict(sorted_pricemovement)\n", "\n", " print(converted_dict)\n", "\n", " percentage = converted_dict[max(converted_dict, key=converted_dict.get)]\n", " symbol = max(converted_dict, key=converted_dict.get)\n", " volume = volume_dict[symbol]\n", "\n", "\n", " print(symbol, percentage, volume)\n", " # if percentage > 0: # and percentage < 0.8:\n", " # periods_dict[symbol] = ['m15', 'm5', 'm2', 'm1']\n", " # elif percentage > 0.8:\n", " # periods_dict[symbol] = ['h1', 'm30', 'm15', 'm5', 'm1']\n", "\n", " #\n", "\n", " #print(periods_dict)\n", "\n", " # if percentage > 0 and mt.positions_total() == 0:\n", " # pause_trading = 0 #0 no puase\n", " # return symbol, percentage, volume, periods_dict\n", " # elif percentage < 0.1 and mt.positions_total() == 0:\n", " # print(\"aktuell kein neues Symbol, pause Trading\")\n", " # pause_trading = 1 #1 pause\n", " # return None\n", "\n", " return symbol, percentage, volume, periods_dict" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'XAUUSD': 0.93}\n", "XAUUSD 0.93 0.1\n" ] }, { "data": { "text/plain": [ "('XAUUSD',\n", " 0.93,\n", " 0.1,\n", " {'BTCUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'ETHUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'XRPUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'XAUUSD': ['m5'],\n", " 'EURUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'EURNZD': ['m5', 'm2', 'm1']})" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_symbol()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def set_symbol():\n", " global symbol, volume, volume_dict\n", " symb = get_symbol()\n", " if symb != None:\n", " symbol = symb[0]\n", " volume = volume_dict[symb[0]]\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## set volume manuell" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'XAUUSD': 0.93}\n", "XAUUSD 0.93 0.1\n" ] }, { "data": { "text/plain": [ "('XAUUSD',\n", " 0.93,\n", " 0.1,\n", " {'BTCUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'ETHUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'XRPUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'XAUUSD': ['m5'],\n", " 'EURUSD': ['h1', 'm30', 'm15', 'm5', 'm1'],\n", " 'EURNZD': ['m5', 'm2', 'm1']})" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_symbol()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'XAUUSD': 0.93}\n", "XAUUSD 0.93 0.1\n" ] } ], "source": [ "set_symbol()\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('XAUUSD', 0.1, 0)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symbol, volume, pause_trading" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Functions to place Orders on Market" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pos = mt.positions_get()\n", "for i in pos:\n", " #if i.comment == 'Retracement Bot':\n", " # print(i.ticket)\n", "\n", " if bool(re.search('^BuyStop[0-9]{2}', i.comment)):\n", " print(i.ticket)\n", "\n", "mt.positions_total()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "()\n" ] } ], "source": [ "strategy_name = 'Retracement Bot'\n", "pos = mt.positions_get()\n", "for p in pos:\n", " if p.comment == strategy_name:\n", " print(p.comment)\n", "print(pos)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Market Order Function" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def market_order(symbol, volume, order_type, deviation=20, magic=30, stoploss=0.0, take_profit=0.0,\n", " strategy_name='Retracement Bot'):\n", "\n", " global project, pause_trading\n", "\n", " project_id_dict = {\n", " 'trading-demo': 'a3f3ae',\n", " 'trading-live': '747543'\n", " }\n", "\n", " order_type_dict = {\n", " 'buy': mt.ORDER_TYPE_BUY,\n", " 'sell': mt.ORDER_TYPE_SELL\n", " }\n", "\n", " price_dict = {\n", " 'buy': mt.symbol_info_tick(symbol).ask,\n", " 'sell': mt.symbol_info_tick(symbol).bid\n", " }\n", "\n", " buypos = []\n", "\n", " pos = mt.positions_get()\n", " for p in pos:\n", " if p.comment == strategy_name:\n", " buypos.append('true')\n", " \n", " activepos = buypos.count('true')\n", "\n", " if order_type == 'buy' and activepos == 0 and pause_trading == 0: # and mt.positions_total() == 0:\n", " \n", " request = {\n", " \"action\": mt.TRADE_ACTION_DEAL,\n", " \"symbol\": symbol,\n", " \"volume\": volume, # FLOAT\n", " \"type\": order_type_dict[order_type],\n", " \"price\": price_dict[order_type],\n", " \"sl\": stoploss, # FLOAT\n", " \"tp\": take_profit, # FLOAT\n", " \"deviation\": deviation, # INTERGER\n", " \"magic\": magic, # INTERGER\n", " \"comment\": strategy_name,\n", " \"type_time\": mt.ORDER_TIME_GTC,\n", " \"type_filling\": mt.ORDER_FILLING_IOC, # mt.ORDER_FILLING_FOK if IOC does not work\n", " }\n", "\n", " requests.post('https://api.mynotifier.app', {\n", " \"apiKey\": 'beafb52e-3cb6-477a-92ef-2f10bff50e20',\n", " \"message\": \"Es wrude ein Handel eröffnet!\",\n", " \"description\": \"Bitte kontrolliere die Position\",\n", " \"type\": \"info\",#\"info\", # info, error, warning or success\n", " \"project\": project_id_dict[project]\n", " })\n", "\n", " order_result = mt.order_send(request)\n", " #return (order_result)\n", " \n", " elif order_type == 'sell' and mt.positions_total() > 0:\n", " pos = mt.positions_get()\n", " for p in pos:\n", " if p.comment == strategy_name:\n", " # while schleife ?\n", " positions = mt.positions_get()\n", " ticket = p.ticket\n", " request = {\n", " \"action\": mt.TRADE_ACTION_DEAL,\n", " \"symbol\": symbol,\n", " \"volume\": volume, # FLOAT\n", " \"type\": order_type_dict[order_type],\n", " \"price\": price_dict[order_type],\n", " \"position\": ticket,\n", " \"sl\": stoploss, # FLOAT\n", " \"tp\": take_profit, # FLOAT\n", " \"deviation\": deviation, # INTERGER\n", " \"magic\": magic, # INTERGER\n", " \"comment\": strategy_name,\n", " \"type_time\": mt.ORDER_TIME_GTC,\n", " \"type_filling\": mt.ORDER_FILLING_IOC, # mt.ORDER_FILLING_FOK if IOC does not work\n", " }\n", "\n", " requests.post('https://api.mynotifier.app', {\n", " \"apiKey\": 'beafb52e-3cb6-477a-92ef-2f10bff50e20',\n", " \"message\": \"Es wrude ein Handel geschlossen!\",\n", " \"description\": \"Bitte prüfe die Position\",\n", " \"type\": \"info\",#\"info\", # info, error, warning or success\n", " \"project\": project_id_dict[project]\n", " })\n", "\n", " order_result = mt.order_send(request)\n", " #return (order_result)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Trend Detection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## timefame & trend dictionary" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "debug = False" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "trend_dict = {\n", " 'm5': '',\n", " #'m10': '',\n", " #'m15': '',\n", " #'m30': '',\n", " #'h4': '',\n", "}" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "timeframes_dict = {\n", " 'm1': mt.TIMEFRAME_M1,\n", " 'm2': mt.TIMEFRAME_M2,\n", " 'm3': mt.TIMEFRAME_M3,\n", " 'm5': mt.TIMEFRAME_M5,\n", " 'm15': mt.TIMEFRAME_M15,\n", " 'm20': mt.TIMEFRAME_M20,\n", " 'm30': mt.TIMEFRAME_M30,\n", " 'h1': mt.TIMEFRAME_H1,\n", " 'h4': mt.TIMEFRAME_H4,\n", "}\n", "\n", "\n", "# timeframes = {\n", "# 'm1': mt.TIMEFRAME_M1,\n", "# 'm2': mt.TIMEFRAME_M2,\n", "# 'm3': mt.TIMEFRAME_M3,\n", "# 'm5': mt.TIMEFRAME_M5,\n", "# 'm15': mt.TIMEFRAME_M15,\n", "# 'm20': mt.TIMEFRAME_M20,\n", "# 'm30': mt.TIMEFRAME_M30,\n", "# 'h1': mt.TIMEFRAME_H1,\n", "# }" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'m5': ''}\n" ] } ], "source": [ "print(trend_dict)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "def get_rates(periode):\n", "\n", " global symbol\n", "\n", " ohlc = mt.copy_rates_from_pos(symbol, timeframes_dict[periode], 0, 300)\n", " df = pd.DataFrame(ohlc)\n", " df['time']=pd.to_datetime(df['time'], unit='s')\n", "\n", " #df = df[[\"time\",\"open\",\"high\",\"low\",\"close\"]]\n", "\n", " df[\"open\"] = df.open.astype(float)\n", " df[\"high\"] = df.high.astype(float)\n", " df[\"low\"] = df.low.astype(float)\n", " df[\"close\"] = df.close.astype(float)\n", "\n", " ## Take the rolling atr so the yaxis doesn't shake too much \n", " df[\"atr\"] = ta.atr(high=df.high, low=df.low, close=df.close)\n", " df[\"atr\"] = df.atr.rolling(window=30).mean()\n", "\n", "\n", " df.set_index(\"time\", inplace = True)\n", "\n", " return df" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | open | \n", "high | \n", "low | \n", "close | \n", "tick_volume | \n", "spread | \n", "real_volume | \n", "atr | \n", "
|---|---|---|---|---|---|---|---|---|
| time | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| 2025-08-28 22:00:00 | \n", "3420.04 | \n", "3420.35 | \n", "3419.77 | \n", "3419.85 | \n", "1045 | \n", "20 | \n", "0 | \n", "NaN | \n", "
| 2025-08-28 22:05:00 | \n", "3419.82 | \n", "3420.01 | \n", "3418.74 | \n", "3418.90 | \n", "1057 | \n", "20 | \n", "0 | \n", "NaN | \n", "
| 2025-08-28 22:10:00 | \n", "3418.93 | \n", "3419.20 | \n", "3418.27 | \n", "3418.62 | \n", "1003 | \n", "20 | \n", "0 | \n", "NaN | \n", "
| 2025-08-28 22:15:00 | \n", "3418.62 | \n", "3419.81 | \n", "3418.55 | \n", "3419.69 | \n", "1218 | \n", "20 | \n", "0 | \n", "NaN | \n", "
| 2025-08-28 22:20:00 | \n", "3419.67 | \n", "3420.01 | \n", "3419.15 | \n", "3419.17 | \n", "956 | \n", "20 | \n", "0 | \n", "NaN | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 2025-08-29 23:35:00 | \n", "3447.78 | \n", "3448.55 | \n", "3447.18 | \n", "3448.21 | \n", "546 | \n", "20 | \n", "0 | \n", "1.968904 | \n", "
| 2025-08-29 23:40:00 | \n", "3448.21 | \n", "3449.35 | \n", "3447.78 | \n", "3449.17 | \n", "421 | \n", "20 | \n", "0 | \n", "1.961315 | \n", "
| 2025-08-29 23:45:00 | \n", "3449.15 | \n", "3449.18 | \n", "3447.64 | \n", "3447.90 | \n", "578 | \n", "20 | \n", "0 | \n", "1.955341 | \n", "
| 2025-08-29 23:50:00 | \n", "3447.86 | \n", "3448.36 | \n", "3447.68 | \n", "3448.22 | \n", "467 | \n", "20 | \n", "0 | \n", "1.947173 | \n", "
| 2025-08-29 23:55:00 | \n", "3448.20 | \n", "3448.91 | \n", "3447.97 | \n", "3448.87 | \n", "228 | \n", "20 | \n", "0 | \n", "1.938756 | \n", "
300 rows × 8 columns
\n", "| \n", " | time | \n", "open | \n", "high | \n", "low | \n", "close | \n", "tick_volume | \n", "spread | \n", "real_volume | \n", "ema21 | \n", "ema50 | \n", "rsi9 | \n", "rsi14 | \n", "trend | \n", "atr | \n", "adx | \n", "fast_signal | \n", "standard_signal | \n", "optimized_signal | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "2025-08-28 05:25:00 | \n", "3386.52 | \n", "3386.74 | \n", "3385.71 | \n", "3386.64 | \n", "714 | \n", "20 | \n", "0 | \n", "3386.640000 | \n", "3386.640000 | \n", "NaN | \n", "NaN | \n", "3385.220875 | \n", "NaN | \n", "NaN | \n", "0 | \n", "0 | \n", "0 | \n", "
| 1 | \n", "2025-08-28 05:30:00 | \n", "3386.75 | \n", "3386.98 | \n", "3385.81 | \n", "3385.85 | \n", "985 | \n", "20 | \n", "0 | \n", "3386.113333 | \n", "3386.201111 | \n", "NaN | \n", "NaN | \n", "3386.775285 | \n", "NaN | \n", "NaN | \n", "0 | \n", "0 | \n", "0 | \n", "
| 2 | \n", "2025-08-28 05:35:00 | \n", "3385.86 | \n", "3387.38 | \n", "3384.59 | \n", "3387.17 | \n", "1151 | \n", "20 | \n", "0 | \n", "3386.717143 | \n", "3386.598197 | \n", "NaN | \n", "NaN | \n", "3388.065491 | \n", "NaN | \n", "NaN | \n", "0 | \n", "0 | \n", "0 | \n", "
| 3 | \n", "2025-08-28 05:40:00 | \n", "3387.12 | \n", "3388.36 | \n", "3386.82 | \n", "3388.18 | \n", "798 | \n", "20 | \n", "0 | \n", "3387.497333 | \n", "3387.134038 | \n", "NaN | \n", "NaN | \n", "3389.112151 | \n", "NaN | \n", "NaN | \n", "0 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "2025-08-28 05:45:00 | \n", "3388.16 | \n", "3390.56 | \n", "3387.94 | \n", "3390.46 | \n", "947 | \n", "20 | \n", "0 | \n", "3389.026452 | \n", "3388.123436 | \n", "NaN | \n", "NaN | \n", "3389.935928 | \n", "NaN | \n", "NaN | \n", "0 | \n", "0 | \n", "0 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 495 | \n", "2025-08-29 23:40:00 | \n", "3448.21 | \n", "3449.35 | \n", "3447.78 | \n", "3449.17 | \n", "421 | \n", "20 | \n", "0 | \n", "3448.743230 | \n", "3448.456881 | \n", "56.591716 | \n", "56.452748 | \n", "3448.267585 | \n", "2.002968 | \n", "15.874639 | \n", "1 | \n", "0 | \n", "0 | \n", "
| 496 | \n", "2025-08-29 23:45:00 | \n", "3449.15 | \n", "3449.18 | \n", "3447.64 | \n", "3447.90 | \n", "578 | \n", "20 | \n", "0 | \n", "3448.321615 | \n", "3448.345505 | \n", "50.150670 | \n", "52.209309 | \n", "3447.941698 | \n", "1.969899 | \n", "15.547755 | \n", "-1 | \n", "-1 | \n", "0 | \n", "
| 497 | \n", "2025-08-29 23:50:00 | \n", "3447.86 | \n", "3448.36 | \n", "3447.68 | \n", "3448.22 | \n", "467 | \n", "20 | \n", "0 | \n", "3448.270808 | \n", "3448.320404 | \n", "51.708684 | \n", "53.164605 | \n", "3447.570685 | \n", "1.877764 | \n", "15.244220 | \n", "-1 | \n", "0 | \n", "0 | \n", "
| 498 | \n", "2025-08-29 23:55:00 | \n", "3448.20 | \n", "3448.91 | \n", "3447.97 | \n", "3448.87 | \n", "228 | \n", "20 | \n", "0 | \n", "3448.570404 | \n", "3448.430323 | \n", "54.927801 | \n", "55.126747 | \n", "3447.156651 | \n", "1.810780 | \n", "15.232676 | \n", "1 | \n", "0 | \n", "0 | \n", "
| 499 | \n", "2025-09-01 01:00:00 | \n", "3444.73 | \n", "3449.27 | \n", "3444.67 | \n", "3445.14 | \n", "245 | \n", "20 | \n", "0 | \n", "3446.855202 | \n", "3447.772258 | \n", "38.401814 | \n", "43.789528 | \n", "3446.701703 | \n", "2.010010 | \n", "14.843679 | \n", "-1 | \n", "-1 | \n", "0 | \n", "
500 rows × 18 columns
\n", "