Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2421
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Думаю, что прежде, чем мучить жирафа, нужно ознакомиться с областью видимости переменных.
Я помню, что на момент написания этого коммента, принт распечатывал 5
Поэтому я сильно расстраивался по поводу отсутствия предупреждения компилятора.
Сейчас проверил ещё раз и теперь принт распечатывает правильно 1.
Учитывая, что справка про область видимости написана намного раньше моего коммента, получается у меня был глюк (это не точно).
Учитывая сколько глюков выявляется в новых версиях программы, то вполне возможно глюк был не у меня (и это не точно) .
Сейчас область видимости работает нормально, поэтому на какое то время, оставлю жирафа в покое)
А причем тут повторное объявление переменных и область видимости?
Переменная i объявлена за пределами (снаружи) обоих циклов, видна как во внешнем, так и во внутреннем.
Другое дело что она инициализируется в обоих циклах, а индексация в них встречная.
Точно, никто ведь её там повторно не объявляет!
Опять я пёрнул в лужу. Блиин :(
Стесняюсь спросить, а зачем?
Если прям очень надо, то можно линки на папки сделать где надо.
Добрый день, Андрей!
Мне это нужно для того, чтобы оптимизированный файл был непосредственно доступен для загрузки в робота.
Эта загрузка осуществляется по умолчанию из папки Tester.
А как сделать линки на папки?
Извините за не очень профессиональные вопросы.
С уважением, Александр
В таком исполнении у тебя внешний цикл походу вообще работать не должен. В обоих циклах используется одна и та же переменная i, объявленная до циклов.
Во внешнем она инициализируется кол-вом ордеров -1 и идет на декремент (уменьшение). А как дело доходит до внутреннего цикла так ее значение обнуляется.
У тебя перебор ордеров есть уже во внешнем цикле - зачем его дублировать еще и во внутреннем? Имхо мешанина какая-то. Бага не вижу.
а! ОК! Спс. Заменю на J
Думаю, что прежде, чем мучить жирафа, нужно ознакомиться с областью видимости переменных.
СПсб за помощь. Сделаю и i и j в разных циклах - я понял. Просто на автомате - поспешил..... и даже не понял сразу... тут даже строгий компил через strict не поможет....
встречная
спс б - я понял.
СПсб за помощь. Сделаю и i и j в разных циклах - я понял. Просто на автомате - поспешил..... и даже не понял сразу... тут даже строгий компил через strict не поможет....
Зачем плодить? Проще в цикле объявить int i = ... ... ...
Зачем плодить? Проще в цикле объявить int i = ... ... ...
я об этом
а вот щас понял - i использовать:
спасибо за помощь. Сделаю, чтобы на оптималках работало....
Добрый день, Андрей!
Мне это нужно для того, чтобы оптимизированный файл был непосредственно доступен для загрузки в робота.
Эта загрузка осуществляется по умолчанию из папки Tester.
А как сделать линки на папки?
Извините за не очень профессиональные вопросы.
С уважением, Александр
День добрый.
Можно из командной строки делать линки, но я пользуюсь файловым менеджером MultiCommander для этих целей.
Делаете линк (Symlink) в нужном месте на реальную папку, где находятся файлы. К линку можно обращаться так, как будто эта та самая нужная папка.
В проге Инструменты->Ссылки->Создать ссылки.
Спасибо за совет!
Добавил в своем скрипте директиву:
#property tester_file "NameSettings"
...
string NameSettings = mnth+dy+"-"+DoubleToString(ProfitNew,0)+".set"; // Формируется имя для Settings
В Files нужный файл записывается нормально, а в Tester никакого дубликата не появляется.
Не могли бы вы уточнить, что ещё может помочь для записи в папку Tester?
С уважением, Александр
Здравствуйте, Александр.
В любых директивах препроцессора можно использовать только константы, заданные до компиляции. Поэтому использовать имя файла, которое будет определяться после компиляции и запуска нельзя. В вашем случае тестер ищет в локальной песочнице файл с именем NameSettings, и, не найдя его, ничего не копирует в папку агента тестирования.
Это, конечно, большое неудобство, что нельзя менять имя, но так уж сделана реализация. Кстати, такой директивой можно передавать и несколько файлов (по одному в одной директиве)