Баг в функции SymbolInfoDouble() ??? - страница 3

 
В общем пока точно вижу зависимость от того к какому торговому счёту подключаться... Пока смотрю дальше.
 
barabashkakvn:

Я имел в виду переключаться меджу разными торговыми счетами - т.е. переключаться между разными торговыми организациями.

 

После переключения на другой торговый счёт получил результат в нулём:

0 18:10:25.499 test_expert EURUSD,Weekly: uninit reason 6

0 18:10:25.531 test_expert EURUSD,Weekly: Symbol: GBPUSD, digits:4, Ask:1.5627, Bid:1.5624, TickValue:0

0 18:10:25.531 test_expert EURUSD,Weekly: Symbol: EURUSD, digits:4, Ask:1.2229, Bid:1.2227, TickValue:0

0 18:10:25.531 test_expert EURUSD,Weekly: Symbol: USDJPY, digits:2, Ask:119.56, Bid:119.53, TickValue:0

0 18:10:25.531 test_expert EURUSD,Weekly: Symbol: EURGBP, digits:4, Ask:0.7828, Bid:0.7825, TickValue:0

0 18:10:25.531 test_expert EURUSD,Weekly: Symbol: GBPJPY, digits:2, Ask:186.81, Bid:186.73, TickValue:0

0 18:10:25.531 test_expert EURUSD,Weekly: initialized

 Здесь нужно подумать, но скорее всего следует проверять готовность окружения.

Для меня странно то, что параметры Ask/Bid которые меняются чаще чем tick value даются нормально, а tick value которая меняется реже (если вообще меняется) выдает черт знает что.

Готовность окружения? это что?

Для меня уже вопрос принципа. Если предоставлена функция, то она должна либо возвращать адекватное значение, либо генерить ошибку, указывая программеру на какую-то исключительную ситуацию, которую ему самому нужно обработать.

Здесь же мы имеем абсолютный 0 в плане качества реализации данного функционала. Ни ошибок, ни адекватного значения. В MQ одни индусы работают что ли?

Прошу прощения за резкость. Ни к кому лично претензий нет, но как же я удивлен... и разочарован.

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

А его теперь фиг получишь, ну то есть уверенности нет в правильном значении. Следовательно робастность расчета под угрозой, это влияет на стабильность работы и качество конечного продукта в целом.

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

 
elugovoy:

Для меня странно то, что параметры Ask/Bid которые меняются чаще чем tick value даются нормально, а tick value которая меняется реже (если вообще меняется) выдает черт знает что.

Готовность окружения? это что?

Для меня уже вопрос принципа. Если предоставлена функция, то она должна либо возвращать адекватное значение, либо генерить ошибку, указывая программеру на какую-то исключительную ситуацию, которую ему самому нужно обработать.

Здесь же мы имеем абсолютный 0 в плане качества реализации данного функционала. Ни ошибок, ни адекватного значения. В MQ одни индусы работают что ли?

Прошу прощения за резкость. Ни к кому лично претензий нет, но как же я удивлен... и разочарован.

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

А его теперь фиг получишь, ну то есть уверенности нет в правильном значении. Следовательно робастность расчета под угрозой, это влияет на стабильность работы и качество конечного продукта в целом.

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

Окружение - я про SERIES_SYNCHRONIZED.
Но после перезагрузки не помогает - висит в цикле  - синхронизации нет. Вот кусок кода, что я вставил:

   st=SymbolsTotal(true);
   for(i=0; i<st; i++)
     {
      symbol=SymbolName(i,true);
      //--- 1.дождаться окончания процесса перестройки таймсерии
      static int count;
      while(!SeriesInfoInteger(symbol,Period(),SERIES_SYNCHRONIZED) && !IsStopped())
        {
         Sleep(500);
         count++;
         Comment(count,"; ",symbol);
        }
      digits=SymbolInfoInteger(symbol,SYMBOL_DIGITS);
      tick_value=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
      v_ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
      v_bid = SymbolInfoDouble(symbol, SYMBOL_BID);

      Print("Symbol: ",symbol,", digits:",digits,", Ask:",v_ask,", Bid:",v_bid,", TickValue:",tick_value);
     }

   return (INIT_SUCCEEDED);

 Насчёт резкости - меня после радиации достать невозможно :).

SeriesInfoInteger - Документация на MQL4
  • docs.mql4.com
SeriesInfoInteger - Документация на MQL4
 

Обход по-русски:

      tick_value = 0;
      while (tick_value<=0) { tick_value = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE);}

Напоминает время когда я программировал Вектор-06ц на ассемблере. Там чтобы установить цветовую палитру нужно было от 4 до 16 раз прописать значение в порт ввода-вывода. С первого раза не всегда доходило ))

Но там хоть в документации это было описано с подробным объяснением причин...

А тут... до смеха всё... 

 

Похоже другого пути нет.

 
barabashkakvn:

Окружение - я про SERIES_SYNCHRONIZED.
Но после перезагрузки не помогает - висит в цикле  - синхронизации нет. Вот кусок кода, что я вставил:

 Насчёт резкости - меня после радиации достать невозможно :).

Володя, так история тут не нужна вообще, синхронизация по-боку.

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

А все перекладывают на нас. Типа "нате вам функцию - хавайте, а не нравится - не хавайте, пишите свое или потестируйте вместо нас и отпишитесь в сервисдеск".

Вот такой подход к работе и отношение к пользователям языка MQL безгранично достал уже.

В СД обращаться не буду. Если они сами не хотят делать качественный продукт, я их не заставлю и никто не заставит.

 
barabashkakvn:

Похоже другого пути нет.

Спасибо тебе за тестирование, потраченное со мной время и вообще за твою работу. Как-нибудь пивко выставлю ))
 
elugovoy:
Спасибо тебе за тестирование, потраченное со мной время и вообще за твою работу. Как-нибудь пивко выставлю ))

Не, не. Только грибочки. Желательно красно-беленькие.

грибочек

 
Евгений, barabashkakvn скорее прав, чем не прав... нужно флиртовать с окружением МТ. Если в Ините что-то не выдаётся, то скорее всего окружение не подготовлено... нужно безусловно его подготовить при попытке получить какую-то инфу...
 
denkir:
Евгений, barabashkakvn скорее прав, чем не прав... нужно флиртовать с окружением МТ. Если в Ините что-то не выдаётся, то скорее всего окружение не подготовлено... нужно безусловно его подготовить при попытке получить какую-то инфу...
Я только собирался спать, а здесь снова поле непаханное...