Как получить весь список валютных пар в терминале????

  • Автор темы Автор темы ld73
  • Дата начала Дата начала

ld73

Активный участник
Всем доброго!
Может есть спецы по mt4, подскажите есть ли возможность получить весь список валютных пар, что-то я никак в доке этого найти не могу....

Заранее всем спасибо!
 

Вложения

  • 11.JPG
    11.JPG
    28,8 КБ · Просмотры: 133

supervisor

Местный житель
надо кликнуть правой кнопкой мыши на этот список и выбрать Forex all
 

ld73

Активный участник
надо кликнуть правой кнопкой мыши на этот список и выбрать Forex all

:) ну вот, модератор не понял о чем я спрашивал, речь не идет о клике мышкой по терминалу, я вообще-то спрашивал тех кто кодит в МТ4.

Можно ли путем встроенных функций МТ4 получить этот список в коде эксперта или индюка??????
 

Юлия

Главный редактор
Как спросили, так он и понял. А вы спросили не в той ветке. Объясните, что хотите точнее и мы вас перенесем в нужное пространство форума.
 

Юрий FT

Модератор
Вот так:
Код:
Expand Collapse Copy
string Currencies[] = {"AED", "AUD", "BHD", "BRL", "CAD", "CHF", "CNY", 
                       "CYP", "CZK", "DKK", "DZD", "EEK", "EGP", "EUR",
                       "GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR",
                       "IQD", "IRR", "ISK", "JOD", "JPY", "KRW", "KWD",
                       "LBP", "LTL", "LVL", "LYD", "MAD", "MXN", "MYR",
                       "NOK", "NZD", "OMR", "PHP", "PLN", "QAR", "RON",
                       "RUB", "SAR", "SEK", "SGD", "SKK", "SYP", "THB",
                       "TND", "TRY", "TWD", "USD", "VEB", "XAG", "XAU",
                       "YER", "ZAR", "_","DJI","DXY","ES","GC","NQ","QG","QM","SI"}; 
string Symbols[];

int pars()
  {
colpars=(CreateSymbolList());
for(int  x=colpars-1;x>=0;x--)
{
Print(Symbols[x]);
}
 }

int CreateSymbolList()
   {
    int SymbolCount = 0;
    int CurrencyCount = ArrayRange(Currencies, 0);
    int Loop, SubLoop;
    string TempSymbol;
    for(Loop = 0; Loop < CurrencyCount; Loop++)
      for(SubLoop = 0; SubLoop < CurrencyCount; SubLoop++)
         {
          TempSymbol = Currencies[Loop] + Currencies[SubLoop];
          if(MarketInfo(TempSymbol, MODE_BID) > 0)
            {
             ArrayResize(Symbols, SymbolCount + 1);
             Symbols[SymbolCount] = TempSymbol;
             SymbolCount++;
            }
         }
    return(SymbolCount);
}
 

ld73

Активный участник
Вот так:
Код:
Expand Collapse Copy
string Currencies[] = {"AED", "AUD", "BHD", "BRL", "CAD", "CHF", "CNY", 
                       "CYP", "CZK", "DKK", "DZD", "EEK", "EGP", "EUR",
                       "GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR",
                       "IQD", "IRR", "ISK", "JOD", "JPY", "KRW", "KWD",
                       "LBP", "LTL", "LVL", "LYD", "MAD", "MXN", "MYR",
                       "NOK", "NZD", "OMR", "PHP", "PLN", "QAR", "RON",
                       "RUB", "SAR", "SEK", "SGD", "SKK", "SYP", "THB",
                       "TND", "TRY", "TWD", "USD", "VEB", "XAG", "XAU",
                       "YER", "ZAR", "_","DJI","DXY","ES","GC","NQ","QG","QM","SI"}; 
string Symbols[];

int pars()
  {
colpars=(CreateSymbolList());
for(int  x=colpars-1;x>=0;x--)
{
Print(Symbols[x]);
}
 }

int CreateSymbolList()
   {
    int SymbolCount = 0;
    int CurrencyCount = ArrayRange(Currencies, 0);
    int Loop, SubLoop;
    string TempSymbol;
    for(Loop = 0; Loop < CurrencyCount; Loop++)
      for(SubLoop = 0; SubLoop < CurrencyCount; SubLoop++)
         {
          TempSymbol = Currencies[Loop] + Currencies[SubLoop];
          if(MarketInfo(TempSymbol, MODE_BID) > 0)
            {
             ArrayResize(Symbols, SymbolCount + 1);
             Symbols[SymbolCount] = TempSymbol;
             SymbolCount++;
            }
         }
    return(SymbolCount);
}

Эх....
А ведь я такое сам могу и делаю, а хотелось просто автоматом получить валютные пары текущего брокера, чтобы не заниматься постоянным пополнением самопального массива.
По ходу в МТ4 этой фишки просто нет, может в МТ5 объявиться.
 

costy

Активный участник
PHP:
Expand Collapse Copy
int SymbolsList(string &Symbols[], bool Selected)
{  string SymbolsFileName;   
   if(Selected) SymbolsFileName = "symbols.sel";
   else         SymbolsFileName = "symbols.raw";
   int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
   if(hFile < 0) return(-1);
   if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116;  }
   else         { SymbolsNumber = FileSize(hFile) / 1936;      Offset = 1924; }
   ArrayResize(Symbols, SymbolsNumber);
   if(Selected) FileSeek(hFile, 4, SEEK_SET);
   for(int i = 0; i < SymbolsNumber; i++)
   { Symbols[i] = FileReadString(hFile, 12);
      FileSeek(hFile, Offset, SEEK_CUR);   }
   FileClose(hFile);
   return(SymbolsNumber);
}

PHP:
Expand Collapse Copy
int start(){
string SymbolsList[];
if(SymbolsList(SymbolsList, true) > 0)
int pos = Bars-IndicatorCounted() ;  
if(Индикатор==0){
while(pos >= 0) 
{ ma1_buffer[pos] = (iMA(SymbolsList[0], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE ))-iMA(SymbolsList[0], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[0],MODE_POINT);
  ma2_buffer[pos] = (iMA(SymbolsList[1], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE ))-iMA(SymbolsList[1], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[1],MODE_POINT);
  ma3_buffer[pos] = (iMA(SymbolsList[2], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE ))-iMA(SymbolsList[2], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[2],MODE_POINT);
  ma4_buffer[pos] = (iMA(SymbolsList[3], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE ))-iMA(SymbolsList[3], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[3],MODE_POINT);
  ma5_buffer[pos] = (iMA(SymbolsList[4], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE ))-iMA(SymbolsList[4], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[4],MODE_POINT);
  ma6_buffer[pos] = (iMA(SymbolsList[5], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE ))-iMA(SymbolsList[5], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[5],MODE_POINT);
  ma7_buffer[pos] = (iMA(SymbolsList[6], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE ))-iMA(SymbolsList[6], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[6],MODE_POINT);
  ma8_buffer[pos] = (iMA(SymbolsList[7], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE ))-iMA(SymbolsList[7], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[7],MODE_POINT); pos--;}}
Пробуйте =))
Пример _http://codebase.mql4.com/ru/6287
 

ld73

Активный участник
PHP:
Expand Collapse Copy
Пробуйте =))
Пример _http://codebase.mql4.com/ru/6287[/QUOTE]
Спасибо, но такие способы мне и самому известны. Я надеялся что все-таки в пору своей невнимательности, просто упустил из виду функцию в mt4 для получения этого самого списка. 
Так что будем ждать появление mt5.
 

ld73

Активный участник
Раз появились заинтересованные, то в да гонку задам еще вопросец, вдруг кто-то уже сталкивался с этим и нашел решение...
И так, все мы используем индикаторы в экспертах, так вот порой в индюках происходит ошибка №4066, казалось бы не фатальная и самое смешное что индикатор отрабатывает текущий цикл, но на этом все тишина, т.е. попытки его реанимировать безуспешны, данная проблема легко решается когда индикатор прикреплен к графику, т.е. вы его передергиваете или вновь кидаете на график.
Но как быть в коде программы???? Может есть способ его выгружать при подобной ошибке?
 

Mahesvara

Интересующийся
Верх