почему-то MarketInfo(symbol,...) не возвращает цену для неосновной пары - страница 5

 
ОК. Понятно.
 

Уважаемый, Ренат.

Возможно я, действительно, параноик, и вижу проблему там, где ее нет... Раньше эти дела я относил к разряду брокерских "сюрпризов" и специально не фиксировал.. Просто старался меньше пользоваться этой функцией...

Но если вы считаете, что отсутствие данных при вызове функции МаркетИнфо, каким-то образом задевает достоинство программы МТ4, то значит Вам и ответ держать, в случаи документального подтверждения....

Не откладывая дело в долгий ящик, написал простенькую функцию ввиде индикатора, которая подаст сигнал при отсутствии данных по какому-либо инструменту..

//+------------------------------------------------------------------+
//|                                                   Marketinfo.mq4 |
//|                                         Copyright © 2008, Kharko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Kharko"
#property link      ""

#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   string      
         Para[]={"EURUSD","EURGBP","EURCHF","EURJPY","EURAUD","EURCAD","EURNZD",
                 "GBPUSD","USDCHF","USDJPY","AUDUSD","USDCAD","NZDUSD","GBPCHF",
                 "GBPJPY","GBPAUD","GBPCAD","CHFJPY","AUDCHF","CADCHF",
                 "NZDCHF","AUDJPY","CADJPY","NZDJPY","AUDCAD","AUDNZD","NZDCAD"},
         Mode[]={"","MODE_LOW","MODE_HIGH","","","MODE_TIME","","","","MODE_BID",
                 "MODE_ASK","MODE_POINT","MODE_DIGITS","MODE_SPREAD","MODE_STOPLEVEL",
                 "MODE_LOTSIZE","MODE_TICKVALUE","MODE_TICKSIZE","MODE_SWAPLONG",
                 "MODE_SWAPSHORT","MODE_STARTING","MODE_EXPIRATION","MODE_TRADEALLOWED",
                 "MODE_MINLOT","MODE_LOTSTEP","MODE_MAXLOT","MODE_SWAPTYPE","MODE_PROFITCALCMODE",
                 "MODE_MARGINCALCMODE","MODE_MARGININIT","MODE_MARGINMAINTENANCE",
                 "MODE_MARGINHEDGED","MODE_MARGINREQUIRED","MODE_FREEZELEVEL"};
   int
         KolPara  = 27;

//----
   if(!IsConnected())return(1);
   if(MarketInfo(Symbol(),MODE_TRADEALLOWED) != 1)return(1);

   for(int i=0;i<KolPara;i++)
   {
      for(int j=0;j<34;j++)
      {
         if(j==0 || j==3 || j==4 || j==6 || j==7 || j==8 || j==20 || j==21 || j==26 || 
//            j==27 || j==28 || j==29 || j==30) continue;
            j==27 || j==28 || j==29 || j==30 || j==33) continue; // Блокировка MODE_FREEZELEVEL, j=33
         if(MarketInfo(Para[i],j)==0)
         {
            Alert("MarketInfo("+Para[i]+","+Mode[j]+") = "+MarketInfo(Para[i],j));
         }
      }
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Как видите, ничего криминального... Перечисляем инструменты и запросы по ним... Некоторые запросы блокируются., т.к. либо отсутствуют либо выдают нули...

Первый вопрос: почему запрос MODE_FREEZELEVEL равен 0... (Соответствующий лог прилагается)...

Смотрим справку:

MODE_FREEZELEVEL 33 Уровень заморозки ордеров в пунктах. Если цена исполнения находится в пределах, определяемых уровнем заморозки, то ордер не может быть модифицирован, отменен или закрыт.

Возможно брокер не применяет заморозку?

Файлы:
 
kharko писал(а) >>

Первый вопрос: почему запрос MODE_FREEZELEVEL равен 0... (Соответствующий лог прилагается)...

Смотрим справку:

MODE_FREEZELEVEL 33 Уровень заморозки ордеров в пунктах. Если цена исполнения находится в пределах, определяемых уровнем заморозки, то ордер не может быть модифицирован, отменен или закрыт.

Возможно брокер не применяет заморозку?

Наверное потому что... так и есть на самом деле...

;)))

Вот спецификации как пример реального примения,

и там довольно много таки нолей...

(обратите внимание на дату актуальности)

 

Попробовал другого брокера... картина та же... по всем инструментам на запрос MODE_FREEZELEVEL выдает 0...

Что-то здесь не так... Брокер после 2 января должен работать в прежнем режиме.... Во всяком случае, спреды уже восстановлены к прежним значениям...

 
kharko писал(а) >>

Попробовал другого брокера... картина та же... по всем инструментам на запрос MODE_FREEZELEVEL выдает 0...

Что-то здесь не так... Брокер после 2 января должен работать в прежнем режиме.... Во всяком случае, спреды уже восстановлены к прежним значениям...

Кхм... у "маво" брокера наоборот, на праздники нулики поубавились,

а так, в обычные дни их и поболее бывало... или бывает...

 
Мало ДЦ используют FreezeLevel. Есть более эффективные способы слить клиента, начиная со StopLevel и спреда (многие были свидетелями в конце прошлого года...) и кончая фантазией шеф-дилера.
 

Я понимаю, что хочется в чем-то уличить брокера. Но в данном случае Вы в очередной раз ошиблись. Не использует брокер уровень заморозки - так радуйтесь этому.


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


Топикстарте пояснил, что изначальный вопрос про бид-аск равные нулю по чужому символу были в тестере. А это правильное поведение тестера. То есть, вопрос с маркетинфо закрыт.

Причина обращения: