Есть ли такие функции, чтобы получать все названия инструментов? Например есть ДЦ, у которых таких инструментов болше 100, а то 200. Как получать данные по ним для анализа? Нужно ли непосредственно в советник вписывать конкретные названия, или возможно в ходе работы советника узнать это?
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
- Размер плеча по инструменту
Уважаемые разработчики, подобная тема всплывает уже который раз, может быть стоит добавить такие функции, для определения набора торгуемых инструментов :)
Пожалуй, только вести свой собственный реестр. Мне это понадобилось для генерации уникальных Magic_Number'ов. Собрал и перенумеровал все разные инструменты с различных ДЦ. Всего получилось около 200. Найду больше - добавлю в перечень.
alexjou:
"Всего получилось около 200. Найду больше - добавлю в перечень."
Можете ли поделиться?
"Всего получилось около 200. Найду больше - добавлю в перечень."
Можете ли поделиться?
Сделал так:
По правой кнопке в окне "Обзор рынка" нажать "Показать все символы".
Далее там же "Набор символов - Сохранить как". Файл переместить в папку "Эксперты\файлы".
И зачитывать программно из этого файла:
По правой кнопке в окне "Обзор рынка" нажать "Показать все символы".
Далее там же "Набор символов - Сохранить как". Файл переместить в папку "Эксперты\файлы".
И зачитывать программно из этого файла:
string title="all_syms";
string symbols[];
int syms_cnt = 283;
...
ArrayResize( symbols, syms_cnt);
int handle=FileOpen("all.csv", FILE_CSV|FILE_READ);
if (handle<=0)
{
MessageBox("handle<=0",title,MB_OK|MB_ICONINFORMATION);
return(0);
}
for (int i=0; i<syms_cnt; i++)
{
symbols[i] = FileReadString(handle);
if (symbols[i] == "") break;
}
FileClose(handle);
А могла бы быть функция какая.
Напомните, как по названию получить массивы данных - цен открытия, закрытия, макс., мин., времени баров?
Думаю, это поможет - https://www.mql5.com/ru/search?utm_campaign=MQL4.community
int GetUniqueMagicNumber()
{
bool unknown_symbol;
int n_pair, acc_num, unique_magicnum;
//----
unknown_symbol = false;
// нумеруем инструменты, по которым собираемся работать
//
// валютные пары (1 - 79)
// основной список валютных пар (1 - 47)
if (Symbol() == "EURUSD") { n_pair = 1; }
else if (Symbol() == "USDJPY") { n_pair = 2; }
else if (Symbol() == "GBPUSD") { n_pair = 3; }
else if (Symbol() == "USDCHF") { n_pair = 4; }
else if (Symbol() == "AUDBGN") { n_pair = 5; }
else if (Symbol() == "AUDCAD") { n_pair = 6; }
else if (Symbol() == "AUDCHF") { n_pair = 7; }
else if (Symbol() == "AUDJPY") { n_pair = 8; }
else if (Symbol() == "AUDNZD") { n_pair = 9; }
else if (Symbol() == "AUDUSD") { n_pair = 10; }
else if (Symbol() == "BGNJPY") { n_pair = 11; }
else if (Symbol() == "CADBGN") { n_pair = 12; }
else if (Symbol() == "CADCHF") { n_pair = 13; }
else if (Symbol() == "CADJPY") { n_pair = 14; }
else if (Symbol() == "CHFBGN") { n_pair = 15; }
else if (Symbol() == "CHFJPY") { n_pair = 16; }
else if (Symbol() == "CHFNOK") { n_pair = 17; }
else if (Symbol() == "CHFSEK") { n_pair = 18; }
else if (Symbol() == "EURAUD") { n_pair = 19; }
else if (Symbol() == "EURCAD") { n_pair = 20; }
else if (Symbol() == "EURCHF") { n_pair = 21; }
else if (Symbol() == "EURGBP") { n_pair = 22; }
else if (Symbol() == "EURJPY") { n_pair = 23; }
else if (Symbol() == "EURNOK") { n_pair = 24; }
else if (Symbol() == "EURNZD") { n_pair = 25; }
else if (Symbol() == "EURSEK") { n_pair = 26; }
else if (Symbol() == "GBPAUD") { n_pair = 27; }
else if (Symbol() == "GBPBGN") { n_pair = 28; }
else if (Symbol() == "GBPCAD") { n_pair = 29; }
else if (Symbol() == "GBPCHF") { n_pair = 30; }
else if (Symbol() == "GBPJPY") { n_pair = 31; }
else if (Symbol() == "GBPNOK") { n_pair = 32; }
else if (Symbol() == "GBPNZD") { n_pair = 33; }
else if (Symbol() == "GBPSEK") { n_pair = 34; }
else if (Symbol() == "NZDBGN") { n_pair = 35; }
else if (Symbol() == "NZDCAD") { n_pair = 36; }
else if (Symbol() == "NZDCHF") { n_pair = 37; }
else if (Symbol() == "NZDDKK") { n_pair = 38; }
else if (Symbol() == "NZDJPY") { n_pair = 39; }
else if (Symbol() == "NZDSEK") { n_pair = 40; }
else if (Symbol() == "NZDUSD") { n_pair = 41; }
else if (Symbol() == "USDBGN") { n_pair = 42; }
else if (Symbol() == "USDCAD") { n_pair = 43; }
else if (Symbol() == "USDDKK") { n_pair = 44; }
else if (Symbol() == "USDNOK") { n_pair = 45; }
else if (Symbol() == "USDSEK") { n_pair = 46; }
else if (Symbol() == "USDZAR") { n_pair = 47; }
//
// дополнительный список валютных пар N 1 (48 - 56)
else if (Symbol() == "CADDKK") { n_pair = 48; }
else if (Symbol() == "CADNOK") { n_pair = 49; }
else if (Symbol() == "CHFCAD") { n_pair = 50; }
else if (Symbol() == "EURRUR") { n_pair = 51; }
else if (Symbol() == "EURZAR") { n_pair = 52; }
else if (Symbol() == "GBPILS") { n_pair = 53; }
else if (Symbol() == "GBPZAR") { n_pair = 54; }
else if (Symbol() == "USDRUR") { n_pair = 55; }
else if (Symbol() == "USDSGD") { n_pair = 56; }
//
// дополнительный список валютных пар N 2 (56 - 79)
//
// futures_Russia (80 - 99)
// (временно, до переопределения константы N_Pair_Max)
else if (Symbol() == "fDIZL") { n_pair = 80; }
else if (Symbol() == "fEERU") { n_pair = 81; }
else if (Symbol() == "fGAZR") { n_pair = 82; }
else if (Symbol() == "fGMKR") { n_pair = 83; }
else if (Symbol() == "fGOLD") { n_pair = 84; }
else if (Symbol() == "fLKOH") { n_pair = 85; }
else if (Symbol() == "fROSN") { n_pair = 86; }
else if (Symbol() == "fRTKM") { n_pair = 87; }
else if (Symbol() == "fRTS") { n_pair = 88; }
else if (Symbol() == "fSBER") { n_pair = 89; }
else if (Symbol() == "fSNGR") { n_pair = 90; }
else if (Symbol() == "fSi") { n_pair = 91; }
else if (Symbol() == "fUR") { n_pair = 92; }
//
// драгоценные металлы на споте (100 - 109)
else if (Symbol() == "GOLD") { n_pair = 100; }
else if (Symbol() == "SILVER") { n_pair = 101; }
else if (Symbol() == "PALLADIUM") { n_pair = 102; }
else if (Symbol() == "PLATINUM") { n_pair = 103; }
//
// CFD_New York (110 - 149)
else if (Symbol() == "#AA") { n_pair = 110; }
else if (Symbol() == "#AIG") { n_pair = 111; }
else if (Symbol() == "#AXP") { n_pair = 112; }
else if (Symbol() == "#BA") { n_pair = 113; }
else if (Symbol() == "#C") { n_pair = 114; }
else if (Symbol() == "#CAT") { n_pair = 115; }
else if (Symbol() == "#DD") { n_pair = 116; }
else if (Symbol() == "#DIA") { n_pair = 117; }
else if (Symbol() == "#DIS") { n_pair = 118; }
else if (Symbol() == "#EK") { n_pair = 119; }
else if (Symbol() == "#GE") { n_pair = 120; }
else if (Symbol() == "#GM") { n_pair = 121; }
else if (Symbol() == "#HD") { n_pair = 122; }
else if (Symbol() == "#HON") { n_pair = 123; }
else if (Symbol() == "#HPQ") { n_pair = 124; }
else if (Symbol() == "#IBM") { n_pair = 125; }
else if (Symbol() == "#INTC") { n_pair = 126; }
else if (Symbol() == "#JNJ") { n_pair = 127; }
else if (Symbol() == "#JPM") { n_pair = 128; }
else if (Symbol() == "#KO") { n_pair = 129; }
else if (Symbol() == "#MCD") { n_pair = 130; }
else if (Symbol() == "#MMM") { n_pair = 131; }
else if (Symbol() == "#MO") { n_pair = 132; }
else if (Symbol() == "#MRK") { n_pair = 133; }
else if (Symbol() == "#MSFT") { n_pair = 134; }
else if (Symbol() == "#PFE") { n_pair = 135; }
else if (Symbol() == "#PG") { n_pair = 136; }
else if (Symbol() == "#QQQ") { n_pair = 137; }
else if (Symbol() == "#SBC") { n_pair = 138; }
else if (Symbol() == "#SPY") { n_pair = 139; }
else if (Symbol() == "#T") { n_pair = 140; }
else if (Symbol() == "#UTX") { n_pair = 141; }
else if (Symbol() == "#VZ") { n_pair = 142; }
else if (Symbol() == "#WMT") { n_pair = 143; }
else if (Symbol() == "#XOM") { n_pair = 144; }
//
// CFD_Russia (150 - 179)
else if (Symbol() == "EESR") { n_pair = 150; }
else if (Symbol() == "GAZP") { n_pair = 151; }
else if (Symbol() == "GMKN") { n_pair = 152; }
else if (Symbol() == "LKOH") { n_pair = 153; }
else if (Symbol() == "MTSI") { n_pair = 154; }
else if (Symbol() == "RBCI") { n_pair = 155; }
else if (Symbol() == "ROSN") { n_pair = 156; }
else if (Symbol() == "RTKM") { n_pair = 157; }
else if (Symbol() == "SBER") { n_pair = 158; }
else if (Symbol() == "SNGZ") { n_pair = 159; }
else if (Symbol() == "TATN") { n_pair = 160; }
else if (Symbol() == "URSI") { n_pair = 161; }
//
// CFD Russia "B"
else if (Symbol() == "CHMF") { n_pair = 170; }
else if (Symbol() == "NLMK") { n_pair = 171; }
else if (Symbol() == "OGKE") { n_pair = 172; }
else if (Symbol() == "PLZL") { n_pair = 173; }
else if (Symbol() == "SIBN") { n_pair = 174; }
else if (Symbol() == "SPTLT") { n_pair = 175; }
else if (Symbol() == "TRNF") { n_pair = 176; }
//
// CFD Russia_2
else if (Symbol() == "AVAZ") { n_pair = 177; }
else if (Symbol() == "LSNG") { n_pair = 178; }
else if (Symbol() == "MSNG") { n_pair = 179; }
//
// indexes & oil (180 - 199)
else if (Symbol() == "CAC40") { n_pair = 180; }
else if (Symbol() == "DAX") { n_pair = 181; }
else if (Symbol() == "DJI") { n_pair = 182; }
else if (Symbol() == "NQ100") { n_pair = 183; }
else if (Symbol() == "NQCOMP") { n_pair = 184; }
else if (Symbol() == "S&P500") { n_pair = 185; }
//
// indexes Russia
else if (Symbol() == "MICEX") { n_pair = 190; }
else if (Symbol() == "RTSI") { n_pair = 191; }
//
// oil
else if (Symbol() == "Brent") { n_pair = 195; }
else if (Symbol() == "LightSweet") { n_pair = 196; }
//
/*
// futures_Russia (200 - 220)
// (требуется переопределить константу N_Pair_Max > 200)
else if (Symbol() == "fDIZL") { n_pair = 200; }
else if (Symbol() == "fEERU") { n_pair = 201; }
else if (Symbol() == "fGAZR") { n_pair = 202; }
else if (Symbol() == "fGMKR") { n_pair = 203; }
else if (Symbol() == "fGOLD") { n_pair = 204; }
else if (Symbol() == "fLKOH") { n_pair = 205; }
else if (Symbol() == "fROSN") { n_pair = 206; }
else if (Symbol() == "fRTKM") { n_pair = 207; }
else if (Symbol() == "fRTS") { n_pair = 208; }
else if (Symbol() == "fSBER") { n_pair = 209; }
else if (Symbol() == "fSNGR") { n_pair = 210; }
else if (Symbol() == "fSi") { n_pair = 211; }
else if (Symbol() == "fUR") { n_pair = 212; }
//
*/
// неизвестный инструмент
else
{
unknown_symbol = true;
n_pair = MathRound(MathRand() / 100);
Print(Symbol(), ": Неизвестный инструмент. " +
"Будет сгенерирован случайный магический номер.");
}
// ----
// вычисляем "волшебное число" ордеров на данном символе и тайм-фрейме
if (!IsTesting()) { acc_num = AccountNumber(); }
else { acc_num = 16384; }
//
// получаем магическое число
unique_magicnum = acc_num + n_pair + Period();
//
// если неизвестный инструмент, возвращаем отрицательное магическое число
if (unknown_symbol == true) { unique_magicnum = -unique_magicnum; }
//----
return(unique_magicnum);
}
Примечание: Функция была написана тогда, когда оператор switch ... case не вполне коррекктно работал со строками. Этим объясняется его отсутствие. С тех пор я не стал ничего менять.
Уважаемые разработчики, подобная тема всплывает уже который раз, может быть стоит добавить такие функции, для определения набора торгуемых инструментов :)
Разрешите полюбопытствовать, как Вы себе представляете такую функцию? Я не в плане подколки, а чисто с практической стороны, как реализовать такое. Будет ли она содержать массив абсолютно всех инструментов, или по группам? Как оттуда доставать элемент? Просто пока что я не вижу больших преимуществ от тотального перебора всех инструментов торговли. Обычно трейдер знает, какие валюты он хочет проанализировать, а это легко решается уже существующими методами.
Спасибо.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь