No testador, ele apresenta um erro:
2010.04.28 06:27:44 Core 1 Erro de criação de processo [2]
No testador, ele apresenta um erro:
2010.04.28 06:27:44 Core 1 Erro de criação de processo [2]
Atualize para a versão mais recente e, em seguida, verifique se há o arquivo metatester.exe na raiz do diretório do programa.
Obrigado, ele funciona.
O otimizador e a visualização estão ausentes.
O otimizador e a visualização estão faltando.
O otimizador está lá - basta aumentar a altura da janela do testador.
A visualização ficará para depois.
Saudações,
Sr. / Sra. tsaktuo, estudei seu código K_eSimpleMA e ele foi muito útil para entender como é a estrutura de um EA, bem como conceitos como trabalhar com cruzamentos de SMA.
Agradeço imensamente por ter compartilhado esse artigo e agradeço muito.
Por outro lado, tenho algumas perguntas; ambas estão relacionadas à funçãoSymbolInfoTick :
O que o manual da MQL5 diz sobreSymbolInfoTick(Symbol(),tick) é que ela retorna os preços atuais de um símbolo especificado em uma variável do tipo MqlTick e também diz que a função retorna true se for bem-sucedida, caso contrário, retorna false.
De acordo com o que entendi acima, a mensagem ("Failed to get Symbol info!") é impressa se não houver um tick recebido. Isso está correto? Se não estiver correto, poderia me dizer do que se trata?
A outra pergunta é: O que acontece se a mensagem for impressa a cada tick?
Mais uma vez, obrigado.
Há:
trReq.sl=tick.ask-_Point*sl; // Nível de stop loss da ordem
trReq.tp=tick.ask+_Point*tp; // Nível de take profit da ordem
necessário:
trReq.sl=tick.bid-_Point*sl; // Nível de stop loss da ordem
trReq.tp=tick.bid+_Point*tp; // Nível de Take Profit da ordem
e altere para SELL adequadamente.
A compra é feita pelo preço de venda, mas é fechada pelo preço de compra.
Se você quiser limitar o lucro e a perda, por exemplo, a 20 pontos, então exatamente 20 pontos devem ser contados a partir do preço de compra (preço de fechamento) para BUY e do preço de venda (preço de fechamento) para SELL.
Você pode me dizer como adicionar a esse código para que ele seja negociado na tendência MACD sem paradas?
Longo: o MACD está crescendo com a MA rápida cruzando a MA lenta de cima para baixo
Croy Long: MACD está subindo rápido MA cruzou MA lento de baixo para cima
Curto: A MA rápida decrescente do MACD cruzou a MA lenta de cima para baixo
Curta: a MA rápida decrescente do MACD cruzou a MA lenta de baixo para cima
Tentei da seguinte forma:
//+------------------------------------------------------------------+
//|MACD&DEMA.mq5
//|Direitos autorais 2010, AM2 Group. |
//| http://www.am2_group.net
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link "http://www.am2_group.net"
#property version "1.00"
//--- parâmetros de entrada
input int Periods=2; // Média móvel do período 1
input int Shift=38; // Média móvel do período 2
input int SL=30; // Stop Loss
input int TP=100; // Take Profit
input int MAGIC=3072010; // Conselheiro de números mágicos
MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle; // Identificador do indicador MACD
double ma1Val[];
double ma2Val[];
double macdVal[]; // matriz dinâmica para armazenar valores numéricos de MACD para barras diárias
int sl;
int tp;
//+------------------------------------------------------------------+
//| Função de inicialização de especialista|
//+------------------------------------------------------------------+
int OnInit()
{
//Defina os valores padrão para todas as solicitações de novos pedidos
trReq.action=TRADE_ACTION_DEAL;
trReq.magic=MAGIC;
trReq.symbol=Symbol(); // Símbolo comercial
trReq.volume=0.1; // Volume solicitado para uma transação em lotes
trReq.deviation=1; // Desvio máximo possível do preço solicitado
trReq.type_filling=ORDER_FILLING_AON; // Tipo de execução da ordem
trReq.type_time=ORDER_TIME_GTC; // Tempo de execução da ordem
trReq.comment="MA Sample";
//end
//Criar identificador para 2 indicadores MA
ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
//---Obter o identificador do indicador MACD
macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
//end
//os parâmetros de entrada são ReadOnly
tp=0;
sl=0;
//end
//Suplemento para conta com 5 casas decimais
if(_Digits==5)
{
sl*=10;
tp*=10;
}
//end
return(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de especialista|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Função de tique de especialista|
//+------------------------------------------------------------------+
void OnTick()
{
MqlTick tick; //variável para informações de ticks
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!");
return;
}
//Copiar os valores mais recentes do indicador MA em um buffer
int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
if(copied>0)
copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
copied=CopyBuffer(macdHandle,0,0,4,macdVal);
if(copied>0)
{
//Se MAPeriod > MAPeriod + Shift -> BUY
if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
{
trReq.price=tick.bid; // SymbolInfoDouble(NULL,SYMBOL_BID);
trReq.sl=tick.bid-_Point*sl; // Nível de stop loss da ordem
trReq.tp=tick.bid+_Point*tp; // Nível de Take Profit da ordem
trReq.type=ORDER_TYPE_BUY; // Tipo de pedido
OrderSend(trReq,trRez);
}
//Se MAPeriod < MAPeriod + Shift -> SELL
else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
{
trReq.price=tick.ask;
trReq.sl=tick.ask+_Point*sl; // Nível de stop loss da ordem
trReq.tp=tick.ask-_Point*tp; // Nível de Take Profit da ordem
trReq.type=ORDER_TYPE_SELL; // Tipo de pedido
OrderSend(trReq,trRez);
}
}
}
//+------------------------------------------------------------------+
Olá Outkast,
Sou novo em EAs, acabei de importar o esimpleMA do Sr. tsaktuo, já que realmente não entendo o código, vejo-o funcionando em meu gráfico, mas devo definir alguns dos valores de MA, não sei se preciso de ajuda, preciso de uma aula ou um livro.
Fiquei feliz ao encontrar seu exemplo de código, pois ele resolveu meu problema de armazenar a MA em buffer e fazê-la aparecer em um gráfico. Obrigado por publicá-lo.
A única pergunta que tenho é como ele toma a decisão de fechar a ordem aberta?
Obrigado pela ajuda
- 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

Simple MA Expert Advisor:
Algo para quem quer experimentar o Testador de Estratégia e não têm qualquer EA.
EA realmente simples para quem precisa de um exemplo e para quem está à procura de algo para testar no Testador de Estratégias.
O EA é baseado em duas linhas MA. Se uma linha está cruzando outra, então entra vendido ou comprado.
Autor: Karlis Balcers