Criando um EA para todos como tutorial
36 respostas
Conmariin
7 anos atrás #116417
Olá,
Não sou programador e achei que comprar o EA Wizard seria muito mais fácil para criar um EA. Mas, depois de praticar um pouco a criação, vi que você precisa ser um programador mql-Pro para entender até mesmo o EA Wizard.
Por isso, fiz uma pergunta a você: É possível criar neste fórum pelo menos um EA passo a passo para que todos os não-programadores entendam melhor o EA Wizard?
Já tenho uma estratégia que está descrita aqui: https://www.mql5.com/en/articles/1734
Nessa estratégia, há trechos de código. Na verdade, não sei como integrá-los. Mas, mais do que isso, quero entender e compreender como estou construindo esse tipo de EA no EA Wizard. Assim, poderei criar outros EAs no futuro.
Os trechos de código do artigo estão no mq4.
Esperamos receber saudações de
Conmariin 🙂
Automatisches Handeln mit Expert Advisor
https://www.rabenesche.de
Conmariin
6 anos atrás #197213
Estava faltando alguma coisa. Desculpe-me. Eu o corrigi nesta versão. 🙂
Automatisches Handeln mit Expert Advisor
https://www.rabenesche.de
Conmariin
6 anos atrás #197239
Tenho um problema com a condição para comprar ordens.
Quero que o EA abra uma ordem quando as seguintes condições forem atendidas:
(GoLongSandR=true and(Pattern1=true or Pattern2=true or Pattern3=true)
Mas ele está abrindo ordens quando qualquer um desses padrões é atendido. Ele abre quando GoLongSandR=verdadeiro. Abre quando Pattern1=verdadeiro e Pattern3=verdadeiro (mas não GoLongSandR). Ele abre quando apenas Pattern2=verdadeiro... etc. Por exemplo, às vezes ele abre corretamente com GoLongSandR=verdadeiro e Pattern1=verdadeiro.
Anexei uma imagem da minha configuração de condições no EAWizard for Long. Onde está o erro? Alguém pode me ajudar?
Este é o código do EA:
//--------------------------------------
// Abrir longa
se (sqIsBarOpen == true) {
se (((sqGetMarketPosition() == 0)
&& ((GoLongSandR == true)
&& ((Pattern1Long == true)
|| ((Pattern2Long == true)
|| (Pattern3Long == true))))))
{
// Ação #1
sqOpenOrder("NULL", OP_BUY, getOrderSize(MagicLong, OP_BUY ), getOrderPrice(MagicLong), Comment1, MagicLong, "Open Long");
// Ação #2
sqDrawUpArrow(1);
}
}
//--------------------------------------
// Abrir curto
se (sqIsBarOpen == true) {
se (((sqGetMarketPosition() == 0)
&& ((GoShortSandR == true)
&& ((Pattern1Short == true)
|| ((Pattern2Short == true)
|| (Pattern3Short == true))))))
{
// Ação #1
sqOpenOrder("NULL", OP_SELL, getOrderSize(MagicShort, OP_SELL ), getOrderPrice(MagicShort), Comment2, MagicShort, "Open Short");
// Ação #2
sqDrawDownArrow(1);
}
}
Automatisches Handeln mit Expert Advisor
https://www.rabenesche.de
tomas262
6 anos atrás #197256
Olá,
Vejo que no arquivo original anexado você omitiu os parênteses, mas na captura de tela fornecida eles estão presentes (corretamente). Arquivo modificado em anexo
tomas262
6 anos atrás #197258
Um problema poderia ser o fato de você definir "pattern" como TRUE (verdadeiro), mas nunca defini-lo novamente como FALSE (falso), de modo que a condição permanecerá sempre válida.
Acho que você deve definir pattern = FALSE com a entrada da ordem
Conmariin
6 anos atrás #197259
Sim, adicionei os parênteses quando pesquisei o erro para esse comportamento. E achei que poderia ser porque algo não foi redefinido. Mas eu não tinha certeza. Ok, você teve o mesmo pensamento. Agora estou tentando descobrir como definir o padrão após a entrada da ordem. Obrigado, Tomas262! 🙂
Automatisches Handeln mit Expert Advisor
https://www.rabenesche.de
Conmariin
6 anos atrás #197277
Hi,
Infelizmente, não descobri como posso resolver isso no EAWizard, mas peguei o código e resolvi manualmente. Foi apenas um 1 Liner em cada condição Pattern para definir pattern = FALSE. Agora está funcionando 🙂
Automatisches Handeln mit Expert Advisor
https://www.rabenesche.de