Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 636

 

Строка кода:

int Dgt=MarketInfo(Symbol(),MODE_DIGITS);

Предупреждение:

possible loss of data due to type conversion FinBuy1531.mq4 144 7

На мой взгляд типы соответствуют. Что здесь не так?

 
hurkin:

Строка кода:

Предупреждение:

possible loss of data due to type conversion FinBuy1531.mq4 144 7

На мой взгляд типы соответствуют. Что здесь не так?

Не соответствуют,     MarketInfo(..) возвращает значение типа  double

как-то так:

int Dgt=(int)MarketInfo(Symbol(),MODE_DIGITS);
 
r772ra:

Не соответствуют,     MarketInfo(..) возвращает значение типа  double

как-то так:

 

Пример из справочника:

double vpoint  = MarketInfo("EURUSD",MODE_POINT);
   int    vdigits = MarketInfo("EURUSD",MODE_DIGITS);
Что-то видимо ещё не так?

 
Shurkin:

Пример из справочника:

double vpoint  = MarketInfo("EURUSD",MODE_POINT);
   int    vdigits = MarketInfo("EURUSD",MODE_DIGITS);
Что-то видимо ещё не так?

В случае с "MODE_DIGITS" "MarketInfo" возвращает значение типа "double". Здесь похоже на ошибку реализации "MarketInfo". Поэтому правильно будет:

int Dgt=(int)MarketInfo(Symbol(),MODE_DIGITS);
 

Все последний вопрос!

Есть OBJ_LABEL. в описаниях объекта, есть текст(не имя) и цифра, цифра меняется с течением тиков.

Как вытащить цифру?

 
Top2n:

Все последний вопрос!

Есть OBJ_LABEL. в описаниях объекта, есть текст(не имя) и цифра, цифра меняется с течением тиков.

Как вытащить цифру?

StringFind тебе в помощь. А там уже int StrToInteger или long StringToInteger
 

Добрый день. Помогите, пожалуйста, решить проблему.

У меня установлен MT4 646-ого билда. Я поместил в папку ...\MetaTrader 4 Admiral Markets AS\MQL4\Indicators два файла - файл с кодом индикатора LC-RSI_Histo3.mq4 и файл с откомпилированным индикатором LC-RSI_Histo3.ex4. Запускаю индикатор - работает. Однако я желаю изменить исходный код. Открываю встроенный редактор кода. Проблема в том, что после любых, даже косметических изменений кода (например, добавить пробел) и последующей его компиляции индикатор после запуска работает некорректно - все его столбцы показывают одно и то же значение:

При этом скомпилированный файл .ex4 (прилагается с названием LC-RSI_Histo3_1.ex4) весит значительно больше исходного (скопированного в папку).

В чём причина? Как это исправить? 

Файлы:
 

Всем приветы!

Помогите разобраться с ошибкой: "Недостаточно прав" или "Not enough rights" code #7

Происходит следующее: советник на паре EURCHFХ M1 не может открыть позиции, выдается эта ошибка (обнаружил в журнале), а в это время он открывает без проблем на других парах и на EURCHF M5. Руками открывается без проблем. У другого брокера работает. В чем проблема может быть?

Заранее благодарю за помощь.

 
AlexeyVik:
StringFind тебе в помощь. А там уже int StrToInteger или long StringToInteger


Эта функция же возвращает номер позиции в сроке, а не само число.

int  StringFind(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск
   );

 Допустим я достал номер позиции, как тогда дальше, изъять эту позицию?

 
Boeing747:

есть у кого нибудь кусочек  кода для примера  в котором элементы массива string группируются в алфавитном порядке?

заранее благодарю.


   string w[]={"E","c","f","b","j","R","A","H","a","c"}; // массив для экзекуции
   int size=ArraySize(w);
   string abc[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
   string ABC[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
   int c,e,i;

   for(i=0; i<26; i++)
     {
      for(e=c; e<size; e++)
        {
         if(ABC[i]==w[e])
           {
            w[e]=w[c];
            w[c]=ABC[i];
            c++;
           }
         else
           {
            if(abc[i]==w[e])
              {
               w[e]=w[c];
               w[c]=abc[i];
               c++;
              }
           }


        }
     }
   
   Alert(w[0],w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9]);

еще пример для прикладных задач

   string w[]={"EURUSD","USDCHF","BRNQ4","AUDUSD","GOLD","AUDCHF","NZDUSD","USDCAD","SILVER","GBPUSD"}; // массив для экзекуции
   int size=ArraySize(w);
   string f=" ";
   string ABC[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
   int c,e,i;

   for(i=0; i<26; i++)
     {
      for(e=c; e<size; e++)
        {
         f=w[e];
         if(ABC[i]==StringSubstr(f,0,1))
           {
            w[e]=w[c];
            w[c]=f;
            c++;
           }
        }
     }

   Alert(w[0],", ",w[1],", ",w[2],", ",w[3],", ",w[4],", ",w[5],", ",w[6],", ",w[7],", ",w[8],", ",w[9]);



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