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

 
Yuriy Bykov #:

Здравствуйте, Александр.

В любых директивах препроцессора можно использовать только константы, заданные до компиляции. Поэтому использовать имя файла, которое будет определяться после компиляции и запуска нельзя. В вашем случае тестер ищет в локальной песочнице файл с именем  NameSettings, и, не найдя его, ничего не копирует в папку агента тестирования.

Это, конечно, большое неудобство, что нельзя менять имя, но так уж сделана реализация. Кстати, такой директивой можно передавать и несколько файлов (по одному в одной директиве)

Большое спасибо!

 
Andrey Dik #:

День добрый.

Можно из командной строки делать линки, но я пользуюсь файловым менеджером 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

 
klycko #:

Добрый вечер!

Не понимаю, какой командой переписать мой файл из папки 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

Нужен один и тот же одинаковый файл для советников на агентах?
 
Andrey Dik #:
Нужен один и тот же одинаковый файл для советников на агентах?

Добрый день!

Мне просто нужно один файл с именем  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?

 
DanilaMactep #:

Всем добрый день. Есть у меня такая необходимость как закрывать половину ордера при выполнении условия. Подскажите пожалуйста как это правильно делается чтобы не имело значение каким лотом открыт ордер 1 или 0,02, при минимально возможном лоте у брокера в 0,01?

Берёшь объём позиции, проверяешь, что он больше минимального, и делишь его на 2. Нормализуешь до двух знаков. Если получившийся объём меньше минимального - значит уже нельзя закрыть частично - закрываешь полностью. Иначе - закрываешь тем объёмом, который получился при расчёте.

 
Artyom Trishkin #:

Берёшь объём позиции, проверяешь, что он больше минимального, и делишь его на 2. Нормализуешь до двух знаков. Если получившийся объём меньше минимального - значит уже нельзя закрыть частично - закрываешь полностью. Иначе - закрываешь тем объёмом, который получился при расчёте.

Спасибо за подсказку- вроде заввёл этот Грааль 😋🤓😎😁😁😁😉
 
DanilaMactep #:
вроде заввёл этот Грааль

Не дымит? Масло не жрёт?

 
klycko #:

Добрый день!

Мне просто нужно один файл с именем  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, то без линковки не обойтись, напрямую эта папка не доступна для агентов.

 
Добрый день! Подскажите, как предоставить индикатор другому человеку. Без доступа к коду и без возможности отправки файла индикатору другому человеку? Возможно ли это сделать?