Técnica de Teste (Otimização) e Alguns Critérios para Seleção dos Parâmetros do Expert Advisor
Introdução
Aparentemente não existe nenhum grande segredo quanto a seleção dos parâmetros adequados, não é menos importante do que a seleção de táticas de negociação e criação de um Expert Advisor. Prova disso pode ser encontrado em debates sobre o assunto em vários fóruns, onde de uma forma ou outra está relacionada à negociação automatizada. Enquanto a automação das operações de negociação parece ser bastante clara e transparente, eu ainda não encontrei qualquer algoritmo automatizado útil para o processamento da otimização dos resultados compilados numa cadeia lógica completa.
Temos de admitir que o processo é muito difícil, portanto é merecedor de um esforço, para no mínimo, automatizar todas as transações ao máximo e reduzi-las a um único algoritmo. Esta abordagem e método serão definidos a seguir neste artigo.
Conceito
Tarefa. Análise e triagem dos parâmetros do Expert Advisor recebidos durante a otimização que não são efetivos para uma negociação real. Utilização máxima da capacidade de desempenho de terminal e automação de operações manuais.
Todo o processo é constituído por várias etapas. Esta divisão não tem muito a ver com a complexidade da implementação de um algoritmo automático contínuo, como a incapacidade inicial na fase de otimização, onde são definidos os requisitos necessários (tolerâncias e filtros) para os parâmetros do sistema.
Na minha opinião, fazer uma máquina tomar as decisões estratégicas não é "a melhor idéia", e a seleção de parâmetros (grupos de parâmetros) é uma estratégia. Calculando, negociando, tornando nossa vida mais fácil - estas são as suas funções, mas é o trader quem decide sobre o funcionamento que deve seguir o hardware.
Todas as fases e transições dentro dos estágios foram automatizados ao máximo, para tanto quanto foi possível.
Estágio 1. O otimizador, variante padrão com as configurações opcionais dos usuários.
Novamente, isto não é um segredo, mas não pode ser deixado de fora.
A genética é por todos os meios uma coisa útil, mas dentro de limites razoáveis. A verdade é que seu algoritmo pode fazer um truque baixo com você - quando um conjunto de parâmetros é visto como rentável, todo o processo de otimização será executado "em torno dele". Eu acredito que você entende o meu ponto de vista. A maior parte das variantes muito boas, que de outra forma trabalham além da área de otimização, serão deixadas de fora e não serão registradas na tabela de "Resultados de Otimização".
Existem algumas maneiras de sair desta situação. Uma drástica é não usar o Algoritmo Genético para otimização. Contudo esta nem sempre será adequada, por uma razão ou outra. As duas seguintes são meias medidas, mas melhor do que nada:
- executar a otimização, não uma, mas duas vezes ou mais. A primeira vez, vamos dizer, pelo "Balanço" e a próxima; pelo "Máximo Rebaixamento" ou por outros parâmetros. A janela "Parâmetro Otimizado" na guia "Teste" das propriedades do Expert Advisor prevê essa seleção. Em seguida, combinar as tabelas de resultados recebidos e trabalhar com uma tabela combinada.
- Reduzir ao máximo o número de combinações dos parâmetros.
Existe ainda uma outra nuance a ser levada em consideração ao implementar a otimização. Alguém pode achar que é útil.
Pode-se definir vários limites na guia "Otimização" das propriedades do Expert Advisor e eu gostaria de dizer algumas palavras sobre uma deles - "Máximo Rebaixamento". Ao usar esse parâmetro, tenha em mente que este é um rebaixamento do balanço atual em porcentagem. Precisando ser considerada uma observação aqui. Se, por exemplo, definirmos um limite de 10% e colocamos um saldo inicial de 10000, então o processo de otimização quando o saldo chega a 15000 será diferente do saldo inicial. O resultado do rebaixamento (e se os rebaixamento ocorrerem no início da negociação?) vai reagir de forma diferente de acordo com o balanço.
Estágio 2. Trabalhando com "Resultados de Otimização". Todos os resultados são copiados e processados para o Excel. Haverá muitas informações para serem reduzidas. O "corte" pode ser realizada em qualquer coluna do relatório - decisão do trader.
Estágio 3. Teste, selecionamos uma parte do histórico para testar e executar um análise automática de grupo dos conjuntos, "faz isso através" da seleção da fase anterior. Eu indico: um teste de grupo. Nesta fase, não há necessidade de considerar todos os testes separadamente, o ponto é fazer os resultados de todos os conjuntos dos testes restantes ao mesmo tempo. O Terminal irá realmente implementar a mesma otimização, mas usará os parâmetros de um arquivo preestabelecido.
Semelhante a Fase 2, todos os resultados recebidos são copiados para a mesma tabela do Excel com os resultados de otimização.
Estágio 4. Análise e Seleção,
Obviamente, os testes negativos são impiedosamente descartados (linhas deletadas). A questão é, como avaliar os remanescentes?
Muitos de vocês devem ter notado que a percepção visual do gráfico de balanço obtém um resultado igual e, por vezes, uma idéia ainda melhor das características do sistema, em vez dos números do relatório. Como regra geral, se a curva parece "boa", os números do relatório também são "excelentes", no entanto se não tem uma tendência crescente contínua, então nenhum número pode ser convincente o suficiente para este que é "bom".
O problema é que existem algumas variantes restantes e será muito difícil testá-las separadamente com o objetivo de analisar o relatório e ter um olhar individual no gráfico para cada uma delas...
A fim de evitar este problema e reduzir o número de conjuntos ainda mais, eu fiz uma "relação" de critérios aplicáveis para as áreas comparadas. Três valores são comparados respectivamente: Lucro por Dia, Número de Ofertas por Dia e Máximo Rebaixamento na otimização e áreas testadas. Se eles são mais ou menos, dentro de um certo limite tolerável, consistente uns com os outros, o conjunto permanece no trabalho; se eles não são - são excluído nas análises posteriores. Além disso, sob certas condições, mais especificamente - se as áreas de testes não forem muito longas, os três valores listados acima podem, em certa medida, produzir uma ideia de uma curva "suave" do balanço.
As etapas 3 e 4 podem e devem ser repetidas várias vezes em diferentes partes do histórico primeiramente, a fim de verificar a confiabilidade dos resultados selecionados e depois reduzi-los ao máximo em números. As variantes remanescente 3-5 serão o suficiente para a escolha final.
A conclusão dos estágios 3 e 4 incluem a geração de arquivos "set" a partir dos conjuntos restantes, a implementação de testes individuais em todas as partes do histórico, comparação entre eles, seleção, etc.
Basicamente, esta é uma questão de qualificação, gostos e preferências de cada trader e está fora do escopo deste artigo.
Técnica
Não é nada difícil ou coisa de outro mundo, tudo que você precisa é de atenção e precisão. Vamos começar.
1. Configuração do computador - Painel de Controle/Opções Regionais e Opções de Idioma/Opções Regionais/Russo - Personalizar/Números/Símbolo Decimal - em vez de uma "vírgula" você precisa selecionar um "ponto" - isto é feito para a reflexão dos dados precisos sobre a cópia dos (testes) resultados de otimização do Terminal em uma tabela do Excel;
- Você deve ter o Microsoft Office (Excel obrigatório) instalado no seu computador - versão 2000 acima.
- Macros devem ser ativados nas configurações de segurança do Excel e o módulo Analise.bas (anexo ao artigo) deve ser importado. A revisão do módulo e sua estrutura não é fornecido neste artigo uma vez que não há necessidade para usuários comuns alterarem ou editarem qualquer coisa nele, e os usuários "fora do comum" irão descobrir isso naturalmente.
2. Preparação do Expert Advisor
Um exemplo do Expert Advisor preparado está disponível no anexo.
Antes dos parâmetros externos, bem no início do código, deve ser inserido o seguinte:
// Os parâmetros de teste e otimização extern int VarOptimTest = 0; // 0 - otimização padrão (funcionamento normal do Expert Advisor) // 1 - execução de testes dos conjuntos selecionados // 2 - geração de arquivos set extern int Counter = 1; // contador extern string nameEA = "MA"; // nome Expert Advisor
Estas variáveis irão controlar os modos de ensaio e de otimização.
A função init() deve ter a seguinte aparência:
int init() { // BLOCO DE OTIMIZAÇÃO E TESTE DE CHAMADA DA FUNÇÃO if(IsOptimization() && VarOptimTest !=0) { if (VarOptimTest == 1 && Counter !=0) _ReadParametrs(); if (VarOptimTest == 2 && Counter !=0) {_ReadParametrs(); _WriteSet();} } ........... ........... return (0); }
Duas funções serão chamados a partir daqui para assegurar a automação de todo o processo.
Na linha a seguir é adicionado a função start():
int start() { if(IsOptimization() && VarOptimTest ==2) return(0); ..........
1. A função de leitura do parâmetro para ler um arquivo Excel criado após a análise dos resultados (testes) de otimização.
A parte variável da função está em negrito. É necessário precisão e cuidado, seguindo a mesma estrutura e sintaxe, listando todos os parâmetros de entrada do Expert Advisor, exceto para os três primeiros que são responsáveis pela otimização e testes, bem como os tipos de variáveis bool e string, se houverem.
void _ReadParametrs() { string FileName="test.csv"; int handle=FileOpen(FileName,FILE_READ||FILE_CSV);//,''); if(handle<1) return(0); FileSeek(handle,0,SEEK_SET); int str = StrToInteger(FileReadString(handle)); int data = StrToInteger(FileReadString(handle)); if (data < Counter) { Alert("Incorrect number of test runs entered. Sorry"); return(0); } for (int y=1; y <=Counter; y++) { for (int x=1; x <= str; x++) { string s = FileReadString(handle); string ds = FileReadString(handle); if (y != Counter) continue; s=StringTrimLeft(s);s=StringTrimRight(s); ds = StringTrimLeft(ds);ds=StringTrimRight(ds); double d = StrToDouble(ds); if (s == "Lots"){Lots=d;continue;} if (s == "MaximumRisk"){MaximumRisk=d;continue;} if (s == "DecreaseFactor"){DecreaseFactor=d;continue;} if (s == "MovingPeriod"){MovingPeriod=d;continue;} if (s == "MovingShift"){MovingShift=d;continue;} } } FileClose(handle); return(0); }
2. Configurar- geração de arquivo e função de gravação. Sua estrutura deve espelhar a estrutura do arquivo "set" do Expert Advisor. A parte variável da função está em negrito.
void _WriteSet () { string FileName=nameEA+"_"+Symbol()+Period()+"_"+Counter+".set"; int handle=FileOpen(FileName,FILE_WRITE|FILE_CSV); if(handle<1) return(0); FileWrite(handle,"VarOptimTest="+0); FileWrite(handle,"VarOptimTest,F="+0); FileWrite(handle,"VarOptimTest,1="+0); FileWrite(handle,"VarOptimTest,2="+0); FileWrite(handle,"VarOptimTest,3="+0); FileWrite(handle,"Counter="+0); FileWrite(handle,"Counter,F="+0); FileWrite(handle,"Counter,1="+1); FileWrite(handle,"Counter,2="+1); FileWrite(handle,"Counter,3="+100); FileWrite(handle,"nameEA="+nameEA+"_"+Symbol()+Period()+"_"+Counter); FileWrite(handle,"Lots="+Lots); FileWrite(handle,"Lots,F="+0); FileWrite(handle,"Lots,1="+0.00000000); FileWrite(handle,"Lots,2="+0.00000000); FileWrite(handle,"Lots,3="+0.00000000); ................................. FileWrite(handle,"MovingShift="+MovingShift); FileWrite(handle,"MovingShift,F="+1); FileWrite(handle,"MovingShift,1="+2); FileWrite(handle,"MovingShift,2="+1); FileWrite(handle,"MovingShift,3="+4); FileClose(handle); return(0); }
3. Processo
ATENÇÃO! Eu recomendo fortemente duplicar a planilha ou toda a pasta de trabalho antes de executar qualquer operação. A execução de macros no Excel é uma operação irreversível e, no caso de um erro de otimização, os resultados pode ser perdidos, o que significa perda de tempo. Não haverá mal nenhum em guardar os resultados intercalados de vez em quando.
3.1. Otimização
Não existe informação suficiente dedicado as peculiaridades da otimização, agora vamos ver como isso pode ser feito. Os parâmetros de otimização e teste nas propriedades do Expert Advisor devem ser definidos como mostrado na imagem:
Fig.1. Propriedades do Expert Advisor, aba "Parâmetros de entrada". Otimização e Parâmetros de Teste
3.2. Análise dos Resultados de Otimização e Seleção do Parâmetros Inicial
Após a conclusão da otimização, os resultados devem ser copiados para a área de transferência:
Fig.2. Cópia dos Resultados de Otimização
iniciar o Excel e colar os dados copiados a uma nova planilha.
Depois de copiar você deve executar o macro Optim_1. Se tudo foi feito corretamente, a planilha será semelhante a esta:
Fig.3. Executando a Macro de Excel
Ao executar o macro, você precisará digitar o número de dias no período de otimização na caixa de diálogo. Isso é necessário para cálculo dos critérios adicionais.
Fig.4. Caixa de Diálogo para Entrada do Número de Dias
Como você pode ver, não há nomes das colunas na tabela resultante. Isto tem uma razão. Em primeiro lugar, torna mais fácil de evitar erros ao inserir o número de parâmetros (necessário mais adiante); em segundo lugar, não existe qualquer necessidade especial neles. Tudo é familiar aqui, exceto por duas colunas - azul e verde. Da esquerda para a direita: Número de Passe, Lucro, Lucro por Dia, Total de Ofertas, Ofertas por Dia, Fator de Lucro, Resultado Esperado, Rebaixamento em $, Rebaixamento em %.
Quando a tabela contém apenas os parâmetros selecionados aos trabalhos futuros (ou seja, linhas indesejadas devem ser excluídas), passamos para a próxima etapa.
A fim de facilitar a classificação existe todo um grupo de macros no módulo, permitindo a classificação por colunas individuais. Atribuir teclas de atalho e ....
3.3. Salvando Parâmetros para um Arquivo
Você deve executar o macro "Write" e digitar o caminho onde o arquivo de parâmetro será salvo (.... terminal\tester\files\) na caixa de diálogo pop-up
Fig.5. Caixa de Diálogo para Salvar o Arquivo de Parâmetro
A janela "File Name" terá um nome "test" predefinido, por favor não altere-o, a menos que seja absolutamente necessário, mas se você fizer isso, você terá que fazer o mesmo nas funções que foram adicionados ao seu Expert Advisor.
Após a conclusão desta operação, o Arquivo "test.csv" aparecerá (ou será substituído, se existir um antes) no diretório determinado.
Atenção, isso é importante. Após a criação do arquivo não alterar as posições da linha na tabela, do contrário os resultados do teste não serão mais vinculados aos parâmetros usados.
3.4. Testando
Configurações do Expert Advisor:
Fig.6-8. Configurações do Expert Advisor para a Implementação do Teste de Grupo
Maiores explicações não são necessárias: não há limites definidos, Algoritmo Genético desabilitado, configuração da variável Counter de 1 a N, onde N é um número de linhas restantes na tabela, Otimização ativada apenas para este parâmetro.
E outra configuração:
Fig.9. Configurações da aba "Resultados de Otimização"
Agora, se o período de teste e outros parâmetros essenciais de otimização são definidos, você pode clicar no botão "Iniciar" e executar o Testador de Estratégia no modo "Otimização".
Após a conclusão do teste que pode demorar muito tempo, especialmente na primeira execução quando a tabela ainda é grande, podemos prosseguir para a próxima etapa.
3.5. Trabalhando com os Resultados do Teste
Primeiro de tudo, a tabela do Excel deve estar preparada para uma nova entrada de dados e para o efeito, corremos o macro "Optim_2" como um resultado dos quais 7 colunas vazias aparecem no lado esquerdo da tabela. Os resultados recebidos devem ser ordenados pelo número de passe em ordem crescente:
Fig.10. Classificação dos Resultados dos Testes
Os resultados devem ser copiados posteriormente (como no passo 2) e colados em uma nova planilha Excel, seguido da cópia das primeiros 7 colunas e colar da mesma para a área previamente preparada na planilha com a nossa tabela.
Agora, execute uma seqüência de macros "Optim_3" e "Optim_4" . Se tudo foi feito corretamente, a tabela terá a seguinte estrutura:
Fig.11. Estrutura da Tabela Após Salvar e Processamento da Otimização e Resultados dos Testes
Nós já discutimos as colunas L-T, Colunas D-K são semelhantes às colunas М-T, mas os seus dados referem-se à área de teste.
Mas antes de prosseguir para as três primeiras colunas, deve ser explicado como os critérios "Lucro por dia" e "Negócios por Dia" foram introduzidos.
Períodos de otimização e de teste podem ser diferente em comprimento. Neste caso surge uma pergunta razoável: como devemos comparar os resultados? Estes dois parâmetros são concebidos para resolver, pelo menos parcialmente este problema e facilitar o processo de comparação dos resultados.
Assim, colunas: А= N/E (relação do Lucro por Dia), B= P/G (relação das Ofertas por dia), С = S/J (relação do Rebaixamento).
Como pode ser observado, os valores nestas colunas são representados por 1 - Variante ideal existente apenas quando a área de teste no histórico coincide com a área de otimização. Isto não é um descuido, mas uma ação deliberada para demonstrar uma das maneiras de verificar se o Expert Advisor foi preparado corretamente. Da mesma forma, pode-se verificar a exatidão da criação dos arquivos "set".
Assim, tudo está pronto para a análise. Toda a informação está disponível. Tudo está nas mãos do trader, ele é o único que conhece todos os recursos secretos do seu Expert Advisor, e pode definir limites toleráveis necessários para a variação de resultados a fim de examinar os parâmetros.
Seguindo em frente. A tabela foi ainda mais reduzida. Nada nos impede de executar outro teste.
Remover colunas A-K e voltar ao passo 3.
Na sequência da implementação dos testes 3-4 teremos a tabela que consiste em 3-5-8 linhas, isto é o suficiente para ir mais longe.
3.6. Geração dos Arquivos "Set".
Alguém poderia dizer que não há necessidade deles e 5-8 conjuntos de parâmetros podem ser processados manualmente. Eu não me importo e se você gosta, mas eu prefiro que a máquina faça o trabalho de rotina para mim. Tudo o que precisamos é rodar o macro "Write" e executar uma última vez no Testador de Estratégia no modo "Otimização", com as seguintes configurações do Expert Advisor:
Fig.12. Configurações do Expert Advisor para a Geração dos Arquivos "Set"
As configurações são praticamente idênticas às utilizadas no modo de teste, a única diferença será o valor de uma variável e o valor final do contador.
Após a conclusão do processo de otimização, os arquivos "set" do Expert Advisor serão gerados no diretório tester\files. O último algarismo do nome é o número da linha na nossa tabela.
Fig.13. Criação de Arquivos "Set"
Eles podem ser tratados como arquivos "set" padrão do Expert Advisor.
De fato, o assunto do artigo já foi esgotado.
Conclusão
As informações acima não pretendem ser uma descoberta na área que se convencionou chamar de "Teoria de Otimização" ... É uma orientação puramente prática, nada mais ou menos... Provavelmente está claro, mas eu acho que é necessário mencionar ainda.
Tudo o que foi descrito aqui é apenas uma ferramenta projetada para facilitar ao máximo o trabalho do trader. Ninguém jamai vai dar uma garantia de 100% que a curva do balanço será favorável.
E tem mais uma coisa. Não deixe que a abundância de palavras e imagens o assuste. Verdadeiramente tudo é bastante simples e depois de realizar essa otimização várias vezes, você vai aprender a fazê-lo automaticamente.
Tenho a sensação de que alguém poderá ter uma idéia de como fazer a otimização e teste de janelas mais eficazes... e que assim seja :)
Desejo-lhe boa sorte e lucros.
PS Eu nunca pensei que iria usar tantas palavras para descrever algumas dezenas de manipulações do "mouse". :)
Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1347
- 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