К разработчикам: Ошибка MarketInfo !!! - страница 3

 
nepekyn:

Всем привет.Помогите и мне с этой переменной.При компиляции сова пишет:

'Market_Info' - function not defined АТС.mq4 1561 11

'0.1' - constant expression is not integral АТС.mq4 1563 12

'0.01' - constant expression is not integral АТС.mq4 1564 12

'0.001' - constant expression is not integral АТС.mq4 1565 12

 Вот строки кода:

switch(MarketInfo(Pairs[0],MODE_LOTSTEP))

      {

      case 0.1: int  digit=1; break;

      case 0.01:     digit=2; break;

      case 0.001:    digit=3; break;

      default:       digit=3 ;

      } 

if (buys!=0) {Object_field("l_pips2"," Покупок: "+buys+", Лотов: "+DoubleToStr(buy_lots,digit)+", "+DoubleToStr(BuyValProfit,0)+"/"+DoubleToStr(BuyPipsProfit,0)

      +" пп.", 180, 360, 10, "Consolas Bold", CLR_NONE, DeepSkyBlue);}

      else ObjectDelete("l_pips2");

      if (sells!=0) {Object_field("s_pips2"," Продаж:  "+sells+", Лотов: "+DoubleToStr(sell_lots,digit)+", "+DoubleToStr(SellValProfit,0)+"/"+DoubleToStr(SellPipsProfit,0)

      +" пп.", 180, 380, 10, "Consolas Bold", CLR_NONE, Orange);}

      else ObjectDelete("s_pips2"); 



 

в документации https://docs.mql4.com/ru/basis/operators/switch

Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций. Выражение оператора switch должно быть целого типа.
 
akadex:

При использовании функции MarketInfo с целью определения цены пункта GOLD,
цена возвращается ошибочная! Проверил налицие данной ошибки на нескольких ДЦ.
Везде одно и тоже. В чем дело? Ошибка терминала?

Во вложении пример кода, иллюстрирующий ошибку.

Сегодня столкнулся с этой проблемой (брокер InstaForex), и был в шоке, когда мой робот открыл сделку на GOLD в 62 раза большим объёмом, чем положено. Сейчас сделка торгуется в небольшом минусе, жду, когда выйдет в плюс (если выйдет), и постараюсь поскорее закрыть её. У меня счёт рублёвый, а функция MarketInfo(Symbol(), MODE_TICKVALUE) для инструмента GOLD, похоже, всегда выдаёт результат в долларах, отсюда и такой чудовищный объём сделки. Постараюсь сегодня исправить.

Получение рыночной информации - Справочник MQL4
Получение рыночной информации - Справочник MQL4
  • docs.mql4.com
Получение рыночной информации - Справочник MQL4
 

К счастью, сделку удалось закрыть с плюсом (не настолько большим, как размер лота, но приятным), робота отключил до устранения проблемы. Планирую проверять валюту депозита, и если она RUR, то нужно умножить результат функции на котировку USDRUR.

 
Konstantin Gavrilov:

Сегодня столкнулся с этой проблемой (брокер InstaForex), и был в шоке, когда мой робот открыл сделку на GOLD в 62 раза большим объёмом, чем положено. Сейчас сделка торгуется в небольшом минусе, жду, когда выйдет в плюс (если выйдет), и постараюсь поскорее закрыть её. У меня счёт рублёвый, а функция MarketInfo(Symbol(), MODE_TICKVALUE) для инструмента GOLD, похоже, всегда выдаёт результат в долларах, отсюда и такой чудовищный объём сделки. Постараюсь сегодня исправить.

Не надо сочинять ерунды.

MODE_TICKVALUE

16

Размер минимального изменения цены инструмента в валюте депозита

Я неоднократно проверял, всегда в валюте депозита.

 
Alexey Viktorov:

Не надо сочинять ерунды.

MODE_TICKVALUE

16

Размер минимального изменения цены инструмента в валюте депозита

Я неоднократно проверял, всегда в валюте депозита.

Я здесь не для того, чтобы "сочинять". Ваше право, как поступить: проигнорировать факт, потому что не понимаете, как такое может быть, или попробовать разобраться. А функцию  MarketInfo(Symbol(), MODE_TICKVALUE) я проверил, она действительно для GOLD даёт результат в долларах на рублёвом счёте. С другими инструментами проблемы не возникает.

Кстати, вы забыли уточнить, на каком брокере проверяли. Я думаю, это ошибка не MetaQuotes, а брокера (написал в службу поддержки, жду ответа от них).

Получение рыночной информации - Справочник MQL4
Получение рыночной информации - Справочник MQL4
  • docs.mql4.com
Получение рыночной информации - Справочник MQL4
 
История закончилась тем, что это оказался баг брокера, сегодня утром служба поддержки отписалась мне, что баг устранили. Я проверил - действительно, всё нормально, сейчас убираю заплатку из робота.