Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Rosh, посмотрите пожалуйста вот эту ветку https://www.mql5.com/ru/forum/124841
Заглянул. "И что в связи с этим я должен предпринять?" (с) "День выборов"
одинаковые тип и имя, то доступа к глобальной из тела программы после инициализации локальной нет.
А компилятор не предупреждает о существовании переменных с одинаковым именем.
И ЭТО НЕУДОБНО!
а у меня билд226 с антивиром уже 2 недели не дружит, и никакие исключения из объектов для проверки непомогли, впрочем румус тоже неработал, тока изначально, от даты установки антивира.
Я написал правильно, чтоб проиллюстрировать, что если глобальная и локальная переменные имеют
одинаковые тип и имя, то доступа к глобальной из тела программы после инициализации локальной нет.
А компилятор не предупреждает о существовании переменных с одинаковым именем.
И ЭТО НЕУДОБНО!
без глупостей, как у Вас, то практика доказала, что вполне возможно.
Откат терминала вряд ли Вам поможет. Из журнала видно, что советник мультивалютный, а Вы устанавливаете его сразу на две или более пары. Естественно, каждый из них пытается установить свой ордер по одному и тому же инструменту и когда их запросы совпадают по времени, то и выставляются два ордера. Чтобы он перестал работать, надо удалить все экземпляры советника.
Здравствуйте!
Действительно я ошибся Откат компа не помогает Советник и после отката работает.
Поскольку он мульти, то Перебор пар идет в коде типа ...
for (int i=1;i<=5;i++)
{ //1
if (i==1) {OSyb="EURUSD";}
if (i==2) {OSyb="AUDJPY";}
if (i==3) {OSyb="EURJPY";}
if (i==4) {OSyb="EURCHF";}
if (i==5) {OSyb="NZDUSD";}
......... и т.д.
if (Открыт_ли_этот_инстр(OSyb,text)==1) continue;
Я так всегда делаю для мульти. К советнику вопросов нет Я С НИМ на реале уже месяцев 8.
Началось после установки 226 билда
Уж не помню где, давно это было, но предупреждали: не использовать одинаковые имена, хотя если
без глупостей, как у Вас, то практика доказала, что вполне возможно.
Изначально писал, что объединял два советника.
Каждый по 2-3 тысячи строк, хотя ядро одно.
Срок между ними пару месяцев, Можно ли упомнить все детали и все, что имел ввиду?
Слава Богу, что заметил этот косяк.
Конечно, теперь этот момент под вниманием, но, хотелось бы, чтоб эта фича легла на компилятора.
Заглянул. "И что в связи с этим я должен предпринять?" (с) "День выборов"
Ндааа... тяжело в деревне... :))))))))Ну если не понятна просьба из контекста, то что уж тут - проехали....
Попробуем поговорить о другой стороне сего программного продукта.
Пишем скрипт:
Кидаем скрипт на график любой валютной пары. Что в результате имеем:
Итого, функция DoubleToStr() вместо того, чтоб просто скопировать в строку два числа после запятой у величины double, взяла и округлила сотые доли в большую сторону.
Казалось бы, округление прошло по правилам математики. Вроде всё верно. Кроме одного - что в справке метаэдитора об этом ни сном ни духом. Почему до такого нужно догадываться?
В МТ5 осуществлено то же самое?
P.S.
Чем долше я программлю на MQL4, тем больше и больше хочется от него отказаться :(
удалил всё что связано с терминалом, заново скачал с сервера дц установил, не дал обновиться с 225 до 226 билд, поставил в папку достоверные для антивира. Потом запустил терминал. УРА опять рработает! Ещё бы 2 недели мучил службы потдержки антивира и дц, прилежно отправляя им отчёты и исполняя светы (толку не было), вот когда билд226 стёр это помогло.
Итого, функция DoubleToStr() вместо того, чтоб просто скопировать в строку два числа после запятой у величины double, взяла и округлила сотые доли в большую сторону.
Казалось бы, округление прошло по правилам математики. Вроде всё верно. Кроме одного - что в справке метаэдитора об этом ни сном ни духом. Почему до такого нужно догадываться?
Я бы мог понять возмущение, если бы в справке к функции DoubleToStr было бы написано, что сначала отрасываются лишние знаки после запятой, и только затем производится преобразование, но там этого нет:Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.
Зачем Вы ищете экзотические или пограничные случаи для использования языка, если не уверены - делайте свою реализацию. Для этого есть Математические функции и Арифметические операции
Да, я могу реализовать нужный мне функционал средствами MQL4, правда не любой, как Вы говорите, ибо язык MQL4 - довольно-таки бедная штука и всё чаще приходится прибегать к средствам других языков. Но не об этом речь...
В том же Делфи есть функция FloatToStr() - она вернёт в строку то, что ей передали. Например код
procedure TForm1.Button1Click(Sender: TObject); var Stroka: String; MyChislo: Extended; begin MyChislo:=7.256485; Stroka:= FloatToStr(MyChislo); Edit1.Text:=Stroka; end;
вернёт в поле Edit1 текст, содержанием которого будет строка 7.256485Для форматированного вывода есть другая функция - FloatToStrF(), где буква F в имени функции даёт подсказку, что вывод будет форматированным.
Вот Вам и причина недоразумений.
Сомневаюсь, что разработчик это исправит. Сомневаюсь и в том, что есть вообще смысл описывать тут подобные нюансы.