简体   繁体   中英

How to get weekly data on Python MetaTrader 5

I'm developing a script to get historical data. I'm trying to get weekly data but MetaTrader 5 is returning an empty dataframe. I'm using:

import MetaTrader5 as mt5
import pandas as pd

mt5.initialize()

ticks = mt5.copy_rates_range(
    'WIN$N', 
    mt5.TIMEFRAME_W1, 
    datetime(2022, 2, 28),
    datetime(2022, 3, 4)
)

print (pd.DataFrame(ticks))

Why I'm getting an empty dataframe? Using this script with Minutes or Hourly data it works perfectly. I try to look at MT5 documentation but there is none example using WEEKLY or MONTLHY data.

The solution to get weekly and monthly data is (change WIN$N for your stock):

years = [2001, 2002, 2003, 2004, 2005,
        2006, 2007, 2008, 2009, 2010,
        2011, 2012, 2013, 2014, 2015,
        2016, 2017, 2018, 2019, 2020,
        2021]

months = [1, 2, 3, 4, 5, 6,
         7, 8, 9, 10, 11, 12]

timeframes = {
    'W1' : 1  | 0x8000,
    'MN1': 1  | 0xC000
}        

    
for year in years:
    for month in months:
        for timeframe in timeframes:
            path = day.strftime("data/" + str(timeframe) + "/%Y/%m")
            os.makedirs(path, exist_ok=True)
            # request tick data
            if month != 12:
                ticks = mt5.copy_rates_range(
                    'WIN$N', 
                    timeframes[timeframe], 
                    datetime(year, month, 1), 
                    datetime(year, month + timedelta(month=1), 1)
                )
                ticks = pd.DataFrame(ticks)
                ticks.to_csv(path + "/" + str(year) + '_' + str(month) + ".csv")
            else:
                ticks = mt5.copy_rates_range(
                    'WIN$N', 
                    timeframes[timeframe], 
                    datetime(year, month, 1), 
                    datetime(year, month, calendar.monthrange(ano,mes)[1])
                )
                ticks = pd.DataFrame(ticks)
                ticks.to_csv(path + "/" + str(year) + '_' + str(month) + ".csv")
            

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM