Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В чем же здесь проблема?
Я не стал возиться с изучением флагов и решил написать рабочий код сохранения и загрузки set-файлов Тестера.
Вы можете через скрипт сохранить (inLoad = false) set-файл, затем что-нибудь руками в нем изменить и загрузить (inLoad = true) его в Тестер через скрипт.
Если будет работать, возьмите соответствующие куски исходника себе.
Большое Вам спасибо за Ваши подсказки!
Удалось сделать запись в робота, но криво.
Извините, что снова к Вам обращаюсь, но сам не могу понять ситуацию.
Я написал скрипт с вашими функциями. Он находит первый сет в папке ___SET и правильно определяет его имя 214-10000 HEX-449.set (в нем prHEX=true).
Потом выполняются команды:
Print(first_set_filename);
Print("Load: " + (string)FileLoad(first_set_filename, Words,0)); // Печатаем длину считанного файла FileName FILE_COMMON
Settings = ShortArrayToString(Words, 1); // 1 - Unicode
Print("\nSettings \n", Settings);
Print(MTTESTER::SetSettings(Settings));
Распечатанный файл Settings совсем другой (в нем prWPR=true). Не могу понять, откуда он взялся. И он же загрузился в робота, т.е. загрузка сработала!!!, половина проблемы решена, но сет все же не тот.
Qwen мне подсказал, что надо записываемый сет поместить в tester\files.
Я так и сделал. Но это не помогло. Почему-то в Settings записывается какой-то другой сет, не тот, что был найден при поиске first_set_filename:
214-10000 HEX-449.set
Наверное, он где-то остался в памяти из прежних запусков.
Помогите, пожалуйста, понять причину этого.
С уважением, Александр
Print("Load: " + (string)FileLoad(first_set_filename, Words,0)); // Печатаем длину считанного файла FileName FILE_COMMON
Print("Load: " + (string)FileLoad(first_set_filename, Words,FILE_COMMON)); // Печатаем длину считанного файла FileName FILE_COMMON
С этим изменением печатает: Load: -1
Если в этой строке менять параметр, то:
При FILE_COMMON Load: -1 Settings не печатаются
При 0 Load: 3556 Settings не верный (другой, не понятно откуда взявшийся)
Может я просто забыл FileOpen?
Print("Load: " + (string)FileLoad(first_set_filename, Words,FILE_COMMON)); // Печатаем длину считанного файла FileName FILE_COMMON
Если в этой строке менять параметр, то:
При FILE_COMMON Load: -1 Settings не печатаются
При 0 Load: 3556 Settings не верный (другой, не понятно откуда взявшийся)
Помогите, пожалуйста, понять причину этого.
Дополнительно к вышесказанному.
Вам нужно научиться пользоваться дебагом. За минуту увидели бы причину.
Вам нужно научиться пользоваться дебагом. За минуту увидели бы причину.
Благодарю за присланное исправление строки кода.
Вы правы относительно рекомендаций мне повышать мастерство и освоить дебаг. Тем не менее даже без его использования, конечно не за минуту, а часа за 2-3, я написал отладочный скрипт SetLoad с использованием рекомендованных Вами функций, и с его помощью установил, что ошибка возникает после строки:
Print("Load: " + (string)FileLoad(first_set_filename, Words,0));
Если в этой строке менять последний параметр, то:
При FILE_COMMON Load: -1 Settings не печатаются
При 0 Load: 3556 Settings не верный (другой, не понятно откуда взявшийся).
В настоящий момент я исследую процесс Load, поэтому я прерываю работу скрипта при помощи return сразу после строки:
Print(MTTESTER::SetSettings(Settings));
Сейчас Вы мне прислали исправленную строку:
Print("Save: " + (FileSave(source_path, Words, FILE_COMMON) ? (string)ArraySize(Words) : "error"));
Я ее поставил в скрипт и скомпилировал.
Но она относится не к процессу Load, а к процессу Save и никак не влияет на ошибку загрузки Settings по-прежнему там посторонние настройки в результате.
по-прежнему там посторонние настройки в результате.
Первая и вторая правка - и у меня работет.
Первая и вторая правка - и у меня работет.
Поразительно!
Я уже год пользуюсь скриптом Nocturne1.
где команда MTTESTER::SetSettings(Settings) выполняется тысячи раз.
А в новом скрипте не могу добиться с помощью этой команды записи Settings в робота. Вот в этой строке в SetLoad:
Print("\nУдалась ли загрузка в робота от FileLoad: ",MTTESTER::SetSettings(Settings));
Просто Муму не постижимое!!!
Я перенес папку с сетами в песочницу. MQL5\Files\___SET
Теперь там стабильно ищется первый сет и загружается в Settings.
Даже двумя возможными способами через FileLoad и GetKthFileContent.
После загрузки распечатывается правильное содержание Settings.
Но в робота этот сет не загружается!
Не могу понять, почему в SetLoad не срабатывает команда:
MTTESTER::SetSettings(Settings) и MTTESTER::SetSettings2(Settings)
хотя и возвращает true, но настройки робота не меняются.
Может у меня не последняя версия MTTESTER ?
Помогите, пожалуйста, добиться правильной отработки команды:
MTTESTER::SetSettings(Settings)