Bibliotecas: MT4Orders - página 50

 
// Lista de modificações:
// 10.06.2020
// Adição: adicionados milissegundos e removido o arredondamento de preços e volumes em OrderPrint().
// 13.08.2020
// Adição: Adicionada a possibilidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
 

Minha contagem de defasagens está fora dos gráficos, então faço isso.

sinput int inMT4OrdersMinTimeAlert = 0; // Limite de alerta em milissegundos
  
#define  MT4ORDERS_BENCHMARK_MINTIME inMT4OrdersMinTimeAlert // Tempo mínimo de alerta-produtividade do spratabyte.

Filtro os alertas para pequenas defasagens.

 
fxsaber:

Filtragem do acionamento do alertador para atrasos menores.

Um resultado semelhante pode ser observado ao emitir defasagens > 30 ms.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.
 

Para quem trabalha com operações assíncronas, será útil conhecer as configurações do número máximo possível de operações assíncronas não processadas em sua conta.

Não é difícil descobrir isso.

Alert: 60 - Too many trade requests


Tenha cuidado, pois você pode atingir um limite.


Uma possível variante para obter essas informações.

// Em caso de true, Amount contém a quantidade máxima possível
// solicitações assíncronas não processadas para todo o Terminal.
bool GetMaxAsync( const TICKET_TYPE TicketPending, int &Amount )
{
  const bool Res = OrderSelect(TicketPending);
  
  if (Res)
    for (Amount = 0; !IsStopped() && OrderDeleteAsync(TicketPending); Amount++)
      ;
      
  return(Res);
}

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL))
    {
      int Amount = 0;
      
      if (GetMaxAsync(OrderTicket(), Amount))
        Alert((string)Amount + " - " + MT4ORDERS::LastTradeResult.comment);
                
      break;
    }
}
 
// Lista de modificações:
// 20.08.2020
// Correção: contabilização das peculiaridades detectadas na execução parcial da ordem.

Não era uma coisa simples. Apenas um dos recursos.

ZY Mais de quatro anos se passaram desde que a biblioteca foi publicada. E ela ainda está sendo forçada a ser finalizada. Não é um simples MT5.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2020.08.02
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

Uma variante interessante da popularização do MT5 nos fóruns.

Um Expert Advisor mq4 de várias moedas é postado, colocado em demonstração e monitorado. Um tópico é mantido. As pessoas discutem.

A variante do mq5 é postada por meio da conexão de bibliotecas de conversão. As pessoas são forçadas (em várias moedas) a executar o MT5-Tester em ticks reais e ficam presas. Ao mesmo tempo, percebem que é tão fácil escrever para o MT5 quanto para o 4.

 
fxsaber:

Opção interessante para popularizar o MT5 nos fóruns.

Um Expert Advisor mq4 de várias moedas é postado, colocado em demonstração e monitorado. Um tópico é mantido. As pessoas discutem o assunto.

A variante mq5 é postada por meio da conexão de bibliotecas de conversão. As pessoas são forçadas (em várias moedas) a executar o MT5-Tester em ticks reais e ficam presas. Ao mesmo tempo, percebem que é tão fácil escrever para o MT5 quanto para o 4.

Sim, e o testador do MT5 é várias dezenas de vezes mais informativo e melhor em termos de qualidade de teste.

Obrigado pela biblioteca!

 
fxsaber:

O Expert Advisor mq4 multicurrency é publicado, colocado em demonstração e monitorado. Há uma filial. As pessoas discutem.

Infelizmente, isso é falta de educação dos traders. É um equívoco muito comum pensar que testar no testador de estratégias é diferente de testar na conta demo por algumas semanas.

fxsaber:

As pessoas são forçadas (multimoedas) a executar o MT5-Tester em ticks reais e ficam presas. Ao mesmo tempo, percebem que é tão fácil escrever no MT5 quanto no 4.

O orgulho da MK não permite que você tome uma decisão adequada. Você fez um trabalho que permite que você escreva estratégias de negociação no MT5 sem ter que gastar tempo estudando o sistema de ordens do MT5, mas, infelizmente, "agitar as habilidades dos semiprogramadores" neste fórum tem uma prioridade maior do que o desenvolvimento e o teste de estratégias de negociação, imho.

 
Igor Makanu:

Infelizmente, essa é uma falta de educação dos traders. É um equívoco muito comum pensar que testar em um testador de estratégia é diferente de testar em uma conta demo por algumas semanas.

O orgulho da MK não permite que você tome uma decisão adequada. Você fez um trabalho que lhe permite escrever estratégias de negociação no MT5 sem ter que gastar tempo estudando o sistema de ordens do MT5, mas, infelizmente, "abalar as habilidades dos semiprogramadores" nesse fórum tem uma prioridade maior do que o desenvolvimento e o teste de estratégias de negociação, na minha opinião.

Qual é a conexão?

 
Vitaly Muzichenko:

Qual é a conexão?

Na brevidade e simplicidade do sistema de ordens do 4 - ele permite que você escreva estratégias "on the fly" sem se distrair com a solução de ações elementares com ordens.

Se quiser, você pode praticar no sistema de ordens do MT5 para executar ações simples com ordens:


Igor Makanu:

como usar um tíquete memorizado

Descubra:

1. se a posição está fechada?

2. que tipo de transação foi a posição fechada?

3. é necessário trabalhar simultaneamente com 9 ordens

Eu fiz essa pergunta no tópico "perguntas de iniciantes no MT5", as respostas foram no estilo "por que você precisa disso?", a solução no sistema de ordens do MT5 só poderia ser escrita por uma pessoa - o autor deste tópico ;)