Bibliotecas: MT4Orders

 

MT4Orders:

Uso simultâneo de sistemas de ordens MetaTrader 4 e MetaTrader 5.

Autor: fxsaber

 
Algo incrível - muito obrigado... a melhor maneira de usá-lo é provavelmente no MT5 hedge.... sim, poucos traders ainda estão no mt5...)))))
 
Tendo visto muitos sistemas de linguagem de ordens (NinjaTrader, TradingStation, MetaStock, WealthLab, Dukascopy JForex, FXCM ForexConnect, LMAX API, IB TWS, MT4/5, etc.), cheguei a uma conclusão inequívoca: o MT4 é a referência do OJS. É o OJS mais conveniente, uma obra-prima!

Se alguém precisar escrever um Expert Advisor para outro NMC, recomendo que não pise no ancinho e comece imediatamente a escrever um adaptador para o MT4-NMC. É melhor gastar tempo no início, mas depois você vai recuperá-lo ao escrever, depurar e testar os Expert Advisors.

Por ser politicamente correto, continuarei a falar apenas sobre o Metatrader. Alguém dirá que você só precisa se acostumar com o MT5-OS. Nesse ponto, é impossível discordar. É possível se acostumar com tudo. Ao falar sobre a conveniência do NFC, eu quis dizer algo diferente.

Quando você coloca as mãos em um consultor MQ4, é muito fácil entender pelo código o que e onde ele faz. Fazer alterações. Ajudar uma pessoa se ela perguntar sobre o código, etc. Esse é o caso de quase todos os consultores de base de dados, por exemplo. E o motivo não é o fato de quase todos eles serem escritos no estilo procedural (a propósito, os consultores MQ4 OOP são mais fáceis de entender).

Quando você pega um consultor MQ5 (veja o pobre codobase), entender suas partes de algoritmos de negociação exige um esforço mental mais sério. Eu diria até que o desconforto é sentido. E é exatamente isso que acontece com o SNF. A compreensão sempre vem, mas exige muito mais tempo e esforço.

É claro que, se você ler/editar/adicionar exclusivamente seu próprio código, não sentirá nenhuma diferença significativa entre o MT4 e o MT5-NFC: você escreveu sua própria biblioteca universal e pronto. Mas isso é apenas para seu próprio benefício. Se você encontrar o código de outra pessoa, vai tomar um banho de água fria. E, infelizmente, a biblioteca padrão dos desenvolvedores não o ajuda a sair da zona de desconforto.

Por causa disso, é extremamente difícil discutir/refinar de forma construtiva uma ideia de negociação em MQL5, como tem sido praticado há muito tempo em várias comunidades de negociação em MQL4. E o desejo de mudar para o MT5, nesse sentido, não é motivador.

Eu gostaria de acreditar que esse trabalho, como um acréscimo ao MT5-Hedge, finalmente permitirá que boas ideias de negociação sejam testadas (e discutidas) em um testador MT5 forte e reduzirá significativamente as conversas sobre as diferenças entre o MT4 e o MT5. Permitirá que o componente de negociação dos EAs recupere a liderança nas discussões sobre o componente de programação técnica.

Em defesa do MT5-NFC, gostaria de dizer que esse NFC oferece muito mais possibilidades do que o MT4. Isso é especialmente verdadeiro para a negociação de ações. Mas, mesmo no FOREX, você pode, por exemplo, obter estatísticas importantes sobre a qualidade da execução de ordens pendentes por meio do MT5-NFC. Portanto, o meio de ouro da conveniência/oportunidade é o uso paralelo de ambos os NFCs. É isso que este trabalho nos permite fazer.

Agora é muito fácil comparar os testadores de MT de diferentes gerações - o mesmo código (MQL4) será executado em ambos. Não será difícil notar que o testador MT5 tem um desempenho inferior em execuções únicas. As ordens de limite e os níveis de TP no testador MT5 são executados com uma derrapagem positiva irrealisticamente alta. Não há possibilidade de testar o próprio histórico e outras coisas (às vezes essenciais). Mas eu gostaria de acreditar que esses são mal-entendidos temporários. Há muitas vantagens na forma de nuvem, ticks reais incorporados, várias moedas e outras. E se a nuvem e os ticks reais ainda puderem ser emulados no testador antigo, a moeda múltipla é uma vantagem inequívoca do novo testador.

O exemplo na descrição apresenta, em particular, uma ideia de negociação de ticks há muito conhecida em certos círculos - Lucky (em sua forma original). E se devido à imprecisão do testador MT5 com ordens de limite (build 1368) é impossível dar uma avaliação inequívoca desse sistema, mesmo no modo "Every tick based on real ticks". Essa ideia simples no código (graças ao MT4-OJAS) de várias moedas na forma de MQ4-advisor Spreader (veja o exemplo) encontra uma nova vida no MT5-tester.

Muitas ideias antigas que antes eram difíceis/impossíveis de testar no MT4-tester agora podem ser facilmente ressuscitadas e exploradas de forma produtiva quase em sua versão original.
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Сергей Криушин:
Algo incrível - muito obrigado... a melhor maneira de usá-lo é provavelmente no MT5 hedge.... Sim, não há muitos operadores ainda no MT5...))))
Provavelmente é para escrever sistemas que serão compilados em quatro e cinco sem alterações.
 
Isso não funciona com a história. Portanto, não há muitos milagres.
 
Dmitry Fedoseev:
Isso não funciona com a história. Portanto, não há muito de milagroso.
Aceitarei detalhes de sua parte com gratidão. Não posso reproduzir "não está funcionando" sem eles.
 
fxsaber:

Em defesa do MT5-NFC, eu gostaria de dizer que esse NFC oferece muito mais possibilidades do que o MT4. Isso é especialmente verdadeiro para a negociação de ações. Mas também no FOREX você pode, por exemplo, obter estatísticas importantes sobre a qualidade da execução de ordens pendentes por meio do MT5-NFC.

https://www.mql5.com/pt/code/16134

SlipPage
SlipPage
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Расчет проскальзываний совершенных сделок в валюте счета.
 
fxsaber:
Aceitarei seus detalhes com gratidão. Sem eles, não poderei reproduzir o "não funciona".
E como você "tentou" reproduzi-lo?
 
Dmitry Fedoseev:
E como você "tentou" "reproduzir" isso?

Executei vários scripts/consultores MT4 e analisei a exatidão do trabalho deles.

Também criei meus próprios testes ao escrever a biblioteca.

 
fxsaber:

Executei muitos scripts/consultores MT4 e analisei a exatidão de seu trabalho.

Também criei meus próprios testes enquanto escrevia a biblioteca.

Quais foram os testes relacionados ao trabalho com o histórico?
 

Alguns rudimentos do trabalho com o histórico são detectados:

   static int MT4OrdersHistoryTotal(void)
     {
      int Res=0;

      if(::HistorySelect(0,::TimeCurrent()))
        {
         const int TotalDeals=::HistoryDealsTotal();

         for(int i=0; i<TotalDeals; i++)
            if(MT4ORDERS::IsMT4Deal(::HistoryDealGetTicket(i)))
               Res++;

         const int TotalOrders=::HistoryOrdersTotal();

         for(int i=0; i<TotalOrders; i++)
            if(MT4ORDERS::IsMT4Order(::HistoryOrderGetTicket(i)))
               Res++;
        }

      return(Res);
     }

Toda vez que OrdersHistoryTotal() é chamada, ela percorre todo o histórico da conta com várias verificações.

A seleção no histórico por índice também está percorrendo todo o histórico.