Ошибки, баги, вопросы - страница 3379
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему линии начинаются не с 1 и выходят за пределы рисунка???
Количество необходимых вычислений можно оценить по исходнику этой функции.
В последнем build 3902 появилась какая то трудноуловимая ошибка при компиляции - если параметрический макрос расположен много раньше применения то выдается какая то несуществующая абсурдная ошибка, а если его продублировать непосредственно перед применением, то все нормально - не смог с ходу разобраться
Проверил - эта ошибка и раньше была, а в build 3902 проявилась по совпадению - удалил пару неиспользуемых макросов и порядковый номер макроса, на котором возникает ошибка сместился с неиспользуемого на используемый макрос
Количество необходимых вычислений можно оценить по исходнику этой функции.
Не понял, я не нашёл CGraphic в родителях LineChart.mqh.
А при чём тут количество вычислений?
Ваш ответ слишком краткий, для моего понимания. Сделайте его пожалуйста чуть чуть более развёрнутым.
Не понял, я не нашёл CGraphic в родителях LineChart.mqh.
А при чём тут количество вычислений?
Ваш ответ слишком краткий, для моего понимания. Сделайте его пожалуйста чуть чуть более развёрнутым.
Сравнил исходники обеих библиотек. Такое ощущение, что в самой LineChart слишком мало вычислений. Будто не дописана до рабочего состояния.
Проверил - эта ошибка и раньше была, а в build 3902 проявилась по совпадению - удалил пару неиспользуемых макросов и порядковый номер макроса, на котором возникает ошибка сместился с неиспользуемого на используемый макрос
Без воспроизведения поправить не смогут, наверное.
Сравнил исходники обеих библиотек. Такое ощущение, что в самой LineChart слишком мало вычислений. Будто не дописана до рабочего состояния.
Понятно. Спасибо. Я то думал это я делаю, что то не так.
Читал статью "Статистические распределения вероятностей в MQL5", код там немного устарел, чуть чуть поправил-заработало,
а вот выбранный способ визуализации у меня не захотел работать, вот и решил по быстренькому сделать визуализацию с помощью LineChart.mqh,
но если ошибки вылазят даже при минимальном наборе данных, то лучше и не пытаться ничего делать на этой библе.
Без воспроизведения поправить не смогут, наверное.
Простого кода не смог вычленить
Еще особенность: перед проблемным макро должно быть макро с вычислением и обязательно в скобках, например так:
Извините, это мой машинный перевод на русский, за которым следует английский оригинал:
Функция OnTradeTransaction () вызывается от 1 до 4 раз для одной и той же сделки, в зависимости от сделки. Согласно образцу советника (из MQ) с OnTradeTransaction() из https://www.mql5.com/en/docs/event_handlers/ontradetransaction , отдельные шаги бронирования в пределах торгового ордера суммируются советником (или ручной заказ), если они происходят в течение одной секунды:
Это сложно, очень сложно и фактически невозможно использовать в советнике, которому требуется только OnTradeTransaction() для подтверждения торговых приказов на сервер и реализованных значений:
за которым следует вызов с trans.Ord_State = STATE_STARTED, снова order=#2. Кто и как должен в этом разобраться?
Все это заставило меня искать более простое решение, вместо того, чтобы ждать, пока пройдут различные шаги и этапы, когда они могут произойти. Чтобы упростить работу советника (и написать об этом статью), я просто хочу использовать билеты ордера и/или позиции через PositionSelectByTicket(ulong Ticket) или OrderSelect(ulong Ticket) для запроса значений открывать позиции или отложенные ордера и обновлять их для дальнейших целей. Кроме того, время и билет сохраняются как статические переменные, поэтому дальнейшая обработка не происходит при повторном вызове OnTradeTransaction() в течение 1 секунды с тем же билетом.
Вот макет OnTradeTransaction() всего из 12 строк и пример других функций моей идеи:
Как уже было сказано, это будет работать ТОЛЬКО в том случае, если значения соответствующей открытой позиции или отложенного ордера больше НЕ изменяются между последующими вызовами OnTradeTransaction() в терминале. Другими словами: поступает ли измененная позиция/ордер до или с первым вызовом (после ORDER_STATE_STARTED – но даже это не первый вызов!) OnTradeTransaction() в терминале, или они все еще изменяются/обновляются после первого вызова OnTradeTransactio() относительно этого заказа ?
Sorry this is my Russian machine translation followed by the English original:
The OnTradeTransaction() function is called between 1 and 4 times for the same trade, depending on the trade. According to the Sample EA (from MQ) with OnTradeTransaction() from https://www.mql5.com/en/docs/event_handlers/ontradetransaction , the individual up to 4 booking steps within a trade order are summarized by an EA (or a manual order) if they occur within one second:
This is hard, very complicated and actually impossible to use in an EA that only needs OnTradeTransaction() to confirm its trade orders to the server and the values realized:
followed by a call with trans.Ord_State = STATE_STARTED, again order=#2. Who is supposed to get their head around this and how?
All this led me to look for a simpler solution instead of waiting for the various steps and stages to work through when they might occur. To simplify the whole thing for an EA (and to write an article about it), I just want to use the tickets of the order and/or position via PositionSelectByTicket(ulong ticket) or OrderSelect(ulong ticket) to query the values of the open positions or pending orders and update them for further purposes. Additionally, the time and the ticket are stored as a static variables, so that no further processing happens when OnTradeTransaction() is called again within 1 second with the same ticket.
Here is the layout of OnTradeTransaction() with only 12 lines and the sample the other functions of my idea:
As said, this would work ONLY if the values of the respective open position or pending order are NOT changed anymore between the subsequent calls of OnTradeTransaction() in the terminal. In other words: Does the changed position/order arrive before or with the first call (after ORDER_STATE_STARTED - but not even that is the first call!) of OnTradeTransaction() in the terminal or are they still changed/updated after the first call of OnTradeTransactio() concerning this order?
Ожидалось: "ABCD"