Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá pessoal, a pedido do Paulo eu escrevi o "protótipo" do EA comunitário. Passei aqui apenas para deixar alguns comentários com relação ao código. Primeiramente, queria parabenizar o Paulo pela iniciativa e agradecê-lo pela oportunidade de escrever o EA!
O fato de ser "comunitário" foi justamente a maior dificuldade da escrita desse EA. Como ele vai ser publicado na comunidade em português, minha maior preocupação foi fazer um código "legível" por quem fosse o utilizar... eu evitei ao máximo utilizar bibliotecas "padrão" do MetaTrader, porque muitos iniciantes na linguagem ainda não estão familiarizados com elas.
Outra coisa que acabou demorando mais que o esperado foram os comentários internos no código... praticamente todas as linhas de código estão comentadas em português, visando justamente facilitar o entendimento e aprendizado. Também evitei também utilizar recursos mais avançados de programação.
Por fim, de acordo com as demandas do Paulo, e visando otimizar as ideias que ele me passou, o protótipo de EA tem as seguintes características:
■ Entradas baseadas no indicador X-bar_Fractal (logo, você precisa ter ele instalado na sua máquina para o EA funcionar)
■ Entradas apenas do tipo buy stop e sell stop
■ Opção de escolher os períodos do fractal (tanto barras à esquerda como barras à direita)
■ Abertura de ordens apenas com o fechamento da barra, para evitar "falsos" fractais
■ Uma espécie de "trailing stop", de acordo com as características que o Paulo me passou
No mais, esse é apenas um protótipo funcional. Novas ideias para melhorar o EA serão sempre bem-vindas.
Abraços,
Malacarne
Olá pessoal, a pedido do Paulo eu escrevi o "protótipo" do EA comunitário. Passei aqui apenas para deixar alguns comentários com relação ao código. Primeiramente, queria parabenizar o Paulo pela iniciativa e agradecê-lo pela oportunidade de escrever o EA!
O fato de ser "comunitário" foi justamente a maior dificuldade da escrita desse EA. Como ele vai ser publicado na comunidade em português, minha maior preocupação foi fazer um código "legível" por quem fosse o utilizar... eu evitei ao máximo utilizar bibliotecas "padrão" do MetaTrader, porque muitos iniciantes na linguagem ainda não estão familiarizados com elas.
Outra coisa que acabou demorando mais que o esperado foram os comentários internos no código... praticamente todas as linhas de código estão comentadas em português, visando justamente facilitar o entendimento e aprendizado. Também evitei também utilizar recursos mais avançados de programação.
Por fim, de acordo com as demandas do Paulo, e visando otimizar as ideias que ele me passou, o protótipo de EA tem as seguintes características:
■ Entradas baseadas no indicador X-bar_Fractal (logo, você precisa ter ele instalado na sua máquina para o EA funcionar)
■ Entradas apenas do tipo buy stop e sell stop
■ Opção de escolher os períodos do fractal (tanto barras à esquerda como barras à direita)
■ Abertura de ordens apenas com o fechamento da barra, para evitar "falsos" fractais
■ Uma espécie de "trailing stop", de acordo com as características que o Paulo me passou
No mais, esse é apenas um protótipo funcional. Novas ideias para melhorar o EA serão sempre bem-vindas.
Abraços,
Malacarne
Obrigado Malacarne! Realmente é muito bom ter a sua participação neste projeto! D+
Esta é uma primeira versão, e como em qualquer programa, na medida que vai sendo usado, vão aparecendo as divergências do algoritmo(setup) inicial para serem corrigidas, bem como modificações para melhor funcionalidade.
Abaixo, a idéia do funcionamento do algoritmo para que possamos comparar no Testador de Estratégia e também, aqueles que puderem, testar numa conta Demo. Verificando algum problema, tenho certeza que Malacarne terá o máximo de carinho para consertar.
Faça testes com vários timeframes, período do histórico, ativos diferente e etc, quando terminar um teste verifique o Gráfico, insira o indicador x-bar_fractal no gráfico com os mesmos parâmetros do EA, marque as entradas segundo a lógica do sistema e compare com a entradas e saídas do EA, se houver divergências coloque aqui no fórum para corrigirmos.
1º Passo - baixar o indicador x-bar_fractal para a sua plataforma MT5!
Qual é a idéia do fractal, na sua essência ele é um indicador de Preço e Ação, o famoso "swing" do preço. A grosso modo podemos dizer que o fractal nada mais é do que a confirmação de um ponto de resistência ou de suporte, e bem como lembrou o nosso amigo Figurelli, "...assim como no Zig-Zag, o Fractal busca a combinação que já aconteceu no passado que melhor representa um cenário presente".
No indicador fractal tradicional que vem nos Terminais MT 4/5 temos o seguinte setup:
IMPORTANTE: Qualquer indicador é influenciado pela barra de preço que está em andamento, portanto somente podemos confiar no sinal do indicador após o fechamento de tal barra de preço, nos fractais esta premissa também é verdadeira.
Então:
Ok! Esta informação acima referente ao x-bars_fractal é muito importante para entender o funcionamento do algoritmo do EA.
Parâmetros do EA:
Condição para Posição Comprada - ordem pendente BUY STOP
Exemplo: Barra nº 1 (onde está plotado o fractal) = 1.38605 (preço máximo da barra)
Barra nº 2 (primeira barra a direita do fractal) = 1.38803 (preço máximo da barra)
Barra nº 3 (esta a barra que ao fechar confirmou o fractal) = 1.38772 (preço máximo da barra)
3. Então o maior preço entre as três barras é 1.38803, neste preço desenhamos uma linha de resistência. Continuando o exemplo acima, a nossa"Margem de Segurança" é igual a 20 (no EA o valor 200 é igual a 20 PIPs), então para lançarmos a nossa ordem pedente BUY STOP vamos usar a seguinte fórmula: Linha Resistência + Margem de Segurança, assim 1.38803 + 200 = 1.39003. Nossa entrada na posição comprada será no preço 1.39003.
Take Profit da Posição Comprada
Condição para Posição Vendida - ordem pendente SELL STOP
Exemplo: Barra nº 1 (onde está plotado o fractal) = 1.38605 (preço mínimo da barra)
Barra nº 2 (primeira barra a direita do fractal) = 1.38505 (preço mínimo da barra)
Barra nº 3 (esta a barra que ao fechar confirmou o fractal) = 1.38403 (preço mínimo da barra)
3. Então o menor preço entre as três barras é 1.38403, neste preço desenhamos uma linha suporte. Continuando o exemplo acima, a nossa"Margem de Segurança" é igual a 20(no EA o valor 200 é igual a 20 PIPs), então para lançarmos a nossa ordem pedente SELL STOP vamos usar a seguinte fórmula: linha suporte - Margem de Segurança, assim 1.38403 - 200 = 1.38203. Nossa entrada na posição vendida será no preço 1.38203.
Take Profit da Posição Vendida
Observações:
1. Sobre Trailing Stop, por questões técnicas não foi possível seguir a idéia original, onde a cada entrada de posição uma nova ordem pendente seria aberta. Aqui foi implementado um Trainling Stop interno, a ideia do stop móvel é que após determinada corrida do preço na direção do lucro em PIPS, arrasta o Stop Loss, primeiro para o Break Even (empate com o preço de entrada) e depois para o primeiro lucro e assim sucessivamente até fechar a posição. Exemplo: entrei com um posição vendida no preço 1.38203, se o trailing stop for 30 pontos, toda vez que o preço correr para o lucro 30 PIPs eu arrasto o preço do Stop Loss.
Pegando o exemplo: 1.38203 - 300 = 1.37903 - neste momento eu arrasto o stop loss para o preço 1.38203
1.37903 - 300 = 1.37603 - neste momento eu arrasto o stop loss do preço 1.38203 - 300 = 1.37903
1.37603 - 300 = 1.37303 - neste momento eu arrasto o stop loss do preço 1.37903 - 300 = 1.37603 ..... e assim até fechar a posição
2. Eu somente não sei qual o valor padrão que o Malacarne implementou no EA para esta mudança de Stop Loss, eu sei que acontece, mas não sei o padrão, então eu passo esta palavra para ele explicar mais detalhadamente como funciona a idéia dentro do código fonte para nós.
Esta é contigo Malacarne!
3. O interessante é que no sistema que o Malacarne colocou, o Stop Loss Móvel funciona mesmo quando o preço está abaixo do valor da entrada da posição. Se o preço começa a despencar, onde o Stop Loss é muito grande, mas neste meio termo o preço volta para a direção do lucro, se o preço andar de tal forma que acione o Trailing Stop, isto fará com que se o preço retrair novamente, você não vai perder todo o valor estipulado no Stop Loss Inicial. Este sistema possibilitou uma estratégia lucrativa desse EA, onde vou mostrar no próximo post.
4. São quatro forma de fechamento da posição: Stop Loss - Take Profit - Trailing Stop e abertura de uma nova posição de negociação no sentido contrário
5. Se estiver em progresso uma posição comprada e novamente é plotado um sinal de Compra, este sinal não é executado. Somente será executada nova ordem quando fechar a posição em andamento. A mesma regra vale para a posição vendida.
6. Não existe um gerenciamento de risco automático, onde o tamanho do Volume (lote) vai aumentando ou diminuindo conforme o balanço, ou ainda, outro tipo. Neste momento é um valor de tamanho do lote colocado manualmente. No Testador de Estratégia será o mesmo lote em todas as operações.
Segue anexo o arquivo mq5 para compilação e diversão dos amigos! Aqueles novatos que ainda tem dificuldades para encontrar a pasta MetaTrader para colar o arquivo mq5, veja este tópico e siga os passos.
Agora Vamos aos primeiros resultados!
Sinceramente eu acho que o resultado obtido foi excelente pela simplicidade da proposta e pela perspectiva de direcionamento desta estratégia com novos incrementos e filtros!
Vou colocar aqui dois relatórios completamente opostos e bem incomuns, acho vamos poder explorar bem estas duas propostas .
Os demais parâmetros do EA foram os mesmos!
RELATÓRIO A
Nestes resultado acima e abaixo, acho o grande mérito foi o sistema de Trainling Stop que o Malacarne Implantou, talvez se pudessemos configurá-lo com outros parâmetros externos, poderíamos ter outros resultados! Olhando o resultado anexo veremos que existem muitas transações com vitórias acima de 8 PIPs, eu é um bug, onde o Take Profit não funcionou (santo bug... hehehehe), ou presumo eu, que foi o sistema Trainling Stop!
RELATÓRIO B
Ver relatório completos nos documentos anexo!
Como as postagem vão aumentado, vou fazendo um índice dos comentários mais importante para o objetivo deste tópico. Este índice vai crescendo na medida que formos evoluindo.
ÍNDICE
1 - Post Inicial
2 - Ideia do sistema e estratégia para o 1º Modulo do EA Comunitário
3 - Disponível para download da Primeira Versão do EA "Sistema Fractal", comentários do desenvolvedor Rodrigo Malacarne, e uma síntese do setup
4 - Primeiros Resultados : Anexo dois relatórios que correram durante 6 anos com lucro e constância no gráfico de crescimento
Paulo, então vamos ao item 5 - Primeiras Críticas ;-)
Fiz uma análise do EA, ainda é muito cedo para qualquer conclusão, pois não temos nenhum resultado em operação demo/real, mas já teria algumas sugestões e críticas:
- Como o Malacarne fez a codificação (aliás com excelente estruturação e documentação dos comentários), sugiro fazer uma referência a isso no código fonte.
- Já esperava resultados excelentes como os apresentados, em qualquer período de tempo. E a razão para isso está no indicador que ele utiliza, que para mim induz a uma expectativa falsa de precisão de conhecimento do passado. Considero esse EA é um bom exemplo para testes de filtragem de algoritmos que são basicamente um reflexo de combinações precisas do passado, já que assim como no Zig-Zag, o Fractal busca a combinação que já aconteceu no passado que melhor representa um cenário presente.
Talvez os testes em contas demonstração (e quem sabe reais) mostrem que o EA é realmente vencedor (ao contrário de minhas críticas), o que seria muito bom para tentarmos descobrir alguma nova lógica de descoberta de inteligência do passado, mas para ser franco não acredito nisso e me parece que o EA é muito dependente do ajuste dos parâmetros e setups para conseguir gerar resultados concretos.
Paulo, então vamos ao item 5 - Primeiras Críticas ;-)
Fiz uma análise do EA, ainda é muito cedo para qualquer conclusão, pois não temos nenhum resultado em operação demo/real, mas já teria algumas sugestões e críticas:
- Como o Malacarne fez a codificação (aliás com excelente estruturação e documentação dos comentários), sugiro fazer uma referência a isso no código fonte.
- Já esperava resultados excelentes como os apresentados, em qualquer período de tempo. E a razão para isso está no indicador que ele utiliza, que para mim induz a uma expectativa falsa de precisão de conhecimento do passado. Considero esse EA é um bom exemplo para testes de filtragem de algoritmos que são basicamente um reflexo de combinações precisas do passado, já que assim como no Zig-Zag, o Fractal busca a combinação que já aconteceu no passado que melhor representa um cenário presente.
Talvez os testes em contas demonstração (e quem sabe reais) mostrem que o EA é realmente vencedor (ao contrário de minhas críticas), o que seria muito bom para tentarmos descobrir alguma nova lógica de descoberta de inteligência do passado, mas para ser franco não acredito nisso e me parece que o EA é muito dependente do ajuste dos parâmetros e setups para conseguir gerar resultados concretos.
Figurelli, críticas construtivas são muito bem vindas ! :D
Eu concordo com você, o indicador fractal somente por si não traz segurança para operações em tempo real e que está muito dependente do ajustes dos parâmetros para resultados positivos, mas a idéia deste tópico é que a partir deste princípio possamos agregar novas idéias neste algoritmo, de tal forma que tenhamos operações concretas em conta real com lucro!
Quanto ao código fonte, no meu entender ele está livre para qualquer usuário desenvolvedor fazer alterações e disponibilizar aqui no tópico, desde que ele explique os detalhes das alterações para podermos acompanhar e continuar no processo, tenho certeza que o Malacarne não vai sentir-se melindrado se você ou qualquer outro fizer alguma modificação, acredito que ele vai é ficar feliz em ver outras idéias agregadas nas que ele começou. Até por que o código fonte está no no meu nome e estou disponibilizando a todos para alterar quanto quisermos, como a própria descrição está dizendo é "Expert Advisor comunitário"!
Hoje estarei começando o processo para postar na Base de Código este, acho que vai ser o primeiro código livre em português disponibilizado.
Uma pequena observação, o Malacarne provavelmente somente estará nos visitando novamente após a virada do ano, pois acredito que ele está descansando e curtindo a sua linda família!
A discussão está aberta para implementarmos soluções! Que venham as idéias!
analisei os dois backtests.... no fim das contas, não vi muita diferença de um para outro.. LL parecidos, drawdowns parecidos também, número de negociações também próximos um ao outro, enfim... o sistema parece ser teoricamente vencedor no longo prazo... Paulo, se não for pedir muito, faz backtests usando o timeframe de 1 minuto, 5 minutos e 15 minutos, depois publica aqui pra a gente ver
Rafael, estarei fazendo outros testes principalmente em timeframes menores, mas acho que vai ser necessário antes consertar uma pequena inconsistência que descobri comparando os resultados gráficos com a estratégia, estarei publicando estas inconsistência até o final do dia.
Mas Rafael, você pode também fazer testes e colocar seus comentários aqui, isto torna mais dinâmico e rápido o desenvolvimento deste projeto ao invés de somente um a frente!
Fique a vontade!
Abraços
A discussão está aberta para implementarmos soluções! Que venham as idéias!
Excelente Paulo, conte comigo, vamos trabalhar então, o desafio é grande, mas minha filosofia é sempre testar sem paradigmas, portanto, seja como for, é importante fazermos testes com conta Demo da versão atual com os dois Setups que você fez backtesting para análise.
Enquanto isso, me comprometo em colocar a mão na massa em duas melhorias, que descrevo abaixo:
1) Forward testing: meu método de otimização sempre utiliza o recurso de teste para frente, acredito que para esse EA baseado em fractais esse teste será essencial para retirar os vícios do backtesting (overfitting).
2) Inserção de um filtro baseado nos suportes e resistências: acredito que esse pode ser um bom contraponto para o indicador Fractal utilizado, pois irá identificar os melhores momentos de mercado para a adoção do indicador (e talvez seja possível descobrir algo assim).
A vantagem dos suportes e resistências é que eles não são tão dependentes de backtesting (isso considero um ponto muito importante para um EA).
A desvantagem é que milhões de investidores usam suportes e resistências, retirando o fator novidade ou inovação (que também considero muito importante para um EA).
Se tivermos uma boa identificação de momento, não viciada no passado, e um bom sistema de testes, na minha opinião já viramos a página para um trading system mais competitivo.
Anyway, como você diz, esse é um EA comunitário e o importante é isso ai, o trabalho cooperativo e a troca de ideias.
Abs.
Excelente Paulo, conte comigo, vamos trabalhar então, o desafio é grande, mas minha filosofia é sempre testar sem paradigmas, portanto, seja como for, é importante fazermos testes com conta Demo da versão atual com os dois Setups que você fez backtesting para análise.
Enquanto isso, me comprometo em colocar a mão na massa em duas melhorias, que descrevo abaixo:
1) Forward testing: meu método de otimização sempre utiliza o recurso de teste para frente, acredito que para esse EA baseado em fractais esse teste será essencial para retirar os vícios do backtesting (overfitting).
2) Inserção de um filtro baseado nos suportes e resistências: acredito que esse pode ser um bom contraponto para o indicador Fractal utilizado, pois irá identificar os melhores momentos de mercado para a adoção do indicador (e talvez seja possível descobrir algo assim).
A vantagem dos suportes e resistências é que eles não são tão dependentes de backtesting (isso considero um ponto muito importante para um EA).
A desvantagem é que milhões de investidores usam suportes e resistências, retirando o fator novidade ou inovação (que também considero muito importante para um EA).
Se tivermos uma boa identificação de momento, não viciada no passado, e um bom sistema de testes, na minha opinião já viramos a página para um trading system mais competitivo.
Anyway, como você diz, esse é um EA comunitário e o importante é isso ai, o trabalho cooperativo e a troca de ideias.
Abs.
Na realidade o sistema que idealizei de certa forma ele trabalha com suportes e resistência pontuais, após a confirmação dos fractais.
Acrescentar também suportes e resistências através de outros sistemas para confirmar uma entrada e também os alvos é muito interessante, andei lendo alguma coisa a respeito e temos alguns métodos para isto, tipo: Clássico, Fibonacci, Camarilla, Woodie's e DeMark's . Seria utilizado um destes, Figurelli, ou você tem outro método?
Aproveitando o gancho, andei verificando algumas inconsistência no EA dentro daquilo que eu imaginei, ou talvez eu não tenha conseguido expressar o sistema claramente para o Malacarne ou talvez seja necessário alguns ajustes mesmos! Então antes de fazer alguma atualização é bom corrigirmos estes detalhes.
Acima um teste que fiz num período pequeno: note que no BAR1 temos um fractal UP, o BAR2 é o que confirma o Fractal. Segundo a idéia do sistema, seria plotado um preço base para cálculo da ordem pendente a partir da do menor preço entre a barra de preço onde está o fractal UP e a barra de preço que confirmou este fractal, onde para este cálculo da ordem pendente este preço é adicionado ao parâmetro Margem de Segurança (neste exemplo = 20 PIP). Na prática este preço é um suporte (linha vermelha) a ser vencido e que é justamente este o objetivo da Margem de Segurança. Veja a imagem acima. O menor preço entre as duas barras é 1.35230, em consequência o SELL Stop teria de ser no preço 1.35039.
Note que o EA entrou com a operação antes do momento certo, em consequência houve prejuízo. Observei que isto tem acontecido direto, outras vezes o EA não emite a ordem. Veja abaixo um outro teste!
(clique na lupa para melhor visualização)
Bom gente, para olharmos estas, talvez, inconsistência, vamos aguardar o Malacarne retornar ao trabalho, somente após a virada do ano.
PS: aqueles que estão chegando e querem encomendar um programa, percebam o quanto temos que nos preocupar com os detalhes ao solicitar um EA para um desenvolvedor, recomendo ler o artigo Como encomendar um Expert Advisor e Obter o Resultado Desejado, é muito bom, ele ainda está e inglês, mas em janeiro estarão publicando a versão traduzida. O autor,Andrey Khatimlianskii, é um programador experiente, e gostaria de deixar uma frase dele aqui, retirada deste artigo:"não existe nenhum software sem erros, existem somente programas mal-testados". Ou seja, o ajuste fino de um software é mediante muitos testes, até chegar ao ponto certo! Vejam o exemplo do tópico Metodologia de teste de qualidade de dados, a plataforma Metatrader 5 está tendo defasagens na transmissão dos Ticks reais, ou seja, você ainda não está tendo a informação correta do preço que esta sendo negociado na Bovespa.