Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 111

 
trader781:
Не понимаю как это, имена поправил, линия все равно идет красная вне зависимости от типа ордера,просто называется по разному. (потом надо найти способ обрезать ее по 10 бару), нужен именно способ
попробуй сейчас
Файлы:
 
Sergey Gritsay:
попробуй сейчас

Хорошо что тут исходник висит)

 

При нажатии кнопки компиляции бот дохнет вместе с терминалом, а после открытия ЕХ не открывается а этот файл пустой.

Выглядит вот так.

 

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

Файлы:
 
trader781:

Хорошо что тут исходник висит)

 

При нажатии кнопки компиляции бот дохнет вместе с терминалом, а после открытия ЕХ не открывается а этот файл пустой.

Выглядит вот так.

 

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

у меня все нормально компилируется
 
Sergey Gritsay:
string  StringSubstr(
   string  string_value,     // строка
   int     start_pos,        // с какой позиции начать
   int     length=0          // длина извлекаемой строки
   );
...

 

Спасибо!

Ещё есть потребность в помоще - нужно узнать сколько знаков в строке - как это сделать? 

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

Также, встречено непонятное поведение с массивами строк. Приходиться делать двумерные массивы, чтобы строки сохранять в массив.

Встречалась такое поведение у кого?

while( idx < size ) {
    if( StringFind( fileBuffer[idx][0], "[Main]" ) >= 0 ) {
        idx++;
        Print( "Buffer(main) = " + fileBuffer[idx][0] ); // debug
        if( StringFind( fileBuffer[idx][0], "Kit_Names=" ) >= 0 ) {
            Print( "check1 - " + fileBuffer[idx][0] ); // debug
            string tmp = StringSubstr( fileBuffer[idx][0], 10 );
            Print( tmp );                              // debug
            StringReplace( tmp, "\"", "" );
            Print( tmp );                              // debug
            Print( StringSplit( tmp, sep, list ) );
            Print( "check22 - " + tmp );               // debug
            for(int i = 0; i < ArrayRange(list,0); i++) Print(list[i][0]);  // debug
        }
    }
    idx++;
}
 
-Aleks-:

 

Спасибо!

Ещё есть потребность в помоще - нужно узнать сколько знаков в строке - как это сделать? 

Возвращает число символов в строке.

int  StringLen(
   string  string_value      // строка
   );

 
terentjew23:

Возвращает число символов в строке.

int  StringLen(
   string  string_value      // строка
   );

 

Спасибо!

 
Подскажите, пожалуйста.

Объявляю на глобальном уровне советника массив. Затем в специальной функции init() вызываю пользовательскую функцию, которая заполняет массив строковыми константами.

Далее в специальной функции start() использую массив только для считывания данных.

Через некоторое время работы советника в массив попадают другие данные. То есть запустив советник, я ожидаю что во время его работы массив будет неизменным, но данные каким-то образом попадают в массив, при чем только через какое-то время (более 10 минут). При перезапуске советника естественно массив заполняется так как надо, но через время опять по непонятным для меня причинам в массив попадают не те значения.

Выход вижу только, если массив постоянно перезаполнять в start(), но это как-то не очень мне нравится, так как реально массив нужно заполнить только при инициализации.

В чем может быть дело? Как уберечь массив от модификаций?
 
Maksym Mudrakov:
Подскажите, пожалуйста.
...
В чем может быть дело? Как уберечь массив от модификаций?
Тщательно проверить код.
 
Maksym Mudrakov:
Подскажите, пожалуйста.

Объявляю на глобальном уровне советника массив. Затем в специальной функции init() вызываю пользовательскую функцию, которая заполняет массив строковыми константами.

Далее в специальной функции start() использую массив только для считывания данных.

Через некоторое время работы советника в массив попадают другие данные. То есть запустив советник, я ожидаю что во время его работы массив будет неизменным, но данные каким-то образом попадают в массив, при чем только через какое-то время (более 10 минут). При перезапуске советника естественно массив заполняется так как надо, но через время опять по непонятным для меня причинам в массив попадают не те значения.

Выход вижу только, если массив постоянно перезаполнять в start(), но это как-то не очень мне нравится, так как реально массив нужно заполнить только при инициализации.

В чем может быть дело? Как уберечь массив от модификаций?
Можно код увидеть?
Причина обращения: