Потдверждаю выделенное. Жесткое зависание при срабатывании пачки.
Понаблюдал за этой ситуацией. Со стороны выглядит это так.
Цена доходит до пачки ордеров. Они все горят желтым. Потом отходит обратно - горят зеленым. Ничего не исполнено.
Через несколько секунд зависание на десятки секунд всего Терминала. После отвисания видно, что все ордера, что горели желтым, а потом зеленым, были исполнены в первый момент касания ценой.
Т.е. Терминал долгое время не получает никаких данных о срабатывании пачки, хоть на сервере она уже давно сработала. Затем происходит зависание. И при отвисании ситуации становится такой же, как на сервере.
Если смотреть пустой Терминал, залогиненный на этот же счет, то там все четко отрабатывает. Боевой же Терминал (где трудятся роботы) - такие жесткие зависания.
Что делать?
ЗЫ Предолагаю, что это как-то связано в HistorySelect. Скорее всего, какой-то конфликт происходит. Т.к. робот через HistorySelect активно делает проверки. И когда идет дозапись в историю в результате совершения сделок, а параллельно работает HistorySelect, то происходит какой-то конфликт.
При зависании terminal64.exe полностью загружает ядро CPU.
Потдверждаю выделенное. Жесткое зависание при срабатывании пачки.
Понаблюдал за этой ситуацией. Со стороны выглядит это так.
Цена доходит до пачки ордеров. Они все горят желтым. Потом отходит обратно - горят зеленым. Ничего не исполнено.
Через несколько секунд зависание на десятки секунд всего Терминала. После отвисания видно, что все ордера, что горели желтым, а потом зеленым, были исполнены в первый момент касания ценой.
Т.е. Терминал долгое время не получает никаких данных о срабатывании пачки, хоть на сервере она уже давно сработала. Затем происходит зависание. И при отвисании ситуации становится такой же, как на сервере.
Если смотреть пустой Терминал, залогиненный на этот же счет, то там все четко отрабатывает. Боевой же Терминал (где трудятся роботы) - такие жесткие зависания.
Что делать?
ЗЫ Предолагаю, что это как-то связано в HistorySelect. Скорее всего, какой-то конфликт происходит. Т.к. робот через HistorySelect активно делает проверки. И когда идет дозапись в историю в результате совершения сделок, а параллельно работает HistorySelect, то происходит какой-то конфликт.
Следующий советник у меня в 100% случаев воспроизводит зависание на MQ-Demo.
// Воспроизведение зависания Терминала во время торговли.// https://www.mql5.com/ru/forum/342097/page3#comment_16653213#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
inputint inAmount = 5;
intOnInit()
{
return(MessageBox("Run?", NULL, MB_YESNO) == IDNO);
}
ulong IsHistoryDeals( constlong TimeMsc )
{
ulong Res = 0;
Alert("Hello!"); // Без этого Алерта не виснет.if (::HistorySelect(TimeMsc / 1000, INT_MAX))
{
constint Total = ::HistoryDealsTotal();
for (int i = Total - 1; !Res && (i >= 0); i--)
{
constulong Ticket = ::HistoryDealGetTicket(i);
if ((::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC) >= TimeMsc) &&
(::HistoryDealGetString(Ticket, DEAL_SYMBOL) == _Symbol))
Res = Ticket;
}
}
return(Res);
}
voidOnTick()
{
while (!IsStopped() && (OrdersTotal() < inAmount))
if (!IsHistoryDeals(TimeCurrent() * 1000))
OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0, NULL, 0, 0, INT_MIN);
for (int i = OrdersTotal() - 1; !IsStopped() && i >= 0; i--)
if (!IsHistoryDeals(TimeCurrent() * 1000) && OrderSelect(i, SELECT_BY_POS))
OrderModify(OrderTicket(), OrderClosePrice(), 0, OrderClosePrice(), 0, INT_MIN);
}
Следующий советник у меня в 100% случаев воспроизводит зависание на MQ-Demo.
Получилось воспроизвести?
Если зайти на тот же счет с другого терминала, то будет видно, что советник торгует. Т.е. основной терминал висит, но советник на нем продолжает работать.
Вишенка.
// Вызывает зависание всех Терминалов, что подключены к данному торговому счету.#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
inputint inAmount = 5;
intOnInit()
{
return(MessageBox("Run?", NULL, MB_YESNO) == IDNO);
}
voidOnTick()
{
while (!IsStopped() && (OrdersTotal() < inAmount))
OrderSendAsync(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0, NULL, 0, 0, INT_MIN);
for (int i = OrdersTotal() - 1; !IsStopped() && i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS))
OrderModifyAsync(OrderTicket(), OrderClosePrice(), 0, OrderClosePrice(), 0, INT_MIN);
}
Можно зайти на один и тот же счет одновременно с нескольких Терминалов на одной машине или на разных. Запустить этот советник на одном Терминале. И вызвать тем самым зависание ВСЕХ Терминалов!
Воспроизводится?
ЗЫ Совершение сделки по какой-то причине вызывает рисование всех сделок из истории.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
1.
2.
3.
Похоже после этого у тебя остался только один выход - обмани систему - прикинься буквой!
Потдверждаю выделенное. Жесткое зависание при срабатывании пачки.
Понаблюдал за этой ситуацией. Со стороны выглядит это так.
Цена доходит до пачки ордеров. Они все горят желтым. Потом отходит обратно - горят зеленым. Ничего не исполнено.
Через несколько секунд зависание на десятки секунд всего Терминала. После отвисания видно, что все ордера, что горели желтым, а потом зеленым, были исполнены в первый момент касания ценой.
Т.е. Терминал долгое время не получает никаких данных о срабатывании пачки, хоть на сервере она уже давно сработала. Затем происходит зависание. И при отвисании ситуации становится такой же, как на сервере.
Если смотреть пустой Терминал, залогиненный на этот же счет, то там все четко отрабатывает. Боевой же Терминал (где трудятся роботы) - такие жесткие зависания.
Что делать?
ЗЫ Предолагаю, что это как-то связано в HistorySelect. Скорее всего, какой-то конфликт происходит. Т.к. робот через HistorySelect активно делает проверки. И когда идет дозапись в историю в результате совершения сделок, а параллельно работает HistorySelect, то происходит какой-то конфликт.
При зависании terminal64.exe полностью загружает ядро CPU.
Build 2470. Это больше не компилируется, работало нормально до 2450.
Смотря как используется. Так не устроит?
Режим показа позиций в истории торгов.
Правильно ли показывать нулевые свопы? В режиме сделок нулевые значения выводятся пустыми, а не 0.00.
Потдверждаю выделенное. Жесткое зависание при срабатывании пачки.
Понаблюдал за этой ситуацией. Со стороны выглядит это так.
Цена доходит до пачки ордеров. Они все горят желтым. Потом отходит обратно - горят зеленым. Ничего не исполнено.
Через несколько секунд зависание на десятки секунд всего Терминала. После отвисания видно, что все ордера, что горели желтым, а потом зеленым, были исполнены в первый момент касания ценой.
Т.е. Терминал долгое время не получает никаких данных о срабатывании пачки, хоть на сервере она уже давно сработала. Затем происходит зависание. И при отвисании ситуации становится такой же, как на сервере.
Если смотреть пустой Терминал, залогиненный на этот же счет, то там все четко отрабатывает. Боевой же Терминал (где трудятся роботы) - такие жесткие зависания.
Что делать?
ЗЫ Предолагаю, что это как-то связано в HistorySelect. Скорее всего, какой-то конфликт происходит. Т.к. робот через HistorySelect активно делает проверки. И когда идет дозапись в историю в результате совершения сделок, а параллельно работает HistorySelect, то происходит какой-то конфликт.
Следующий советник у меня в 100% случаев воспроизводит зависание на MQ-Demo.
Получилось воспроизвести?
ЗЫ Лаконичный OnTick за счет MT4-style.
Добрый день
Такое впечатление, что некорректно работает: Показать на графике --- --- Удалить все сделки
Пример: Удалили все сделки - После нажатия кнопки BUY (SELL), открывается сделка и на графике появляется одна метка.
При закрытии аналогично. (было до обновления)
После обновления терминала при нажатии кнопки BUY (SELL) высыпает на графике всю историю торговли!
И приходится каждый раз убирать с графика через меню.
Следующий советник у меня в 100% случаев воспроизводит зависание на MQ-Demo.
Получилось воспроизвести?
Если зайти на тот же счет с другого терминала, то будет видно, что советник торгует. Т.е. основной терминал висит, но советник на нем продолжает работать.
Вишенка.
Можно зайти на один и тот же счет одновременно с нескольких Терминалов на одной машине или на разных. Запустить этот советник на одном Терминале. И вызвать тем самым зависание ВСЕХ Терминалов!
Воспроизводится?
ЗЫ Совершение сделки по какой-то причине вызывает рисование всех сделок из истории.
Смотря как используется. Так не устроит?
Я не хочу использовать строку.
Спасибо.
Похоже после этого у тебя остался только один выход - обмани систему - прикинься буквой!
ЗЫ Совершение сделки по какой-то причине вызывает рисование всех сделок из истории.
А причина зависания, случайно, не в этом?
Рисование много ресурсов жрет, если сделок тысячи.
Можно попробовать на инструменте, где нет истории.
А причина зависания, случайно, не в этом?
Рисование много ресурсов жрет, если сделок тысячи.
Можно попробовать на инструменте, где нет истории.
Поэтому и приписал. Мало ли. Я пока остановил торговые эксперименты через MT5. Уж больно крутой баг.
ЗЫ Возможно, только на моей конфигурации воспроизводится.