Consultor especializado
// MQL4&5-code #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #ifdef __MQL5__ #define Bid (SymbolInfoDouble(_Symbol, SYMBOL_BID)) #define Ask (SymbolInfoDouble(_Symbol, SYMBOL_ASK)) #endif // __MQL5__ // Idea - https://www.mql5.com/ru/code/7464 #property strict input int Shift = 3; input int Limit = 18; input double Lots = 0.1; int PriceToInteger( const double Price ) { return((int)(Price / _Point + 0.1)); } void OnTick() { static int PrevBid = PriceToInteger(Bid); static int PrevAsk = PriceToInteger(Ask); const int IntBid = PriceToInteger(Bid); const int IntAsk = PriceToInteger(Ask); const bool TradeTime = (TimeCurrent() % (24 * 60 * 60) < D'1970.01.01 23:50'); // exclude swaps if (TradeTime && (IntAsk - IntBid < Limit)) { if ((IntBid - PrevBid >= Shift)) OrderSend(_Symbol, OP_SELL, Lots, Bid, 0, 0, 0); if (PrevAsk - IntAsk >= Shift) OrderSend(_Symbol, OP_BUY, Lots, Ask, 0, 0, 0); } PrevBid = IntBid; PrevAsk = IntAsk; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && ((!TradeTime) || (OrderProfit() > 0) || ((OrderType() == OP_BUY) && (PriceToInteger(OrderOpenPrice()) - IntBid >= Limit)) || ((OrderType() == OP_SELL) && (IntAsk - PriceToInteger(OrderOpenPrice()) >= Limit)))) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); }
Os resultados
Relatório MT4
Símbolo | EURUSD (Euro vs Dólar americano) | ||||
Período | 1 Minuto (M1) 2017.04.10 00:00 - 2017.04.14 20:58 (2017.04.10 - 2017.04.16) | ||||
Modelo | Todos os carrapatos (método mais preciso baseado em todos os menores períodos de tempo disponíveis) | ||||
Parâmetros | Shift=3; Limite=18; Lotes=0,1; | ||||
Bares na história | 7292 | Carrapatos modelados | 1865515 | Qualidade de modelagem | 99.00% |
Erros de descasamento de cartas | 0 | ||||
Depósito inicial | 100000.00 | Espalhe | Variável | ||
Lucro líquido | -10863.90 | Lucro total | 2528.70 | Perda total | -13392.60 |
Rentabilidade | 0.19 | Pagamento previsto | -0.49 | ||
Desembolso absoluto | 10864.70 | Máximo de drawdown | 10864.70 (10.86%) | Drawdown relativo | 10.86% (10864.70) |
Total de negócios | 21954 | Posições curtas (% ganho) | 12016 (68.60%) | Posições longas (% ganho) | 9938 (67.03%) |
Ofícios rentáveis (% de todos) | 14904 (67.89%) | Perdas comerciais (% do total) | 7050 (32.11%) | ||
A maior | comércio lucrativo | 3.00 | transação perdida | -4.40 | |
Média | negócio lucrativo | 0.17 | perdendo comércio | -1.90 | |
Número máximo | ganhos contínuos (lucro) | 155 (46.60) | Perdas contínuas (perda) | 115 (-210.10) | |
Máx. | lucros contínuos (número de vitórias) | 46.60 (155) | perda contínua (número de perdas) | -210.10 (115) | |
Média | prêmios contínuos | 5 | perda contínua | 2 |
Relatório MT5
Relatório de teste de estratégia | ||||||||||||
Alpari-MT5 (Build 1596) | ||||||||||||
Configurações | ||||||||||||
Conselheiro especializado: | Sorte | |||||||||||
Símbolo: | EURUSD | |||||||||||
Período: | M1 (2017.04.10 - 2017.04.16) | |||||||||||
Parâmetros: | Shift=3 | |||||||||||
Limite=18 | ||||||||||||
Lotes=0,1 | ||||||||||||
Corretor: | Alpari International Limited | |||||||||||
Moeda: | USD | |||||||||||
Depósito inicial: | 100 000.00 | |||||||||||
Alavancagem: | 1:100 | |||||||||||
Backtest | ||||||||||||
Qualidade da história: | n/d | |||||||||||
Bares: | 7192 | Tiki: | 1865415 | Personagens: | 1 | |||||||
Lucro líquido: | -10 863.90 | Levantamento absoluto no balanço patrimonial: | 10 863.90 | Saque absoluto de fundos: | 10 864.70 | |||||||
Lucro total: | 2 528.70 | Máximo de drawdown em balanço: | 10 863.90 (10.86%) | Máximo levantamento de fundos: | 10 864.70 (10.86%) | |||||||
Perda total: | -13 392.60 | Levantamento relativo no balanço patrimonial: | 10.86% (10 863.90) | Saque relativo de fundos: | 10.86% (10 864.70) | |||||||
Rentabilidade: | 0.19 | Pagamento previsto: | -0.49 | Nível de margem: | 863.58% | |||||||
Fator de recuperação: | -1.00 | Razão Sharpe: | -0.50 | Z-score: | -52.22 (99.74%) | |||||||
AHPR: | 1.0000 (-0.00%) | Correlação LR: | -1.00 | Resultado do OnTester: | 0 | |||||||
GHPR: | 1.0000 (-0.00%) | Erro Padrão da LR: | 149.82 | |||||||||
Total de negócios: | 21954 | Ofícios curtos (% de vencedores): | 12016 (68.60%) | Comércios longos (% ganha): | 9938 (67.03%) | |||||||
Total de negócios: | 43908 | Ofícios rentáveis (% de todos os ofícios): | 14904 (67.89%) | Perdas comerciais (% de todas as negociações) | 7050 (32.11%) | |||||||
O maior comércio lucrativo | 3.00 | Maior perda comercial | -4.40 | |||||||||
Comércio lucrativo médio: | 0.17 | Média das perdas comerciais: | -1.90 | |||||||||
Número máximo de vitórias consecutivas (lucro): | 155 (46.60) | Número máximo de perdas contínuas (perda): | 115 (-210.10) | |||||||||
Lucros máximos contínuos (número de vitórias): | 46.60 (155) | Perda máxima contínua (número de perdas): | -210.10 (115) | |||||||||
Ganhos médios contínuos: | 5 | Média de Perdas Contínuas: | 2 |
Os resultados são compatíveis!
Desempenho
2017.05.08 01:45:42.765 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.682 (total time 0:00:04.400)
Registro MT5
2017.05.08 02:04:53.278 Core 1 EURUSD,M1: 1865415 ticks, 7192 bars generated. Test passed in 0:00:12.309 (including ticks preprocessing 0:00:00.203).
O MT4-tester conseguiu 3 vezes mais rápido que o MT5-tester. Se houver qualquer dúvida de que o registro MT5 é causado pelo uso de uma biblioteca de terceiros, aqueles que desejarem podem reescrever o simples registro MT4 deste Expert Advisor na MQL5 à sua própria maneira e verificar a hipótese.
HZ o testador MT5 estava trabalhando muito mais devagar, até que limpei todas as pastas Bases à mão. Os resultados são dados com isto em mente.
No servidor Alpari-MT5-Demo na nova construção (a ser lançado em uma semana) com rápido acesso ao histórico do negócio, eu tive sucesso:
EURUSD,M1: 1865417 ticks, 7192 bars generated. Test passed in 0:00:05.578.
O MT5 tem uma sobrecarga de sistema para transferir dados e a própria tarefa para um processo de agente externo, que em tarefas pequenas (segundos) introduz um grande erro em comparação.
E a complexidade e a qualidade do testador em MT5 é muito maior: simulação síncrona de múltiplos instrumentos com precisão de milissegundos, deslizamentos/desvios reais durante a rolagem das mudanças mundiais e muitas outras funções menores. Não é como se houvesse um loop for loop.
Mais lento por ordens de magnitude - você não se confunde com inicialização/sincronização e carregamento de todos os dados? Tudo está escrito em registros. Os arquivos no disco não devem ser tocados em nenhum caso.
Recomendo colocar %userdata%\MetaQuotes diretório (como C:\Users\%username%\AppData\Roaming\MetaQuotes) no passe de antivírus. É aqui que se encontram os dados e a adição do antivírus ao passe melhora drasticamente a velocidade de acesso aos dados do terminal e do testador.
Caso contrário, eles ficam tão entusiasmados quando vêem o metatester[64].exe funcionando, abrindo a porta da rede e muitos arquivos de dados grandes, escritos por terminal e tester. O testador de alguns comerciantes consegue até cair, porque o antivírus não tem tempo de verificar o arquivo metatester[64].exe mesmo em poucos segundos e o terminal não consegue acessá-lo.
a complexidade e qualidade do testador em MT5 é uma ordem de magnitude maior: modelagem síncrona de múltiplos instrumentos com precisão de milissegundos, deslizamentos/atrasos honestos enquanto percorre as mudanças mundiais e um monte de características menores.
O pacote MT4+TDS também tem isso. E mais algumas características que falta ao MT5... Mas é claro que não há moedas múltiplas.
Mais lento por ordens de magnitude.
No início pensei que o TDS desacelera deliberadamente o MT5, por isso limpei sua memória. Também limpei as pastas-base (estava ficando sem espaço em disco). Depois disso, o MT5 foi duas ordens de grandeza mais rápido para uma única corrida (os reinícios não ajudaram antes). A hipótese sobre os blocos TDS não pôde ser confirmada, no entanto, eu tentei. Eu não tive nenhum anti-vírus no meu computador.
O servidor Alpari-MT5 é real.
A ZZY rodou o MT4-optimizador em execução total - 14 minutos. MT5 (falta apenas um agente) - parece que serão muitas horas. Afixará o total pela manhã/tarde.
De onde vieram os deslizes?
Você tem algo completamente diferente em mente. Jogue com o campo de Atraso no testador MT5 e você verá que é algo totalmente diferente. Mesmo o habitual Sleep(2500) em código MQL5, quando executado no testador, dará um atraso no código quando o mundo inteiro continuar simulando. O campo de atraso de execução mostra efetivamente como as negociações serão executadas se você colocar seu ping de 100ms no servidor lá.
Não pode haver uma ordem de magnitude de atraso. E por que haveria qualquer acréscimo para o MT5 quando ele funciona bem por si só?
Sobre a ultrapassagem - não há ajustes e não há limites.Sobre a falta de antivírus - há muito tempo, todas as versões desde 7 têm um Windows Defender interno e discreto, que faz um bom trabalho de verificação de todos os arquivos.
Às vezes gera atrasos perceptíveis em operações de arquivos, mesmo em discos SSD.
Sobre a falta de antivírus - há muito tempo, todas as versões da 7 têm tido um Windows Defender interno e discreto, que escaneia todos os arquivos.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
fxsaber, 2017.05.07 21:55
Servidor comercial Alpari-MT5
Por que existem carrapatos duplicados (lance e pergunte são iguais) na história do tick FOREX?
O testador está correndo EAs em duplicatas e há a metade delas. É necessário obter a queda de desempenho apropriada pela metade?
Você ainda não entendeu os deslizes de que estou falando. Não funciona no MT4 como uma questão de princípio.
Não em carrapatos, mas no processo do programa mcl5, quando ele pára e os carrapatos continuam e o mundo está girando. Escreva Sleep(3000) e o programa esperará 3 segundos e durante este tempo os ticks estarão fazendo ticks, o mercado estará simulando.
Se você definir o campo Atraso de execução para 200ms no testador, será simulada uma latência de rede de 200 na execução das operações, o que dará ou um deslize de mercado ou solicitações.
Este é todo um outro nível poderoso de modelagem de processos de mercado, e dentro de um sistema de múltiplas moedas. E mais importante ainda, em um processo alienado remoto. Por exemplo, um agente de 10.000 km de repente recebe um pedido dinâmico de acesso a símbolos ausentes do código ao executar uma tarefa e é capaz de solicitar esses dados ao mestre, incorporá-los no mundo do mercado e continuar a girá-los.
Você ainda não entendeu os deslizes de que estou falando. Não funciona no MT4 como uma questão de princípio.
Não em carrapatos, mas no processo do programa mcl5, quando ele pára e os carrapatos continuam e o mundo está girando. Escreva Sleep(3000) e o programa esperará 3 segundos e nesse tempo os ticks estarão fazendo ticks, o mercado estará simulando.
Isto não funciona agora no MT4.
Se você definir o campo Atraso de execução para 200ms no testador, ele simulará uma latência líquida de 200 na execução das operações, o que dará ou um deslize de mercado ou solicitações.
Isto funciona agora no MT4.
Este é todo um outro nível poderoso de modelagem de processos de mercado, e dentro de um sistema de múltiplas moedas. E mais importante ainda, em um processo alienado remoto. Por exemplo, um agente de 10.000 km de repente recebe um pedido dinâmico de acesso a símbolos ausentes do código ao executar uma tarefa e é capaz de solicitar esses dados ao mestre, incorporá-los no mundo do mercado e continuar a girá-los.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Discussão sobre "EAs prontos de MQL5 Wizard work in MetaTrader 4".
fxsaber, 2017.03.09 13:02
Sugiro levar o Tick Data Suite trial (Compatível: MT4 build 940 - 1052) para comparação.
Em MT5 tester selecione o modo "por carrapatos reais". Salve-os e alimente-os com o testador MT4 via TDS.
Então as cotações em ambos os testadores coincidirão 100%, o que permitirá compará-las não apenas em negócios, mas também em velocidade.
Seria então possível comparar a conversão/criação de EAs em ambas as direções.
MT4 build 1072, MT5 build 1596 trading server Alpari-MT5.
Configurações do testador MT4 na captura de tela
A moeda em ambos os testadores é USD. Isto permite no mesmo testador MT5 para EURUSD não puxar outro símbolo de conversão.
Agora, executamos os seguintes Expert Advisor em ambas as plataformas de teste
Diário de bordo MT4-tester
Diário de bordo MT5-tester
Confirmamos que os arquivos recebidos de cada testador são idênticos - os carrapatos dos testadores coincidem.
Neste ponto, a preparação de ambos os testadores para o novo serviço está pronta.