fxsaber#: я давно хотел спросить: зачем вы эти тесты делаете? Вы не сотрудник MQL, не авторизированный пользователь. Вам для забавы ?
Вы находите такие уязвимости в которые мне не удалость попасть за 10 лет в програминге.
Не в обиду fxsaberу хочу сказать, отвечая на ваш вопрос. Это пишется для тех кто никак не может оторваться от mql4. Для поддержания своей бесплатной библиотеки которой пользуются очень многие и все ему за неё очень благодарны.
Ну какой смысл в mql5 перебирать ордера или позиции при увеличении их общего количества? Да просто в mql4 так делали. От того и тормоза в нём такие.
А в общем fxsaber довольно хороший программист. Я так думаю… Ещё раз хочу поблагодарить его за наводку, где в моём коде тараканы…
Есть некоторые баги, которые многие пропускают считая, что это нормальное явление,
но fxsaber об этом всегда пишет, а mql правят, чем многим помогают ускоряя работу кодов.
Надеюсь, ваши сомнения развеял?
Вопрос был только о конкретном случае. Во всём остальном, в подавляющем количестве, баги отловленные fxsaber`ом вызывают только благодарность и уважение.
voidOnStart()
{
long State = -1;
while (!IsStopped())
if (OrderGetTicket(OrdersTotal() - 1) && (State != OrderGetInteger(ORDER_STATE)))
Print(EnumToString((ENUM_ORDER_STATE)(State = OrderGetInteger(ORDER_STATE))));
}
И руками откройте отложку (желательно, чтобы не было других ордеров).
2023.04.2512:57:26.983 '160325739': buy limit 1 AUDUSD at 0.666642023.04.2512:57:27.036 '160325739': accepted buy limit 1 AUDUSD at 0.666642023.04.2512:57:27.036ORDER_STATE_STARTED2023.04.2512:57:27.041ORDER_STATE_PLACED2023.04.2512:57:27.043 '160325739': order #2289634089 buy limit 1 / 1 AUDUSD at 0.66664 done in 59.632 ms
2023.04.2512:58:11.323ORDER_STATE_REQUEST_ADD2023.04.2512:58:11.352ORDER_STATE_PLACED2023.04.2512:58:11.352 '160325739': deal #2278919416 buy 1 AUDUSD at 0.66664 done (based on order #2289634089)
Может это связано с тем, что модификация отправляется из функции OnTradeTransaction()?
Сейчас буду пробовать связать OnTradeTransaction() с OnTick(). Пусть модифаит на следующем тике. Конечно это не правильно, с моей точки зрения, но как-то надо ведь сделать чтобы работало…
работаю в зацикленном скрипте, поэтому немного сложнее, тут нет никаких эвентов. в общем получается я не достаточно хорошо использовал состояние ордера.
работаю в зацикленном скрипте, поэтому немного сложнее, тут нет никаких эвентов. в общем получается я не достаточно хорошо использовал состояние ордера.
fxsaber #: я давно хотел спросить: зачем вы эти тесты делаете? Вы не сотрудник MQL, не авторизированный пользователь. Вам для забавы ?
Вы находите такие уязвимости в которые мне не удалость попасть за 10 лет в програминге.
Не в обиду fxsaberу хочу сказать, отвечая на ваш вопрос. Это пишется для тех кто никак не может оторваться от mql4. Для поддержания своей бесплатной библиотеки которой пользуются очень многие и все ему за неё очень благодарны.
Ну какой смысл в mql5 перебирать ордера или позиции при увеличении их общего количества? Да просто в mql4 так делали. От того и тормоза в нём такие.
А в общем fxsaber довольно хороший программист. Я так думаю… Ещё раз хочу поблагодарить его за наводку, где в моём коде тараканы…
fxsaber #: я давно хотел спросить: зачем вы эти тесты делаете? Вы не сотрудник MQL, не авторизированный пользователь. Вам для забавы ?
Вы находите такие уязвимости в которые мне не удалость попасть за 10 лет в програминге.
Есть некоторые баги, которые многие пропускают считая, что это нормальное явление,
но fxsaber об этом всегда пишет, а mql правят, чем многим помогают ускоряя работу кодов.
Надеюсь, ваши сомнения развеял?
Ну какой смысл в mql5 перебирать ордера или позиции при увеличении их общего количества?
Теоретически советник может иметь все время (после выполнения OnInit) полную информацию об ордерах/позициях/сделках без следующих функций.
Есть некоторые баги, которые многие пропускают считая, что это нормальное явление,
но fxsaber об этом всегда пишет, а mql правят, чем многим помогают ускоряя работу кодов.
Надеюсь, ваши сомнения развеял?
Вопрос был только о конкретном случае. Во всём остальном, в подавляющем количестве, баги отловленные fxsaber`ом вызывают только благодарность и уважение.
Теоретически советник может иметь все время (после выполнения OnInit) полную информацию об ордерах/позициях/сделках без следующих функций.
Теоретически ДА. Но ведь вы предлагаете
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2023.04.25 12:04
Запустите этот скрипт.
И руками откройте отложку (желательно, чтобы не было других ордеров).
Теоретически ДА. Но ведь вы предлагаете
Не вижу связи между приведенными вами двумя цитатами.
Не вижу связи между приведенными вами двумя цитатами.
Главное что я вижу. На этом я с благодарностью откланиваюсь…
Может это связано с тем, что модификация отправляется из функции OnTradeTransaction()?
Сейчас буду пробовать связать OnTradeTransaction() с OnTick(). Пусть модифаит на следующем тике. Конечно это не правильно, с моей точки зрения, но как-то надо ведь сделать чтобы работало…
работаю в зацикленном скрипте, поэтому немного сложнее, тут нет никаких эвентов. в общем получается я не достаточно хорошо использовал состояние ордера.
работаю в зацикленном скрипте, поэтому немного сложнее, тут нет никаких эвентов. в общем получается я не достаточно хорошо использовал состояние ордера.
Да, именно так и получилось.
Я заменил строку
на
Правда пришлось поставить проверку тикета ордера. Иначе получалась модификация дважды с соответствующей ошибкой [нет изменений]
ps; В принципе, наверное можно в цикле do while подождать пока статус ордера изменится, но не уверен, что это будет быстрей…
На всякий случай напомню, что возможны ситуации, когда ордера уже нет в действующих и ещё нет в истории.
Также, когда ордера в действующих уже нет, а позиции, открытой этим ордером, ещё нет (или наоборот, ещё есть позиция, закрытая этим ордером).