если бы разработчики дали exit / abort штатный, тогда бы можно было корректно прерывать обработку данные если, к примеру, не готов ТФ - данные OHLC , для обработки отправки ордера на сервер тоже пригодилось бы... удобно в общем прервать код в любом месте и выйти до следующего тика не распутывая бесконечные return() к выходу из OnTick()
Так-то можно костылище изобразить, но совсем с юзабилити там плохо, даже показывать не буду, хотя должно работать.
Хотя и юзабилити вроде подтянуть получилось. В общем, каждый вызов функции или метода с возможным выходом, в том числе во вложенных функциях, оборачивать в макрос _call. Кому интересно, дальше сами для всех обработчиков пишите. Писано на коленке, как проверка идеи, так, что не тестилось, от слова - совсем.
В MT5 нет никакой защиты от случайного закрытия Терминала. Недавно был такой сценарий.
Терминал и браузер раскрыты на все окно. Нахожусь в браузере.
Браузер завис, жму на крестик в правом-верхнем углу.
Не закрывается, жму еще несколько раз.
В определенный момент во время нажатий браузер закрывается - исчезает окно. И в это время крестик Терминала под курсором, куда жал.
Терминал закрывается, при этом настолько быстро, что это просто не заметно. Особенно, когда открыто много Терминалов.
Это очень неприятная ситуация во время, например, пакетной Оптимизации. Но еще хуже - для боевого советника. Можно тупо не заметить, что прикончил свой боевой Терминал.
Поставил такую защиту.
voidOnDeinit( constint Reason )
{
if (Reason == REASON_CLOSE)
MessageBox("Terminal is being closed!");
}
При закрытии появляется сообщение на пять секунд. Поэтому можно понять, что на самом деле произошло. Странно, что в Терминале нет защиты.
В MT5 нет никакой защиты от случайного закрытия Терминала. Недавно был такой сценарий.
Терминал и браузер раскрыты на все окно. Нахожусь в браузере.
Браузер завис, жму на крестик в правом-верхнем углу.
Не закрывается, жму еще несколько раз.
В определенный момент во время нажатий браузер закрывается - исчезает окно. И в это время крестик Терминала под курсором, куда жал.
Терминал закрывается, при этом настолько быстро, что это просто не заметно. Особенно, когда открыто много Терминалов.
Это очень неприятная ситуация во время, например, пакетной Оптимизации. Но еще хуже - для боевого советника. Можно тупо не заметить, что прикончил свой боевой Терминал.
Поставил такую защиту.
При закрытии появляется сообщение на пять секунд. Поэтому можно понять, что на самом деле произошло. Странно, что в Терминале нет защиты.
Для любой реализации утверждений на mql есть смысл использовать функцию DebugBreak для режима отладки. Очень облегчает жизнь при отладке и намного полезнее просто аварийного вылета.
На хедже позиция может состоять из нескольких IN-сделок. Это происходит при частичном исполнении.
При этом ордер, что частично исполняется, меняет свой ORDER_TIME_SETUP(_MSC) на время исполнения первой (возможно, предпоследней) сделки. Т.е. по истории нельзя будет определить, когда, например, был выставлен BuyLimit.
Как следствие, позиция на хедже может иметь дробную цену открытия, как это часто можно наблюдать на неттинге.
Кстати, аналог Assert
дык он то и нужОн очень!
если бы разработчики дали exit / abort штатный, тогда бы можно было корректно прерывать обработку данные если, к примеру, не готов ТФ - данные OHLC , для обработки отправки ордера на сервер тоже пригодилось бы... удобно в общем прервать код в любом месте и выйти до следующего тика не распутывая бесконечные return() к выходу из OnTick()
Хотя и юзабилити вроде подтянуть получилось. В общем, каждый вызов функции или метода с возможным выходом, в том числе во вложенных функциях, оборачивать в макрос _call. Кому интересно, дальше сами для всех обработчиков пишите. Писано на коленке, как проверка идеи, так, что не тестилось, от слова - совсем.
В MT5 нет никакой защиты от случайного закрытия Терминала. Недавно был такой сценарий.
Это очень неприятная ситуация во время, например, пакетной Оптимизации. Но еще хуже - для боевого советника. Можно тупо не заметить, что прикончил свой боевой Терминал.
Поставил такую защиту.
При закрытии появляется сообщение на пять секунд. Поэтому можно понять, что на самом деле произошло. Странно, что в Терминале нет защиты.
В MT5 нет никакой защиты от случайного закрытия Терминала. Недавно был такой сценарий.
Это очень неприятная ситуация во время, например, пакетной Оптимизации. Но еще хуже - для боевого советника. Можно тупо не заметить, что прикончил свой боевой Терминал.
Поставил такую защиту.
При закрытии появляется сообщение на пять секунд. Поэтому можно понять, что на самом деле произошло. Странно, что в Терминале нет защиты.
Есть несколько вариантов попроще.
Есть несколько вариантов попроще.
На VPS тоже может закрыться. У меня там эксперты посылают Push.
А при торможении интерфейса винды действительно легко нажать не тот крестик. Я нарывался, теперь закрываю на таскбаре в контекстном меню.
Есть несколько вариантов попроще.
Установить менеджер рабочих столов и выделить один рабочий стол под браузер и всякую муть, а для терминалов выделить другой рабочий стол.
Или установить Linux (менеджер рабочих столов идёт в комплекте :) )
Кстати, аналог Assert
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2020.04.07 18:47
В MT5 очень легко находить частичное исполнение.На хедже позиция может состоять из нескольких IN-сделок. Это происходит при частичном исполнении.
При этом ордер, что частично исполняется, меняет свой ORDER_TIME_SETUP(_MSC) на время исполнения первой (возможно, предпоследней) сделки. Т.е. по истории нельзя будет определить, когда, например, был выставлен BuyLimit.
Как следствие, позиция на хедже может иметь дробную цену открытия, как это часто можно наблюдать на неттинге.