- [Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2.
- Объект "Поле ввода"
- Советник для откр./закр. сделок из файла
Привет программеры! Такой вопрос: можно ли (если да то как) найти в тексте посредством MQL4 запятую? Ситуация такая: написал панельку для закрытия ордера в неполном объеме и в поле "лот" нужно вписать собственно желаемый лот (например 0.01), но некоторые пишут лот через запятую и естественно ничего не происходит... Нужно придумать как выйти из ситуации. в идеале было бы круто если бы советник находил в тексте запятую и менял ее на точку. Но понятия не имею возможно ли это...
https://www.mql5.com/ru/docs/strings/stringreplace
- www.mql5.com
Привет программеры! Такой вопрос: можно ли (если да то как) найти в тексте посредством MQL4 запятую? Ситуация такая: написал панельку для закрытия ордера в неполном объеме и в поле "лот" нужно вписать собственно желаемый лот (например 0.01), но некоторые пишут лот через запятую и естественно ничего не происходит... Нужно придумать как выйти из ситуации. в идеале было бы круто если бы советник находил в тексте запятую и менял ее на точку. Но понятия не имею возможно ли это...
Для этого имеется функция StringReplace. В специфических случаях можно посредством цикла обрабатывать строку. Ведь строка - это массив символов.
string strVolume = "0,01"; StringReplace(strVolume, ",", "."); Print(strVolume);
....в поле "лот" нужно вписать собственно желаемый лот (например 0.01), но некоторые пишут лот через запятую и естественно ничего не происходит...
Для этого имеется функция StringReplace. В специфических случаях можно посредством цикла обрабатывать строку. Ведь строка - это массив символов.
А с какого боку тут StringReplace ?
Поле "лот" - это double. Поэтому никак запятую не поменяешь.
А вот если поле "лот" объявить как string, то да, можно проверить и использовать StringToDouble.
Но в этом случае нужно ещё проверять не вписал ли пользователь лот прописью )))
В общем фигня. Если чел не может правильно указать лот (при том что умолчательный лот прописан с точкой), то нефиг ему вообще иметь дело ни с панельками, ни с торговлей вообще.
А с какого боку тут StringReplace ?
Поле "лот" - это double. Поэтому никак запятую не поменяешь.
А вот если поле "лот" объявить как string, то да, можно проверить и использовать StringToDouble.
Но в этом случае нужно ещё проверять не вписал ли пользователь лот прописью )))
В общем фигня. Если чел не может правильно указать лот (при том что умолчательный лот прописан с точкой), то нефиг ему вообще иметь дело ни с панельками, ни с торговлей вообще.
Да, поле "лот" объявлено как string. Вы правы по поводу таких людей)), но я это не столько для них сколько для своего общего развития спрашиваю... Мало ли где пригодится...
Да, поле "лот" объявлено как string. Вы правы по поводу таких людей)), но я это не столько для них сколько для своего общего развития спрашиваю... Мало ли где пригодится...
К примеру в графическом поле "Edit" при ручном вводе лота.
К примеру в графическом поле "Edit" при ручном вводе лота.
там вообще @опа :-)
в зависимости от места проживания/воспитания люди привыкли к десятичной точке или к запятой.
и даже знаковые группы могут отбивать пробелом или апострофом.
1'00,12 03 - это вполне себе double в виде текста :-)
А с какого боку тут StringReplace ?
Поле "лот" - это double. Поэтому никак запятую не поменяешь.
Потому что ТС явно указал: "в тексте". Речь о строке. По крайней мере, я не видел таких интерфейсов, в которых число вводится прямо в double-формате)))
Потому что ТС явно указал: "в тексте". Речь о строке. По крайней мере, я не видел таких интерфейсов, в которых число вводится прямо в double-формате)))
Проморгал... (
Привет программеры! Такой вопрос: можно ли (если да то как) найти в тексте посредством MQL4 запятую? Ситуация такая: написал панельку для закрытия ордера в неполном объеме и в поле "лот" нужно вписать собственно желаемый лот (например 0.01), но некоторые пишут лот через запятую и естественно ничего не происходит... Нужно придумать как выйти из ситуации. в идеале было бы круто если бы советник находил в тексте запятую и менял ее на точку. Но понятия не имею возможно ли это...
Лет шесть назад я написал скрипт, который позволяет распарсить буфер обмена копирования восьми ячеек из строки EXCEL. Там есть и поиск запятой, и замена ее на точку.
//+------------------------------------------------------------------+ //| Разбор внешнего праметра: extern string Busket | //| Cтрока имеет формат s0 LF s1 LF s2 LF s3 LF s4 LF s5 LF s6 LF s7 | //| где s? - это числа, LF = chr(9) - перевод строки | //| Такой формат получается при копировании 8 ячеек строки из EXCEL | //| через буфер обиена | //| Выделенные из строки числа записываем в OriginalBusketString[] | //+------------------------------------------------------------------+ void StringToDoubleArray() { int i, j, k, TextLength; string NewNumber, LineFeed = " "; double r, sum; LineFeed = StringSetChar( LineFeed, 0, 9); Busket = Busket + LineFeed; // дописываем перевод строки TextLength = StringLen(Busket); // заменяем "," на "." while ( true ) { j = StringFind( Busket, ",", 0); if ( j >= 0) Busket = StringSetChar( Busket, j, '.'); else break; } i = 0; // позиция начала поиска в строке внешнего параметра k = 0; // счетчик количества найденных чисел sum = 0.0; while ( i < TextLength ) { j = StringFind( Busket, LineFeed, i); if ( i == j ) NewNumber = 0.0; else NewNumber = StringSubstr( Busket, i, j - i); //выделяем число r = StrToDouble( NewNumber ) * BuySell; OriginalBusketString[ k ] = r; sum += r * r; i = j + 1; k++; } sum = MathSqrt( sum ); for ( i = k - 1; i >= 0; i--) OriginalBusketString[ i ] /= sum; } //--------------------- END StringToDoubleArray ----------------------
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования