Не смущает, то что RequestMagic это
Возвращаемое значение
Идентификатор эксперта, использованный в последнем запросе.
То есть пока нет запроса - проверять так нельзя.
- www.mql5.com
Не смущает, то что RequestMagic это
Возвращаемое значение
Идентификатор эксперта, использованный в последнем запросе.
То есть пока нет запроса - проверять так нельзя.
Дело в том, что у меня начались проблемы при
bool customCPosition::closePosition(bool clear_data=false) { ResetLastError(); Print("====== "+__FUNCSIG__+" ======"); if(my_Position.SelectByMagic(Symbol(),structPosPrep.magic)) {
else { Print("GetLastError = "+string(GetLastError())); Print("Ошибка выбора позиции по магику "+string(my_Trade.RequestMagic())+" /// "+string(structPosPrep.magic)); ExpertRemove(); }
и my_Trade.RequestMagic() тут начал выдавать 0.
Ошибка выбора позиции по магику 0 /// 27100171226312914
Это только означает, что Вы где-то сами зануляете structPosPrep.magic
Ага, до выходных не занулял, а тут занулил )))
При инициализации магик получает значение -1.
customCPosition::customCPosition() { initStruct(); readPositionFile(); if(structPosPrep.magic < 0) initMagic(); PersonalCMagic.decodeExpertMagic(structPosPrep.magic); } //+------------------------------------------------------------------+ void customCPosition::initMagic(void) { Print(__FUNCSIG__); structPosPrep.magic = PersonalCMagic.codeExpertMagic(program_name, program_version); //PersonalCMagic.decodeExpertMagic(structPosPrep.magic); } //+------------------------------------------------------------------+ void customCPosition::initStruct() { structPosPrep.SL = NULL; structPosPrep.TP = NULL; structPosIdTicBal.position_ID = -1; structPosIdTicBal.position_ticket = -1; structPosIdTicBal.start_balance = AccountInfoDouble(ACCOUNT_BALANCE); structPosPrep.limit_count = 0; structPosPrep.limit_set = false; structPosPrep.magic = -1;
Кроме того, в OnInit добавил дополнительную проверку
if(cst_Position.structPosPrep.magic == -1) { cst_Position.structPosPrep.magic = PersonalCMagic.codeExpertMagic(program_name, program_version); if(cst_Position.structPosPrep.magic == -1) cst_Position.structPosPrep.magic = 0; }
Другими словами, неоднократный вызов .SetExpertMagicNumber(...) устанавливает магик в 0.
Вот мой тестовый. Работал. А теперь перестал.
Ну правильно - генерируете свой magic, а потом пытаетесь его сравнить с
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Vladimir Karputov, 2019.11.26 13:34
Не смущает, то что RequestMagic это
Возвращаемое значение
Идентификатор эксперта, использованный в последнем запросе.
То есть пока нет запроса - проверять так нельзя.
а там "0".
Ну правильно - генерируете свой magic, а потом пытаетесь его сравнить с
а там "0".
Ну хорошо. А как узнать магик присвоенный эксперту?
И ещё раз повторю. До недавнего времени я не проводил этого сравнения. Добавил его только после того, как появилась ошибка выбора позиции по магику. И там запрос магика возвращал 0.
Ну хорошо. А как узнать магик присвоенный эксперту?
И ещё раз повторю. До недавнего времени я не проводил этого сравнения. Добавил его только после того, как появилась ошибка выбора позиции по магику. И там запрос магика возвращал 0.
А не ВЫ любите линковать папки? Если так - вероятно Вы повредили библиотеку.
А magic присвоенный не узнать никак - потому что раньше никто даже о таком и не спрашивал.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сразу хочу сказать, что проблемы начались позавчера. До этого этот код работал без нареканий.
Так вот, с воскресения код постоянно возвращает
Что случилось? Почему?
П.С. if() я добавил уже после того как начал получать ошибки проверки магика.