请问有没有简洁高效的方法将平台上可交易的所有货币对的货币名称添加到一个数组中?

 

string symbol[];

symbol[0] = "EUR";symbol[1]="USD";//......

这样一个个添加进去显然太差劲了。。。。。。

 

参考这个2个函数

SymbolsTotal()
SymbolName()
 

做个rates

import pandas as pd

# 货币创建清单
sym = ['AUDUSD','EURUSD','GBPUSD','NZDUSD','USDCAD','USDCHF','USDJPY','USDSGD','USDNOK','USDSEK',
'AUDCAD', 'AUDCHF', 'AUDNZD', 'AUDJPY',
'CADCHF', 'CADJPY', 'CHFJPY',
'EURAUD', 'EURCAD', 'EURCHF', 'EURGBP', 'EURNZD', 'EURJPY', 'EURNOK', 'EURSEK',
'GBPAUD', 'GBPCAD', 'GBPCHF', 'GBPNZD', 'GBPJPY', 'GBPSGD', 'GBPNOK', 'GBPSEK',
'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDSGD', 'SGDJPY']


# 将数据复制到数据帧
d = pd.DataFrame()


for i in sym:


rates = mt5.copy_rates_from_pos(i, mt5.TIMEFRAME_M15, 0, 100)

print(rates,rates.shape)#[时间0、开盘价1、最高价2、最低价3、收盘价4、交易量5、0、0]

d[i] = [y[4] for y in rates]  #调取第4位收盘价

 
Oliver Hao:

string symbol[];

symbol[0] = "EUR";symbol[1]="USD";//......

这样一个个添加进去显然太差劲了。。。。。。

按Ctrl+U,把需要交易的品种加入市场报价的列表。下面的程序会把所有市场报价里的交易品种放入数组。

int OnInit()
  {
   int numberOfSymbols;       //市场中的交易品种数量
   string fSymbols[];         //市场中的交易品种列表

   numberOfSymbols = SymbolsTotal(true);
   ArrayResize(fSymbols, numberOfSymbols);
  
   for (int i=0; i< numberOfSymbols; i++)
     {
      fSymbols[i] = SymbolName(i, true);
     }
  }
 
Oliver Hao:

string symbol[];

symbol[0] = "EUR";symbol[1]="USD";//......

这样一个个添加进去显然太差劲了。。。。。。

使用SymbolsTotal(false)获取全部,再SymbolName(i,false)获取名称字符串,再SymbolInfoInteger(tempsymbol,SYMBOL_TRADE_MODE)判断是否可交易。OK。
 
Lin Luo:
使用SymbolsTotal(false)获取全部,再SymbolName(i,false)获取名称字符串,再SymbolInfoInteger(tempsymbol,SYMBOL_TRADE_MODE)判断是否可交易。OK。

正解!

原因: