Como usar códigos MQL4 personalizados no EA Wizard
O EA Wizard contém muitas funções úteis que podem ser facilmente utilizadas e permite que você construa rapidamente seu próprio consultor especializado. Se você precisa de uma função que não está presente, você não está preso. Em tal cenário, você pode usar a função personalizada do EA Wizard.
O uso deste recurso requer que você seja capaz de entender linhas de código simples do código MQL4. Se você não está familiarizado com nenhuma linguagem de programação, você ainda deve ser capaz de completar uma solução simples, como mostramos neste tutorial.
Neste tutorial mostraremos a você como simplesmente calcular o número de barras que fecharam acima de um indicador de média móvel para um determinado número de barras no período anterior. Este processo requer um loop que retrocede e verifica cada barra usando uma simples comparação entre o preço de fechamento de uma barra e o valor médio móvel.
Esta função pode ser muito útil quando desejamos avaliar uma tendência no mercado. Se todas as barras avaliadas em um determinado período fecharem acima do valor médio móvel, podemos considerar que o mercado está em uma tendência de alta. O oposto será verdadeiro para uma tendência de queda.
Ok, vamos começar com a própria função personalizada.
Criação de funções MQL4 personalizadas no EA Wizard
Todas as funções personalizadas que você deseja usar em seus projetos do EA Wizard precisam ser colocadas no arquivo CustomFunctions.mq4 localizado na pasta de instalação do EA Wizard sob a pasta de código.
Uma vez instalada sua cópia do MetaTrader4 em seu computador, você poderá editar este arquivo usando a ferramenta MetaEditor.
Para contar barras que fecharam acima do indicador de média móvel, usaremos esta simples função personalizada:
int getBarCloseAcima da média(int barsPeriod, int maPeriod) {
contador int = 0;
para (int i = 1; i <= barPeriodo; i++) {
if (Fechar[i] > iMA(NULL, 0, maPeriod, 0, MODE_EMA, PRICE_CLOSE, i))
contador++;
}
contador de retorno; }
Vamos rever cada linha e explicar com mais detalhes o que cada linha representa.
int getBarCloseAcima da média(int barsPeriod, int maPeriod) { - esta linha define nossa função personalizada. O tipo de retorno é definido como "int", o que significa que a função retornará um número inteiro, ou seja, o número de barras que fecharam acima de nossa média móvel. A função também contém dois parâmetros - barsPeriod que é um número inteiro que representa o número de barras que comparamos com a média móvel e maPeriodo que representa um período que será utilizado como duração da mudança. O nome destas variáveis é importante apenas dentro da própria função. Dentro do EA Wizard podemos usar nomes diferentes para valores de entrada, como você verá mais adiante.
contador int = 0; - esta linha define um contador. Ele armazenará a soma das barras que satisfazem nossos critérios, ou seja, barras que fecharam acima da linha média móvel.
para (int i = 1; i <= barPeriodo; i++) { - esta linha inicia o loop. A variável "i" representa o índice de barras que estamos avaliando atualmente. Começamos com a barra #1 e continuamos sobre cada barra até que todas as barras (barsPeriod) sejam verificadas. Cada vez que também aumentamos o valor do "i" em 1 (passamos para a barra anterior)
if (Fechar[i] > iMA(NULL, 0, maPeriod, 0, MODE_EMA, PRICE_CLOSE, i)) - esta condição verifica se uma barra fecha mais do que o valor médio móvel. Observe a variável "i" que usamos para referenciar cada barra à medida que o laço progride sobre todas as barras. Também usamos a média móvel exponencial (MODE_EMA) como especificado na ajuda da MQL4 https://docs.mql4.com/indicators/ima
Mesmo que isto possa parecer muito complexo para você, é bastante intuitivo, especialmente se o MetaEditor também o ajudar a completar o código. Veja a captura de tela.
Uma vez concluída a função, podemos salvar nosso trabalho, abrir o EA Wizard e usar a função criada em nosso novo consultor especializado.
Usando funções personalizadas no EA Wizard
Agora vamos criar um simples consultor especializado que utilizará a função criada. O primeiro passo será definir variáveis e inputs. Veja a captura de tela anexada.
médioPeriodo - esta variável de entrada representa o período médio móvel. Por padrão, nós a definimos para 34
barTrendPeriod - esta variável de entrada representa a quantidade total de barras que contamos. Por padrão, nós a definimos como 20
minBarsUptrend - esta variável de entrada representa as barras mínimas necessárias para estarmos acima da média móvel. Por padrão, nós a definimos para 15
Também definimos takeProfit, stopLoss a 20 pips e lotSize a 0,1.
Vamos empacotar tudo isso em uma simples regra comercial que abrirá uma posição longa.
Além de nossa função personalizada, a longa condição também inclui uma verificação se não temos nenhuma posição no mercado. A menos que tenhamos uma, podemos abrir uma nova posição. Também nos certificamos de que a regra é avaliada somente quando uma barra fecha (não em cada carrapato) usando o Is Bar Open é Verdadeiro função.
É assim que configuramos a função personalizada e incluímos variáveis definidas no EA Wizard usando Função Personalizada que pode ser encontrada sob a opção Funções menu.
Função Personalizada : getBarCloseAcima da Média(barrasTendPeriod, averagePeriod)
Neste momento, nosso consultor especializado está pronto para usar. O último passo que precisamos fazer é exportar o código para o MetaTrader 4. Eis como fazer isso:
Agora você pode testar o consultor especialista em MetaTrader e graças aos inputs definidos o consultor especialista também está pronto para um processo de otimização. Você pode tentar encontrar as melhores configurações para os valores de entrada ou adicionar regras e filtros adicionais para os sinais comerciais.
Trading smart means making the most of your time and resources, especially when comparing your current trading results with historical data. That’s where Quant Analyzer steps in, offering a streamlined …
We’d like to announce the release of the new SX 139 Dev 1 version – note that this is a development version for testing, not the final 139 version. Most …
Dive into Algorithmic Trading Without the Coding Headache! Are you intrigued by algorithmic trading but dread the thought of coding? Today marks the beginning of our exciting series that’s about …