No MT4, escrevi um alerta para essa situação. Eu precisava verificar o quanto essa verificação seria cara, então escrevi uma variante difícil de medir.
#include <MT4Orders.mqh>
#include <Debug.mqh>
// Obter todos os tíquetes do histórico.void GetTickets( TICKET_TYPE &Tickets[] )
{
for (int i = ArrayResize(Tickets, OrdersHistoryTotal()) - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
Tickets[i] = OrderTicket();
}
// Selecionar todos os tíquetes do histórico.int CheckTickets( const TICKET_TYPE &Tickets[] )
{
int Count = 0;
for (int i = ArraySize(Tickets) - 1; i >= 0; i--)
if (OrderSelect(Tickets[i], SELECT_BY_TICKET))
Count++;
return(Count);
}
voidOnStart()
{
TICKET_TYPE Tickets[];
GetTickets(Tickets); // Comprei os ingressos.ArraySort(Tickets);
BENCH(CheckTickets(Tickets)); // Verificou os tíquetes.
_P2(CheckTickets(Tickets));
}
O MT5 é mais rápido que o MT4 com um histórico de negociação relativamente pequeno. Com um histórico grande (centenas de milhares de registros), o MT5 fica muito mais lento.
A tomada foi parcialmente executada e, depois disso, foi excluída. Nesse caso, temos a situação em que DEAL_ORDER tem o status ORDER_STATE_CANCELED, e não FILLED/PARTIAL.
Nesse caso, DEAL_TIME_MSC não é igual a ORDER_TIME_DONE_MSC.
O MT5 gerou uma ordem de mercado. A ordem de limite correspondente foi enviada para o provedor de liquidez.
A ordem Limit é registrada novamente. Em seguida, a ordem do MT5 que corresponde à Take é excluída.
Mudar para o ponto 1.
Boa implementação, porque no histórico você pode ver as rejeições dos provedores. Bem, e a implementação interna forçada de níveis como limitadores.
Onde estão os limitadores?
Como essa implementação é melhor do que enviar uma tomada como um limite imediatamente no momento de sua configuração? Selecionar o LP com o melhor preço?
O MT5 sempre mostra os compradores na forma de remarcações.
Como essa implementação é melhor do que enviar uma tomada como um limite imediatamente no momento de sua configuração? Selecionando a LP com o melhor preço?
Sim, porque não se trata de uma bolsa, mas de uma agregação.
E mais uma:
Isso é muito real:
Obrigado pela informação. Essa longa execução provavelmente se deve aos gateways de terceiros. Gostaria de saber como as bolsas estão se saindo.
Este é o resultado no MT4.
20 mil bilhetes em 10 ms.
No MT5.
5K bilhetes MT4 em 0,8ms.
170 mil bilhetes MT4 em 700 ms.
O MT5 é mais rápido que o MT4 com um histórico de negociação relativamente pequeno. Com um histórico grande (centenas de milhares de registros), o MT5 fica muito mais lento.
Um caso interessante do MT5.
A tomada foi parcialmente executada e, depois disso, foi excluída. Nesse caso, temos a situação em que DEAL_ORDER tem o status ORDER_STATE_CANCELED, e não FILLED/PARTIAL.
Nesse caso, DEAL_TIME_MSC não é igual a ORDER_TIME_DONE_MSC.
DEAL_TIME_MSC não é igual a ORDER_TIME_DONE_MSC.
Isso acontece com a execução parcial de limitadores.
Rejeição de empate.
Essa situação pode ocorrer com frequência:
Onde estão os limitadores?
Como essa implementação é melhor do que enviar uma tomada como um limite imediatamente no momento de sua configuração? Selecionar o LP com o melhor preço?
Onde estão os limitadores nisso?
O MT5 sempre mostra os compradores na forma de remarcações.
Como essa implementação é melhor do que enviar uma tomada como um limite imediatamente no momento de sua configuração? Selecionando a LP com o melhor preço?
Sim, porque não se trata de uma bolsa, mas de uma agregação.
O MT5 sempre mostra as tomadas como marquises.
Para quem isso é mostrado?
Não há nenhum plugin de servidor para exibir os TPs como limites?
Sim, porque não se trata de uma bolsa, mas de uma agregação.
Eu testaria essa afirmação.
A entrada não se torna mais lucrativa com um mercado porque é uma agregação, não é?
Mostrando quem?
O cliente.
Não existe um plug-in do lado do servidor para exibir TPs como limites?
Terceiros.
Eu testaria essa afirmação.
A entrada não se torna mais lucrativa com um mercado porque é uma agregação, não é mesmo?
É assim que um feed de limite é enviado com um prazo de validade muito curto.