Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1) Я не думаю, что это связано с вопросом данной темы. Проблема, которую мы получаем, возникает в случае, когда запрос был успешно заполнен и позиция открыта. Но эта позиция открывается на торговом сервере, проблема, с которой мы столкнулись, это когда происходит задержка, более важная, чем обычно, и терминал MT5 получает уведомление об этой новой позиции ПОСЛЕ того, как новый тик уже обработан.
2) ... на мой взгляд, это плохой дизайн для платформы, которая позволяет явно синхронные и асинхронные торговые запросы ...
3) ... ResultRetCode синхронный, это обновление базы данных MT5 о позиции (сделке и ордере) асинхронное....1) Не согласен, и извините за невежество, но почему вы так уверены, что позиция открывается после PositionOpen() в торговом сервере без двойной проверки ResultRetcode()?
2) Согласен на 100%.
3) Наверняка ResultRetCode() синхронный, я имею ввиду, что для проверки кода результата вы (ведущий) должны запросить сервер (ведомый) несколькими "асинхронными" сообщениями.
1) Не согласен, извините за невежество, но почему вы так уверены, что позиция открывается после PositionOpen() в торговом сервере без двойной проверки ResultRetcode()?
2) Согласен на 100%.
3) Наверняка ResultRetCode() синхронный, я имею ввиду, что для проверки кода результата вы (мастер) должны запросить сервер (слейв) несколькими "асинхронными" сообщениями.
1) Эта тема о двойной записи, поэтому мы говорим о запросе заказа, который был успешным. Я никогда не писал, что не нужно дважды проверять ResultRetCode(), я писал как раз наоборот. Но это НЕ связано с двойной записью, по определению. Разве это не очевидно?
3) Возможно это деталь(непонимание ?) , но то, что вы написали не имеет смысла. В первой части вашего предложения вы сказали, что ResultRetCode() является синхронным, во второй вы сказали, что "код результата", который является тем же самым, что и ResultRetCode(), получается асинхронно. Для получения этого значения (Retcode) между сервером и терминалом нет НИКАКОЙ связи.
CTrade.PositionOpen() по умолчанию является синхронным, то есть базовый класс использует OrderSend(). Который отправляет запрос ордера и ждет ответа от сервера. Сервер возвращает результат на терминал, и код советника продолжает работу (с возвращаемым значением true или false). Общение между ведущим и ведомым завершилось. После этого вы можете проверить ResultRetcode, который уже доступен локально.
Существует ли тайм-аут для открытой позиции?
Здравствуйте, doshur, что именно вы имеете в виду под таймаутом?
1) Эта тема о двойной записи, поэтому мы говорим о запросе ордера, который был успешным. Я никогда не писал, что не нужно дважды проверять ResultRetCode(), я писал как раз наоборот. Но это НЕ связано с двойной записью, по определению. Разве это не очевидно?
3) Возможно это деталь(непонимание ?) , но то, что вы написали не имеет смысла. В первой части вашего предложения вы сказали, что ResultRetCode() является синхронным, во второй вы сказали, что "код результата", который является тем же самым, что и ResultRetCode(), получается асинхронно. Для получения этого значения (Retcode) между сервером и терминалом нет НИКАКОЙ связи.
CTrade.PositionOpen() по умолчанию является синхронным, то есть базовый класс использует OrderSend(). Который отправляет запрос ордера и ждет ответа от сервера. Сервер возвращает результат на терминал, и код советника продолжает работу (с возвращаемым значением true или false). Общение между ведущим и ведомым завершилось. После этого вы можете проверить ResultRetcode, который уже доступен локально.
Ален,
Насчет 1) я все еще не согласна, так как для меня оригинальный код doshur не проверяет ResultRetCode() и он ищет решение для "двойной записи", и для меня мы должны решить это в его коде (как предложил Malacarne). Так что для меня это не так очевидно.
По поводу 3) Вы написали "Однако ResultRetCode синхронный, это обновление базы данных MT5 о позиции (сделке и ордере) асинхронное.", поэтому мой ответ был об этом предложении.
Влюбом случае,наша дискуссия похожа на историю о полупустом стакане воды: кто-то видит его наполовину полным, а кто-то наполовину пустым, но вопрос в том, считает ли он стакан наполовину полным, или наполовину пустым ;-)))
Поэтому, если честно, я не считаю, что эти дебаты полезны и/или должны продолжаться (по крайней мере, в этой теме), так как мы можем вернуться к обходным решениям, поэтому, пожалуйста, извините за создание такого спора и, пожалуйста, продолжайте свою линию мысли, которая, я думаю, будет более подходящей, чтобы помочьdoshur и другим ребятам с такой же проблемой.
@figurelli: Поздравляю со вступлением в должность модератора ... .
Все предложенные способы решения проблемы очень хороши. Я ценю это и узнаю некоторые идеи по ходу дела.
Вы, ребята, очень полезны.
Теперь мой советник кажется более устойчивым.
...
Поэтому, если честно, я не считаю, что эти дебаты полезны и/или должны продолжаться (по крайней мере, в этой теме), так как мы можем вернуться к обходным решениям, поэтому, пожалуйста, извините за создание такого спора и, пожалуйста, продолжайте свою линию мысли, которая, я думаю, будет более подходящей, чтобы помочьdoshur и другим ребятам с той же проблемой.