Как обеспечить работу эксперта только на том чарте куда он был сброшен первый раз - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
наверно так получится:
стартуем, создаем глобальную переменную и объект на графике (гдето за его пределами чтобы случайно руками не удалить) и в них обоих "прописываем" один общий ключ (полученный например GetTickCount).
Повторные запуски на других чартах проверяют наличие глобальной переменной. если она есть - ищут на СВОЕМ чарте объект с этим же ключом. не нашли - чужой чарт - не работаем и орем алертом что повторный запуск!
поскольку объекты чарта и глобальные переменные должны переживать и перезапуски и перекомпиляции - проверка всегда сработает правильно. если только ручками не удалить или глобальную или объект из списка объектов - но это уже почти паранойя :)))
наверно так получится:
стартуем, создаем глобальную переменную и объект на графике (гдето за его пределами чтобы случайно руками не удалить) и в них обоих "прописываем" один общий ключ (полученный например GetTickCount).
Повторные запуски на других чартах проверяют наличие глобальной переменной. если она есть - ищут на СВОЕМ чарте объект с этим же ключом. не нашли - чужой чарт - не работаем и орем алертом что повторный запуск!
поскольку объекты чарта и глобальные переменные должны переживать и перезапуски и перекомпиляции - проверка всегда сработает правильно. если только ручками не удалить или глобальную или объект из списка объектов - но это уже почти паранойя :)))
Нужно сделать так чтобы советник работал только в "одном экземпляре". Т.е. присоединяю первый раз к любому чарту и он рабочий. Если я потом случайно или намеренно присоединю его еще раз к другому чарту, второе присоединение должно опознать что уже есть запущенный и ничего не делать.
Оставлять метку в глобальной переменной наверно не сработает. Если у меня есть два присоединенных советника и я перекомпиливаю его текст, то неизвестно какой из них первым отработает свой инит в котором можно былобы создавать эту глобальную переменную.
Кто, что может подсказать? Есть какието мысли как это сделать?
А если при инициализации открывать на запись файл, при деинициализации освобождать его. По логике вещей новый экземпляр советника не сможет открыть на запись файл уже открытый на запись ранее. Если, скажем, при пяти итеррациях стабильно получаем ошибку открытия файла на запись - значит уже открыт один экземпляр советника.
новый экземпляр советника не сможет открыть на запись файл уже открытый на запись ранее.
после падения терминала и его перезапуска файл для открытия будет доступен первому попавшемуся а не первому сброшенному :((
еще раз повторюсь: нужна связка конкретный чарт - конкретный советник.
ваша идея не срабатывает.
что я могу закодить по вашему "решению" ??? ;)
"должен" - не значит "будет", "там" - это "где"? если "не работал"
Слушайте, если бы предлагались только проверенные решения вы бы до сих пор с палкой-копалкой корешки бы искали. Чья это проблема, моя или ваша? С какого бодуна вы квалифицировали предложение идеи как рекомендацию решения?
С моей точки зрения постановка вопроса такая: я даю идею, вы её проверяете, если она работает вы меня информируете что она работает, в порядке минимальной благодарности.
P.S. Блин, бы в один chr файл из любопытства заглянули, что ли, вроде как на профи в работе с МТ претендуете
Тогда тупо файл в качестве локера и никаких проблем.
Candid:
Чья это проблема, моя или ваша? С какого бодуна вы квалифицировали предложение идеи как рекомендацию решения?
Потому что мне нужна именно "рекомендация решения". именно это я просил в своем первом посте - поэтому и вашу идею воспринял именно так.
вроде как на профи в работе с МТ претендуете
именно поэтому состоятельность многих "идей" вижу даже ДОТОГО как их..... ;)
если я не прав в отношении вас - напишите код эксперта который ничего не делает а только не дает запустится своей второй копии. проверьте что это действительно работает при перекомпиляциях и перезапусках терминала и запосьтьте сюда его код - все станет на свои места ;)
При крэше оставшийся файл блокирует....
два чарта, на одном висит рабочий рабочий эксперт держащий файл, на втором - копия эксперта которая не работает изза блокировки файла.
терминал упал или закрылся.
(пере)запускаем терминал. на нем два советника начинают проверять читать файл. есть гарантия что первым его захватит настоящий первый а не тот который в прошлый раз висел заблокированным? :(
третий раз повторяюсь: нужна связка ЧАРТА с ЭКСПЕРТОМ, а не блокировка одного эксперта другим.
А почему этот, самый простой вариант не использовать?
В "большом" програмированием исспользуют mutex - вот напр. здесь:
http://bitonic.wordpress.com/2008/10/09/mutex-%D0%BC%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81-%E2%80%93-%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82-%D0%BD%D0%B0-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%87%D0%B5%D0%BC/