我正试图修改我的代码,使其循环通过"符号";列表,从MT5中提取数据,并为每个项目创建panda数据帧。目前,只有当我具体说明一个特定的货币对时,它才有效,在本例中是AUDCAD。
我想要来自";AUDCAD";以保存为熊猫数据帧Table_;AUDCHF";如表2;AUDJPY";如table_3等。因此,我可以简单地随意添加或删除符号列表中的货币对,而不是为每对重复代码。
import MetaTrader5 as mt5
import pandas as pd
mt5.initialize() # connect to MetaTrader 5
Symbols = ['AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'AUDUSD', 'CADCHF', 'CADJPY', 'CHFJPY', 'GBPAUD', 'GBPCAD',
'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'EURAUD', 'EURCAD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURNZD',
'EURUSD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY']
AUD_CAD = mt5.copy_rates_from_pos("AUDCAD", mt5.TIMEFRAME_D1, 0, 100)
Table_1 = pd.DataFrame(AUD_CAD)[["time", "open", "high", "low", "close"]]
只需将核心逻辑放在一个循环中,迭代符号列表:
import MetaTrader5 as mt5
import pandas as pd
mt5.initialize() # connect to MetaTrader 5
symbols = ['AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'AUDUSD', 'CADCHF', 'CADJPY', 'CHFJPY', 'GBPAUD', 'GBPCAD',
'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'EURAUD', 'EURCAD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURNZD',
'EURUSD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY']
prices = {}
for symbol in symbols:
data = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_D1, 0, 100)
prices[symbol] = pd.DataFrame(data)[["time", "open", "high", "low", "close"]]
请注意,我更改了您的变量名,包括使它们以小写字母开头。值得遵循的约定建议为类和其他类型名称保留以大写字母开头的名称。
运行此代码后,您将在prices
字典中获得所有符号的价格。然后,您可以通过获得特定符号的价格
gbpnzd_prices = prices['GBPNZD']