close

Блог им. Voldemar227

Скрипт отбора финансовых инструментов по цене

Друзья, всем привет!

Написал скрипт для обора финансовых инструментов по их цене в MetaTrader 5

В MetaTrader 5 открываем редактор кода и создаем скрипт, называем как удобно. Удаляем весь шаблонный код. Вставляем код который ниже опубликован, нажимаем компилировать. Скрипт появится в Навигаторе в разделе скрипты. Мышей перетаскиваем скрипт на любой график, вводим нужные данные в настройках и ждем завершения работы. Ну или можно скачать уже готовый по ссылке 

Если в выборке будет много финансовых инструментов, скрипт может долго работать 2-3 минуты. Он должен получить цены финансовых инструментов, а затем сравнить их с настройками. На загрузку цен одного фин. инструмента, я заложил 100мс. 


Логика работы скрипта:
1 — Загружаем максимум фин. инструментов, но не более 5000 (Ограничение на уровне терминала)
2 — Прокачиваем последние цены
3 — Сравниваем цены с указанными в настройках
4 — Не подходящие фин. инструменты убираем из обзора рынка.

Фин. инструменты по которым есть открытые позиции или графики, из окна обзор рынка, НЕ УДАЛЯЮТСЯ. Ограничение на уровне терминала.

Можно выбрать:
1 — Отбор из окна рынка Или из полного списка фин инструментов брокера
2 — Тип цены Аск, Бид, Ласт
3 — В диапазоне между Максимальной и Минимальной ценой

Скрипт отбора финансовых инструментов по цене


//+------------------------------------------------------------------+
//|                                                Отбор по цене.mq5 |
//|                                      Copyright 2026, Trading-Go. |
//|                                           https://trading-go.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Trading-Go."
#property link      "https://trading-go.ru/"
#property version   "26.030"

#property script_show_inputs
/*

Скрипт отбирает финансовые инструменты по их цене/стоимости
Что бы получить список финансовых инструментов в обзоре рынка в указанном диапазоне цен.

Фин инструменты по которым есть открытые позиции или графики, из окна обзор рынка, НЕ УДАЛЯЮТСЯ. Ораничение на уровне терминала.

Можно выбрать:
1 - Отбор из окна рынка Или из полного списка фин инструментов брокера
2 - Тип цены Аск, Бид, Ласт
3 - В диапазоне между Максимальной и минимальной ценой

*/
enum ENUM_SELECT_TYPE
  {
   eBrokersFull = 0, // Brokers Full
   eMarketWatch = 1  // Market Watch
  };
enum ENUM_SELECT_TYPE_PRICE
  {
   eAsk  = 0, // Ask
   eBid  = 1, // Bid
   eLast = 2  // Last
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
input ENUM_SELECT_TYPE       iSelectType      = eBrokersFull;   // Source of financial instruments (Источник финансовых инструментов)
input ENUM_SELECT_TYPE_PRICE iSelectTypePrice = eBid;           // Price type (Тип цены)
input double                 iPriceMax        = 200.0;          // Maximum price (Максимальная цена)
input double                 iPriceMin        = 100.0;          // Minimum price (Минимальная цена)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlTick tick = {}; // === Структура

   string name = "", symbols_all[];
   int counter = 0,  total = ::SymbolsTotal(iSelectType);

   for(int i = 0; i < total; i++) // === Идем по всем символам
      if((name = SymbolName(i, iSelectType)) != "")
         if(::SymbolSelect(name, true))
           {
            Sleep(100); // === Даем терминалу время прогрузить символ

            if(::ArrayResize(symbols_all, counter + 1, 5000)) // === Увеличиваем массив
               if((symbols_all[counter] = name) != "") // === Сохраняем имя
                 {
                  counter++; // === Счетчик инкрементируем
                  ::Print("Прогружаем цены ", name);
                 }
            if(i >= 4999)
              {
               ::Print("Достигли лимита 5000 символов");
               break;
              }
           }

//
// === Теперь выкидываем в топку не нужное
   for(int i = 0; i <::ArraySize(symbols_all); i++)
      if(::SymbolInfoTick(symbols_all[i], tick))
        {
         if(iSelectTypePrice == eBid)
            if(tick.bid > iPriceMax || tick.bid < iPriceMin)
               if(::SymbolSelect(symbols_all[i], false))
                  ::Print("Убрали ", symbols_all[i]);

         if(iSelectTypePrice == eAsk)
            if(tick.ask > iPriceMax || tick.ask < iPriceMin)
               if(::SymbolSelect(symbols_all[i], false))
                  ::Print("Убрали ", symbols_all[i]);

         if(iSelectTypePrice == eLast)
            if(tick.last > iPriceMax || tick.last < iPriceMin)
               if(::SymbolSelect(symbols_all[i], false))
                  ::Print("Убрали ", symbols_all[i]);


        }
  }
//+------------------------------------------------------------------+
283

Читайте на SMART-LAB:
Фото
EUR/USD в тисках: кто первый моргнет у критической отметки?
Европейская валюта протестировала нисходящую линию тренда (построенную по точкам 1 и 2), завершив торги в четверг паттерном «медвежье поглощение»....
Фото
Средние доходности облигаций в зависимости от кредитного рейтинга. От B- до AA+
👉 Наш канал в MAX 👈 👉 Чат Иволги в MAX 👈 Средние доходности облигаций в зависимости от рейтинга (бледные столбцы —...
Фото
Выработка электроэнергии в РФ в феврале 2026г. по Росстату и рекордный объем потребления энергии в 1 квартале 2026г.
Росстат представил данные по выработке электроэнергии в РФ в феврале 2026г.: 👉 выработка электроэнергии в РФ — 107,43 млрд кВт*ч. ( +1,7...
Фото
Прибыль Мосбиржи вернулась к росту?
По Мосбирже есть несколько признаков того, что отчет за 1 квартал будет неплохим. И в целом похоже, что прибыль от падения год к году перешла к...

теги блога Voldemar227

....все тэги



UPDONW
Новый дизайн