Есть ли такие функции, чтобы получать все названия инструментов? Например есть ДЦ, у которых таких инструментов болше 100, а то 200. Как получать данные по ним для анализа? Нужно ли непосредственно в советник вписывать конкретные названия, или возможно в ходе работы советника узнать это?
- Шаблоны и профили - Дополнительные возможности - Графики котировок, технический и фундаментальный анализ
- Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы
- Спреды - Для продвинутых пользователей - Торговые операции
Уважаемые разработчики, подобная тема всплывает уже который раз, может быть стоит добавить такие функции, для определения набора торгуемых инструментов :)
Пожалуй, только вести свой собственный реестр. Мне это понадобилось для генерации уникальных 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+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь