Из Вашего скрина история bid-цен (по которым должны акцептироваться и исполняться SELL-ордера) в Тестере.
Сделал такой корректировщик Bid/Ask по Last выбираемым из стакана
bool Correct_last(MqlTick &Tick, bool skip_same_last_){// skip_same_last_ - пропустить тики с той же ценой, если объемы не важны для стратегии, это ускорит работу тестераstaticdouble prev_last_buy=-1,prev_last_sell=-1;
if((Tick.flags&TICK_FLAG_LAST)>0){//Last тикif((Tick.flags&TICK_FLAG_SELL)>0){//Last Sell тикif(prev_last_sell==Tick.last){return skip_same_last_;}//пропустить тики с той же ценой, если skip_same_last_==true
prev_last_sell=Tick.last;
Tick.bid=Tick.last;//корректировать только 1-й тик на уровне
}
elseif((Tick.flags&TICK_FLAG_BUY)>0){//Last Buy тикif(prev_last_buy==Tick.last){return skip_same_last_;}//пропустить тики с той же ценой, если skip_same_last_==true
prev_last_buy=Tick.last;
Tick.ask=Tick.last;//корректировать только 1-й тик на уровне
}
}
returnfalse;
}
Корректирую Bid/Ask только первого тика на новом уровне, а не последнего, так как заранее неизвестно какой тик будет последним и по цене уровня и в серии.
Заодно сделал пропуск Last-ов по одинаковой цене, для стратегий не использующих объемы.
Вызов такой:
sinputbool correct_exchange=false;//Fix non‑trading and Last ticks for exchanges.sinputbool skip_same_last=false;//Skip the Last ticks at the same price if the strategy does not use volumes. For exchange instruments.
...
onTick(){
...
if(isEXECUTION_EXCHANGE && correct_exchange && Correct_last(Tick,skip_same_last)){return;}//если биржевое исполнение, то записать Last в Bid/Ask, и если надо, то удалить тики по повторяющейся цене для скорости в стратегиях, где объем не важен
//сохраняем исправленные тики или используем в реале
...
}
Почистил тики с одинаковым Last так как volume не использую, объем файлов для мат. режима с 240 до 107 мб сократился, т.е. будет в 2+ раза быстрее тестироваться. Кастомный символ примерно так же сократится.
там возможная причина что мало персон (клиентов) торгуют МТ5 в РФ в ф-м - это экономически не интересно ни разрабу, ни брокеру... заморачиваться надо и не то что правок а прям много чего делать надо, чтобы ок было всё в базовой комплектации... ) ИМХО.
Кто ж против - я только за! Надо запросы делать на правки!!! (всем) и указывать на недостатки в работе тестера в том числе... там еще и данные по символам вроде криво отдаются... самое элементарное - режим неттинг, мосбиржа при запросе - брокер хэдж отдаёт...
Там же еще есть же и серверная часть МТ5 -в общем работы - куча!!! ) (вагон и маленькая тележка) )
Так если поработать, то и клиенты пойдут, которые будут видеть правильную работу тестера, брокера и биржи.
Тут выше говорили, что биржа просела. Вот и надо поднимать предоставляя рабочую инфраструктуру, а не то что есть сейчас... хромое, которое без костылей не работает правильно.
самое элементарное - режим неттинг, мосбиржа при запросе - брокер хэдж отдаёт...
А я недавно просил их сделать мне хедж для MT5, ответили, что их инструменты только неттинговые. Но думаю, что можно, просто не хотят/не умеют. Придется дорабатывать под неттинг.
На всех 3х скриншотах после серии Last сработавших за одну миллисекунду, через 5 миллисекунд появляется тик изменяющий Bid или Ask. То есть так и происходит, как вы предложили. Почему так быстро? Наверно чьи то стоп-лимитки активировались после прохождения нескольких уровней в стакане. Либо кто-то супер быстрый успел обычную лимитку отправить.
Нет. Сейчас Bid/Ask изменяются, если люди ставят лимитные заявки. Если исполнение заявок произошло, то обновления краёв стакана не происходит, пока не будут поставлены по ним новые лимитные заявки. Если после каждой транзакции транслировать края стакана с учётом того, что было до транзакции и сколько съели в глубь, то и исполнение стоп ордеров ( в т.ч. SL) будет более корректным.
Aleksey Vyazmikin #: Нет. Сейчас Bid/Ask изменяются, если люди ставят лимитные заявки. Если исполнение заявок произошло, то обновления краёв стакана не происходит, пока не будут поставлены по ним новые лимитные заявки. Если после каждой транзакции транслировать края стакана с учётом того, что было до транзакции и сколько съели в глубь, то и исполнение стоп ордеров ( в т.ч. SL) будет более корректным.
А... Это описание того, что происходит в онлайн торговле, а не в тестере? Тогда да - очень странно, что так происходит.
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
Не понимаю, в чем проблема?
"Покупка по рынку" - это покупка из стакана. Стакан наполнен лимитными ордерами.
Aleksei Kuznetsov #: А... Это описание того, что происходит в онлайн торговле, а не в тестере? Тогда да - очень странно, что так происходит.
Это описание того, как реальность отображается в тестере через тиковую историю. Если заявки Ask/Bid никто не поставил сразу в истории после смещения уровня в стакане по причине заключения сделок (изполнения ордеров), то фактически тестер будет думать о старых значениях, в то время как они уже новые но не из-за новых заявок, а по той причине, что часть заявок исполнена. Таким образом реальный стакан будет показывать одни значения, а в тестере будите видеть другие значения.
Сделаю оговорку, что это чисто логическое умозаключение, подлежащее проверке.
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
Тут могут быть разные причины - или прокладка (шоюз) так настроена между сервером, интерпретатором (шлюзом) и биржей, или внутреннее исполнение без вывода на биржу (типа сами контрагенты), или ещё чего.
Главная разница - комиссия - начисляют они её бирже или нет.
Это описание того, как реальность отображается в тестере через тиковую историю. Если заявки Ask/Bid никто не поставил сразу в истории после смещения уровня в стакане по причине заключения сделок (изполнения ордеров), то фактически тестер будет думать о старых значениях, в то время как они уже новые но не из-за новых заявок, а по той причине, что часть заявок исполнена. Таким образом реальный стакан будет показывать одни значения, а в тестере будите видеть другие значения.
Сделаю оговорку, что это чисто логическое умозаключение, подлежащее проверке.
Тогда это то же самое, что я предлагаю сделать MQ - не старый уже выкупленный уровень использовать, а по цене Last. Т.е. все новые Last записывать, как новые Ask|Bid. Это делает мой код выше, который и может быть примером для MQ.
Это неправильно.
Из Вашего скрина история bid-цен (по которым должны акцептироваться и исполняться SELL-ордера) в Тестере.
Сделал такой корректировщик Bid/Ask по Last выбираемым из стакана
Корректирую Bid/Ask только первого тика на новом уровне, а не последнего, так как заранее неизвестно какой тик будет последним и по цене уровня и в серии.
Заодно сделал пропуск Last-ов по одинаковой цене, для стратегий не использующих объемы.
Вызов такой:
Почистил тики с одинаковым Last так как volume не использую, объем файлов для мат. режима с 240 до 107 мб сократился, т.е. будет в 2+ раза быстрее тестироваться. Кастомный символ примерно так же сократится.
там возможная причина что мало персон (клиентов) торгуют МТ5 в РФ в ф-м - это экономически не интересно ни разрабу, ни брокеру... заморачиваться надо и не то что правок а прям много чего делать надо, чтобы ок было всё в базовой комплектации... ) ИМХО.
Кто ж против - я только за! Надо запросы делать на правки!!! (всем) и указывать на недостатки в работе тестера в том числе... там еще и данные по символам вроде криво отдаются... самое элементарное - режим неттинг, мосбиржа при запросе - брокер хэдж отдаёт...
Там же еще есть же и серверная часть МТ5 -в общем работы - куча!!! ) (вагон и маленькая тележка) )
Так если поработать, то и клиенты пойдут, которые будут видеть правильную работу тестера, брокера и биржи.
Тут выше говорили, что биржа просела. Вот и надо поднимать предоставляя рабочую инфраструктуру, а не то что есть сейчас... хромое, которое без костылей не работает правильно.
самое элементарное - режим неттинг, мосбиржа при запросе - брокер хэдж отдаёт...
На всех 3х скриншотах после серии Last сработавших за одну миллисекунду, через 5 миллисекунд появляется тик изменяющий Bid или Ask. То есть так и происходит, как вы предложили. Почему так быстро? Наверно чьи то стоп-лимитки активировались после прохождения нескольких уровней в стакане. Либо кто-то супер быстрый успел обычную лимитку отправить.
Нет. Сейчас Bid/Ask изменяются, если люди ставят лимитные заявки. Если исполнение заявок произошло, то обновления краёв стакана не происходит, пока не будут поставлены по ним новые лимитные заявки. Если после каждой транзакции транслировать края стакана с учётом того, что было до транзакции и сколько съели в глубь, то и исполнение стоп ордеров ( в т.ч. SL) будет более корректным.
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
А... Это описание того, что происходит в онлайн торговле, а не в тестере? Тогда да - очень странно, что так происходит.
Это описание того, как реальность отображается в тестере через тиковую историю. Если заявки Ask/Bid никто не поставил сразу в истории после смещения уровня в стакане по причине заключения сделок (изполнения ордеров), то фактически тестер будет думать о старых значениях, в то время как они уже новые но не из-за новых заявок, а по той причине, что часть заявок исполнена. Таким образом реальный стакан будет показывать одни значения, а в тестере будите видеть другие значения.
Сделаю оговорку, что это чисто логическое умозаключение, подлежащее проверке.
тут уж если обсуждаем МТ5 - я еще заметил странность визуально еще проверю и запрошу что за дичь? входя по рынку покупка к примеру - у меня в МТ5 мигает лимитка buy limit крас цветом подсвечена и только потом покупка проходит, также с продажей... я так подозреваю это брокер так ухитряется мои рыночные исполнять приказы через ближайшие лимитки к рынку... если это так то это дичь какая- то в моем понимании - ведь комиссии я плачу брокеру с рыночных входов в позиции!!! И такое по сути постоянно происходит... я визуально это постоянно вижу просто забываю успеть нажать принт скрин и в чат бросить с разъяснением что за ерунда творится -как рыночные приказы исполняет лимитками!???
Тут могут быть разные причины - или прокладка (шоюз) так настроена между сервером, интерпретатором (шлюзом) и биржей, или внутреннее исполнение без вывода на биржу (типа сами контрагенты), или ещё чего.
Главная разница - комиссия - начисляют они её бирже или нет.
Это описание того, как реальность отображается в тестере через тиковую историю. Если заявки Ask/Bid никто не поставил сразу в истории после смещения уровня в стакане по причине заключения сделок (изполнения ордеров), то фактически тестер будет думать о старых значениях, в то время как они уже новые но не из-за новых заявок, а по той причине, что часть заявок исполнена. Таким образом реальный стакан будет показывать одни значения, а в тестере будите видеть другие значения.
Сделаю оговорку, что это чисто логическое умозаключение, подлежащее проверке.
Тогда это то же самое, что я предлагаю сделать MQ - не старый уже выкупленный уровень использовать, а по цене Last. Т.е. все новые Last записывать, как новые Ask|Bid.
Это делает мой код выше, который и может быть примером для MQ.
все новые Last записывать, как новые Ask|Bid.