Скачать MetaTrader 5

MarketWatch (Обзор рынка), общий список - const?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 способен создавать собственные графические инструменты?
Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.01 06:55 

При получении имени символа из общего списка MarkerWatch:

SymbolName(pos,false)

(при значении false, символ берется из общего списка) можно ожидать, что во время работы терминала этот самый список будет постоянным и не будет изменяться во-времени? Другими словами, пусть в общем списке при старте терминала на позиции "9" будет символ "AUDUSD.m". А будет ли этот-же символ на позиции "9" через некоторой промежуток времени (до следующей перезагрузки терминала)?

Renat Akhtyamov
4829
Renat Akhtyamov 2015.05.01 07:24  
Karputov Vladimir:

При получении имени символа из общего списка MarkerWatch:

(при значении false, символ берется из общего списка) можно ожидать, что во время работы терминала этот самый список будет постоянным и не будет изменяться во-времени? Другими словами, пусть в общем списке при старте терминала на позиции "9" будет символ "AUDUSD.m". А будет ли этот-же символ на позиции "9" через некоторой промежуток времени (до следующей перезагрузки терминала)?

В чем смысл отслеживания позиции пары в обзоре рынка?

// Сколько мультивалютников переделал, никогда не задавался вопросом о том, чтобы наименование символа совпадало с нужным. В мультиэкспертах главное определиться - мажор/кросс...

Ihor Herasko
9051
Ihor Herasko 2015.05.01 09:54  
Думаю, что не обязательно. Ведь у пользователя (и у других программ) есть возможность удалить какие-то символы из окна, а потом вновь добавить. В итоге позиция будет изменена. Не стоит рассчитывать на постоянство. Ведь со списком ордеров работаем, каждый раз полностью его перебирая. И здесь также.
Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.01 11:57  
Игорь Герасько:
Думаю, что не обязательно. Ведь у пользователя (и у других программ) есть возможность удалить какие-то символы из окна, а потом вновь добавить. В итоге позиция будет изменена. Не стоит рассчитывать на постоянство. Ведь со списком ордеров работаем, каждый раз полностью его перебирая. И здесь также.

Так я вот, чтобы защититься от таких изменений и интересуюсь полным списком (а не тем списком, который отображается в окне "Обзор рынка"). Полный список - это список из котрого можно получить имя элемента через :

SymbolName(pos,false)
Renat Akhtyamov
4829
Renat Akhtyamov 2015.05.01 13:34  
Karputov Vladimir:

Так я вот, чтобы защититься от таких изменений и интересуюсь полным списком (а не тем списком, который отображается в окне "Обзор рынка"). Полный список - это список из котрого можно получить имя элемента через :

лучше перебрать все и заполнить строковый массив. для этого нужно знать общее количество и выбросить неинтересующие символы.
Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.01 14:03  
new-rena:
лучше перебрать все и заполнить строковый массив. для этого нужно знать общее количество и выбросить неинтересующие символы.

Я пока проверяю гипотезу о постоянстве общего списка. Не на каждом тике делаю делаю две проверки: изменился ли размер общего списка и если размер не изменился, то проверяю все ли символы на своих местах. Вот прицепил советника:

//+------------------------------------------------------------------+
//|                                           MarketWatchISconst.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property description "MarketWatch (Market), a common list - const or not?"
//---
int      total=0;
string   market_watch[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Returns the number of available symbols.
   total=SymbolsTotal(false);
   Print("The number of available symbols ",total);
//--- New size for the first dimension
   ArrayResize(market_watch,total);
//--- Filling an array
   for(int i=0;i<total;i++)
      market_watch[i]=SymbolName(i,false);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static long  tic;
//--- We check not on each tic
   if(tic%21==0)
     {
      Print("checkup");
      int temp_total=SymbolsTotal(false);
      if(temp_total!=total)
         Alert("The size of the list of available symbols has changed!");
      else
        {
         for(int i=0;i<total;i++)
           {
            if(market_watch[i]!=SymbolName(i,false))
               Alert("The symbol of available symbols has changed!");
           }
        }
     }
   tic++;
  }
//+------------------------------------------------------------------+
Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.01 17:46  
Отработал советник уже почти пять часов - общий список символов стабильный и все элементы на своих местах. Похоже общий список можно использовать в качестве индекса несколькими индикаторами на разных графиках.
Andrey Khatimlianskii
56185
Andrey Khatimlianskii 2015.05.05 22:06  
Karputov Vladimir:
Отработал советник уже почти пять часов - общий список символов стабильный и все элементы на своих местах. Похоже общий список можно использовать в качестве индекса несколькими индикаторами на разных графиках.
А если двигать инструменты в обзоре рынка?
Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.06 07:28  
Andrey Khatimlianskii:
А если двигать инструменты в обзоре рынка?
Проверил. Никакие действия по ручному удалению/добавлению инструментов в "Обзоре рынка" не влияют на общий список терминала и на расположение символов в этом общем списке. 
Andrey Khatimlianskii
56185
Andrey Khatimlianskii 2015.05.06 12:00  
Karputov Vladimir:
Проверил. Никакие действия по ручному удалению/добавлению инструментов в "Обзоре рынка" не влияют на общий список терминала и на расположение символов в этом общем списке. 

Тогда только брокер может поменять на сервере. И не факт, что без перезагрузки терминала он подгрузится в терминал.

Все равно не понятно, зачем надеяться на статичность списка. 

Vladimir Karputov
Модератор
46015
Vladimir Karputov 2015.05.06 12:09  
Andrey Khatimlianskii:

Тогда только брокер может поменять на сервере. И не факт, что без перезагрузки терминала он подгрузится в терминал.

...

Жду точной формулировки от Сервисдеска - пока не совсем ясно ситуация: на сервере поменяли список, а вот когда пользователь это увидит - сразу или только в случае переподключения к торговому серверу.

Andrey Khatimlianskii:

...

Все равно не понятно, зачем надеяться на статичность списка. 

Номер символа в списке можно использовать в глобальной переменной (а вот напрямую сохранять тип string в глобальной переменной вероятно будет довольно затратно) и таким образом общаться между независимыми (не потомками одного класса) индикаторами на разных графиках.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий