Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2422
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Александр.
В любых директивах препроцессора можно использовать только константы, заданные до компиляции. Поэтому использовать имя файла, которое будет определяться после компиляции и запуска нельзя. В вашем случае тестер ищет в локальной песочнице файл с именем NameSettings, и, не найдя его, ничего не копирует в папку агента тестирования.
Это, конечно, большое неудобство, что нельзя менять имя, но так уж сделана реализация. Кстати, такой директивой можно передавать и несколько файлов (по одному в одной директиве)
Большое спасибо!
День добрый.
Можно из командной строки делать линки, но я пользуюсь файловым менеджером MultiCommander для этих целей.
Делаете линк (Symlink) в нужном месте на реальную папку, где находятся файлы. К линку можно обращаться так, как будто эта та самая нужная папка.
В проге Инструменты->Ссылки->Создать ссылки.
Добрый вечер!
Не понимаю, какой командой переписать мой файл из папки Files (это и есть песочница) в папку Tester.
Почему это вдруг перестанет быть запрещенным с использованием линков?
Вот реальный фрагмент скрипта:
В скрипте осуществляется запись данных в песочницу Files:
Now = TimeLocal(); // Момент формирования имени для Settings
TimeToStruct(Now,dt_struct); // Разложение момента формирования
string mnth = dt_struct.mon; // Месяц, день
string dy = dt_struct.day;
string LimPos = MTTESTER::GetValue(Settings,"LimitPosition"); // LimitPosition считывается
int PosVert = StringFind(LimPos,"|",0);
string razn = StringSubstr(LimPos,PosVert,-1);
StringReplace(LimPos,razn,"");
string NameSettings = mnth+dy+"-"+LimPos+"-"+DoubleToString(ProfitNew,0)+".set"; // Формируется имя для Settings (эта строка уже вычислена к данному моменту)
int file_handle=FileOpen("//"+NameSettings,FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI);
FileWriteString(file_handle,Settings+"\r\n"); // Записывается строка Settings в песочницу Files
Добрый вечер!
Не понимаю, какой командой переписать мой файл из папки Files (это и есть песочница) в папку Tester.
Почему это вдруг перестанет быть запрещенным с использованием линков?
Вот реальный фрагмент скрипта:
В скрипте осуществляется запись данных в песочницу Files:
Now = TimeLocal(); // Момент формирования имени для Settings
TimeToStruct(Now,dt_struct); // Разложение момента формирования
string mnth = dt_struct.mon; // Месяц, день
string dy = dt_struct.day;
string LimPos = MTTESTER::GetValue(Settings,"LimitPosition"); // LimitPosition считывается
int PosVert = StringFind(LimPos,"|",0);
string razn = StringSubstr(LimPos,PosVert,-1);
StringReplace(LimPos,razn,"");
string NameSettings = mnth+dy+"-"+LimPos+"-"+DoubleToString(ProfitNew,0)+".set"; // Формируется имя для Settings (эта строка уже вычислена к данному моменту)
int file_handle=FileOpen("//"+NameSettings,FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI);
FileWriteString(file_handle,Settings+"\r\n"); // Записывается строка Settings в песочницу Files
Нужен один и тот же одинаковый файл для советников на агентах?
Добрый день!
Мне просто нужно один файл с именем NameSettings из песочницы Files переписать в папку Tester на одном и том же компьютере. Это имя формируется на каждом цикле заново.
Вот пример имени записанного в папку Files файла: 701-2.3-15097.set
Мне необходимо осуществить эту же запись непосредственно в папку тестера (она же не песочница?):
C:\Users\lizak\AppData\Roaming\MetaQuotes\Terminal\FA97EA291D4188820508F9D2B5AAD50F\MQL5\Profiles\Tester
Всем добрый день. Есть у меня такая необходимость как закрывать половину ордера при выполнении условия. Подскажите пожалуйста как это правильно делается чтобы не имело значение каким лотом открыт ордер 1 или 0,02, при минимально возможном лоте у брокера в 0,01?
Всем добрый день. Есть у меня такая необходимость как закрывать половину ордера при выполнении условия. Подскажите пожалуйста как это правильно делается чтобы не имело значение каким лотом открыт ордер 1 или 0,02, при минимально возможном лоте у брокера в 0,01?
Берёшь объём позиции, проверяешь, что он больше минимального, и делишь его на 2. Нормализуешь до двух знаков. Если получившийся объём меньше минимального - значит уже нельзя закрыть частично - закрываешь полностью. Иначе - закрываешь тем объёмом, который получился при расчёте.
Берёшь объём позиции, проверяешь, что он больше минимального, и делишь его на 2. Нормализуешь до двух знаков. Если получившийся объём меньше минимального - значит уже нельзя закрыть частично - закрываешь полностью. Иначе - закрываешь тем объёмом, который получился при расчёте.
вроде заввёл этот Грааль
Не дымит? Масло не жрёт?
Добрый день!
Мне просто нужно один файл с именем NameSettings из песочницы Files переписать в папку Tester на одном и том же компьютере. Это имя формируется на каждом цикле заново.
Вот пример имени записанного в папку Files файла: 701-2.3-15097.set
Мне необходимо осуществить эту же запись непосредственно в папку тестера (она же не песочница?):
C:\Users\lizak\AppData\Roaming\MetaQuotes\Terminal\FA97EA291D4188820508F9D2B5AAD50F\MQL5\Profiles\Tester
Зачем в Profiles?
Пишите в c:\Users\User\AppData\Roaming\MetaQuotes\Terminal\Common\Files\, эта папка доступна для агентов из тестера.
Ну, если очень хочется именно в Profiles, то без линковки не обойтись, напрямую эта папка не доступна для агентов.