Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я вернулся и перечитал то, что вы считаете плохим дизайном.
В старом mt4 такого класса не существует. Обычный метод проверки Successful_Orders внутри - Ticket#==(-1) && GetLastError(). Я никогда не видел случая, когда ваш ордер возвращает правильный тикет# и GLE=0. Но при следующем тике, ваш OrdersTotal() все еще возвращает 0.
Имейте в виду, что я не изучил всю документацию по mql5. Однако, если там сказано, что информация PositionSelect_Information не обновляется до более позднего времени. И кто-то использует PositionSelect для оценки своей логики входа. Тогда этот человек должен дождаться обновления информации PositionSelect_Information перед выходом из логики отправки ордеров.
Что касается потоков... Я говорил о нескольких потоках по сравнению с одним потоком для отправки ордеров. В смысле одновременного открытия ордеров в одно и то же время. Это может быть или не быть уместным здесь.
Я вернулся и перечитал то, что вы считаете плохим дизайном.
В old-mt4 эти классы не существуют. Обычный метод проверки Successful_Orders внутри - Ticket#==(-1) && GetLastError(). Я никогда не видел случая, когда ваш ордер возвращает правильный ticket# и GLE=0. Но при следующем тике, ваш OrdersTotal() все еще возвращает 0.
Имейте в виду, что я не изучил всю документацию по mql5. Однако, если там сказано, что информация PositionSelect_Information не обновляется до более позднего времени. И кто-то использует PositionSelect для оценки своей логики входа. Тогда этот человек должен дождаться обновления информации PositionSelect_Information перед выходом из логики отправки ордеров.
Что касается потоков... Я говорил о нескольких потоках по сравнению с одним потоком для отправки ордеров. В смысле одновременного открытия ордеров в одно и то же время. Здесь это может быть уместно или нет.
В документации о PositionSelect ничего не сказано о "не обновляется до более позднего времени". Там только говорится, что даже если PositionSelect верен, информация о позиции может быть устаревшей, что не имеет отношения к вашему вопросу.
Я най ду время и проведу несколько тестов, когда рынок будет открыт, чтобы не сказать глупость, более полный ответ будет позже.
В документации о PositionSelect ничего не говорится о "не обновляется до позднего времени". Там только говорится, что даже если PositionSelect верен, информация о позиции может быть устаревшей, что не имеет отношения к вашему вопросу.
Я най ду время сделать несколько тестов, когда рынок будет открыт, чтобы не сказать глупость, более полный ответ позже.
K..... и btw, если в документе ничего не сказано, то я с вами полностью согласен.
Вопрос, который мы собираемся задать Service_Desk, в конечном итоге звучит так: "Почему вы не можете обновить Position_Information, когда trade.PositionOpen()==true?".
Возможно, у них будет хороший ответ для нас .
Нет. Я как раз думал об этом... Возможно, было бы полезно, если бы все заинтересованные люди написали тикет в ServiceDesk об этой проблеме. Однако я очень скептически отношусь к тому, что MQ захочет изменить этот дизайн. Но мы можем попробовать.
Люди могут написать в ServiceDesk и сообщить номер тикета здесь. Мой
Я также сообщил в службу поддержки, #933192 | 2014.01.19 14:44
MQ на самом деле может легко переделать это, чтобы иметь функцию тайм-аута?
Например, нет ответа, тогда мы получим ошибку, что-то вроде этого?
MQ на самом деле может легко переделать это, чтобы иметь функцию тайм-аута?
Например, нет ответа, тогда мы получим ошибку, что-то в этом роде?
Они сделали именно обратное. Когда mql5 был создан, там был параметр таймаута для функции типа PositionSelect.
Но позже они убрали его, см. пункт 9 здесь https://www.mql5.com/en/forum/53/page5#comment_14479.
Я согласен с доводами о плохом дизайне, но, на мой взгляд, основная проблема MQL5 заключалась в том, чтобы адаптировать успешный код, основанный на Forex, для работы в таком виде с фондовыми рынками (что на самом деле является отличной вещью).
Например, несколько фондовых рынков используют протокол FIX в качестве стандарта, и для меня этот коммуникационный протокол не является простым для адаптации какого-либо кода или архитектуры.
В любом случае, я считаю, что у ребят из MQ был вызов времени, и они должны были создать MQL5 на основе MQL4, а не с нуля. Я помню, что чемпионат в том году был приостановлен, чтобы у них было больше времени.
Так что, возможно, эта тема может стать отличным советом для будущего MQL6 и для действительно новой архитектуры с нуля, в основном в отношении устойчивости к транзакциям и агностических решений для работы на любом рынке.
MQ на самом деле может легко переделать это, чтобы иметь функцию тайм-аута?
Например, если нет ответа, то мы получим ошибку, что-то в этом роде?
Традиционно, TimeOut не означает, что ордер не станет позицией. Вам придется ждать в течение длительного периода времени... проверяя, станет ли он позицией... и в конечном итоге приостановить торговлю, если ордер не будет исполнен.
Я думаю, что MQ согласился бы с фигурантом насчет того, что это ошибка программиста. Потому что в функциях, на которых построен trade.PositionOpen, ясно сказано, что нужно проверять и другие вещи.
****** (Добавление личной повестки дня ... вы можете прекратить чтение на этом моменте) *******
Это причина, по которой я не преследую новичков-программистов по поводу функций и их возвращаемых значений, когда помогаю им на mql_форуме. Я не вижу смысла говорить, что всегда делайте следующее.
if( OrderSend()<0 ) { Print( GetLastError() ); }
Предполагается, что это автоматический трейдер... вы можете быть далеко... и что он делает - Print()?
В моем понимании, Error_Handling и Error_Reporting - это 2_очень разных монстра. Попытка объяснить, как правильно обработать ошибку, может занять несколько страниц, и это очень личное дело трейдера, сколько раз он должен повторить попытку или даже должен ли он прекратить торговлю.
**** Теперь я не говорю, что если новичок кодирует советника и у него возникают проблемы с торговлей... что они не должны Print( GetLastError(); ) <- Это должно быть очевидно. Но если я собираюсь сказать им, чтобы они всегда получали Get_Error, то я также должен сказать им, чтобы они всегда обрабатывали Handle_Error. *** Конец программы. ****
Они сделали в точности обратное. Когда создавался mql5, там был параметр таймаута для функции типа PositionSelect.
Но позже его убрали, см. пункт 9 здесь https://www.mql5.com/en/forum/53/page5#comment_14479.
Пора возродить это?
Я так не думаю. Синхронный торговый запрос должен быть синхронным во всех аспектах. Это так просто.
Здесь запрос синхронный, но затем вы должны управлять асинхронными вещами. И об этом ничего не документировано.