簡體   English   中英

試圖從幾種資產的 MT5 中獲取歷史數據

[英]Trying to get historical data from MT5 of several assets

我正在學習 python。 我試圖從 MT5 獲取多只股票的歷史數據,但是股票的 arrays 有不同的長度,我不知道如何解決它。

錯誤:ValueError:值的長度(71)與索引的長度(100)不匹配

from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import pandas as pd
from time import sleep
from pathlib import Path
import os
import glob
import numpy as np
import matplotlib.pyplot as plt
import MetaTrader5 as mt5
from datetime import datetime


if not mt5.initialize():
    print("initialize() failed, error code =", mt5.last_error())
    quit()


s = Service(ChromeDriverManager().install())
wd = webdriver.Chrome(service=s)

wd.get("https://sistemaswebb3-listados.b3.com.br/indexPage/day/IBRA?language=pt-br")
sleep(3)
wd.find_element(By.ID,"segment").send_keys("Setor de Atuação")
sleep(3)
wd.find_element(By.PARTIAL_LINK_TEXT,"Download").click()
sleep(3)


list_of_files = glob.glob("C:/Users/xxxxx/Downloads/*") # * means all if need specific format then *.csv
latest_file = max(list_of_files, key=os.path.getctime)


lista= pd.read_csv(latest_file, sep=';', encoding='ISO-8859-1',skiprows = 0, skipfooter=2, engine='python', thousands='.',decimal=',', header=1, index_col=False)
ativos = pd.DataFrame(lista)

lista = ativos['Código']
df = pd.DataFrame()
for i in lista:
    barras = mt5.copy_rates_from(i, mt5.TIMEFRAME_D1, datetime.today(), 100)
    df[i] = barras['close']

print(df)

我可以這樣解決:


for i in lista:
    barras = mt5.copy_rates_from(i, mt5.TIMEFRAME_D1, datetime.today(), 100)
    df[i] = pd.Series([y['close'] for y in barras])
    df[i]= df[i].fillna(0)


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM