Início Negociação Sistemática Postagem

Fundamental Trader: Automatize Suas Decisões de Trading com MQL4 no MetaTrader 4

Anexo
8491.zip (57.77 KB, Baixar 2 vezes)

Descrição:

  • A proposta é desenvolver um Expert Advisor (EA) que tome decisões de trading financeiro com base em eventos de notícias, de forma automática. O Fundamental Trader EA não pode ser testado com dados históricos, apenas pode ser testado em tempo real, pois está configurado para aguardar o próximo evento de notícias e tomar uma decisão de trading com base na diferença entre (dados atuais vs. previsão) ou (dados atuais vs. anteriores).
  • O Fundamental Trader EA é bem simples: após baixar o calendário, ele determina qual evento de notícias do calendário DailyFX está agendado para ser o próximo, em seguida aguarda a liberação desse evento. Assim que os dados são liberados, o EA toma uma decisão de trading. O Fundamental Trader EA pode ser aplicado a qualquer gráfico e em qualquer período, pois utiliza o gráfico apenas para executar ordens. O Fundamental Trader EA está configurado para suportar todos os países que estão no calendário DailyFX, veja mais detalhes abaixo.

NOTA:

  • Para fazer este EA funcionar, você DEVE seguir as instruções para configurar os arquivos principais no seguinte site:
  • https://www.mql5.com/en/articles/1502
  • Este EA é construído com base em código de um indicador especificado no link acima. Você DEVE primeiro seguir as instruções do link acima e configurar os seguintes arquivos:
  • getright_setup.zip
  • Time.mq4
  • Time.mqh
  • Certifique-se de alterar o diretório de download padrão para onde o calendário será salvo, caso contrário, este EA não funcionará.
  • Leia o artigo muito atentamente e siga cada instrução.
  • Você pode ler tudo sobre o que esses (3) arquivos são e qual é a sua função. Esse artigo explica muito bem o que o indicador está executando para exibir os eventos de notícias na janela do gráfico.
  • É uma boa ideia, primeiro, configurar esse indicador e ter as notícias exibidas no seu gráfico, após o que este EA funcionará sem problemas.
  • O código-fonte desse indicador foi modificado para se tornar um EA, para negociar as notícias e não apenas exibi-las.
  • Quando você configurar os arquivos listados acima, a partir do link mencionado, você pode baixar este EA juntamente com "str2double.dll" e este EA irá negociar as notícias liberadas no DAILYFX. O arquivo "str2double.dll" deve ser colocado no diretório raiz, por exemplo, C:\Program Files\Interbank FX Trader 4\

Lógica de Trading:

  • A lógica por trás da negociação é a seguinte: existem dois tipos de eventos que ocorrem ao negociar notícias.
  • 1º: há dados econômicos reais que são comparados com os dados econômicos previstos.
  • 2º: há dados econômicos reais que são comparados com os dados econômicos anteriores.
  • A diferença entre os dados econômicos pode afetar a direção do preço da moeda, e a porcentagem de diferença entre os dados econômicos fornece uma maior probabilidade de que o evento de notícias terá uma reação do mercado em uma direção específica.
  • Para mais informações sobre Trading Fundamental, visite www.pfxglobal.com
  • Quando há uma alta porcentagem de diferença entre os dados econômicos, o EA executa ordens com lotes maiores.
  • Quando a diferença percentual entre os dados econômicos é pequena, o EA executa ordens com lotes mínimos.
  • Esses tamanhos de lote são especificados quando o EA é aplicado ao gráfico com as seguintes variáveis:
  • lot1, lot2, lot3, lot4, lot5, lot6......lot18
  • O tamanho de lote específico será escolhido pelo EA, com base na porcentagem de diferença entre os dados econômicos.

Relação Risco/Recompensa:

  • O Fundamental Trader EA está configurado com uma relação risco/recompensa de 1:3, os valores padrão são risco=20, recompensa=3.
  • Risco é o valor do StopLoss em PIPs, e recompensa é o multiplicador, de forma que se o EA está arriscando 20 PIPs, ele espera ganhar 60 PIPs.
  • Esses valores podem ser modificados ao aplicar o EA no gráfico.

Tempo de Espera para o Evento de Notícias Ser Liberado:

  • Os dados de notícias não são liberados exatamente no horário agendado, é necessário configurar um período de espera para o EA aguardar a liberação dos eventos de notícias.
  • O seguinte trecho de código determina o tempo que o EA aguardará pela liberação das notícias; quando o tempo de espera se esgotar, o EA avança para o próximo evento de notícias.
  • xTime é uma variável que pode ser alterada quando você aplica o EA pela primeira vez ao gráfico. O valor padrão é de 27 minutos.
if(Date>(TimeCurrent()-(xTime*60)))

Tempo de Espera para o Fechamento das Ordens:

  • Você também pode configurar um período de espera para o EA aguardar um determinado tempo antes de fechar uma ordem aberta.
  • Por exemplo, após um evento de notícias ser liberado e uma posição ser executada, aguarde 30 minutos para fechar a ordem atual, com lucro ou prejuízo. Esta é uma recomendação do usuário MQL4 "ebenv".
  • Existem (3) variáveis que controlam essa função:
  • MagicNumber | número usado para rastrear ordens abertas
  • enable_close_time | definido como verdadeiro para permitir que o EA monitore o tempo que passou desde que a ordem foi executada
  • wait_time | tempo a aguardar antes de fechar a ordem

Suporte a Países do Fundamental Trader:

  • O Fundamental Trader EA negocia todas as moedas que são suportadas em dailyfx.com/calendar.
  • Abaixo está o trecho de código que especifica a moeda a ser negociada com base no país onde o evento de notícias é liberado. A lista de moedas é a seguinte: EUR, USD, JPY, GBP, CHF, AUD, CAD, NZD
if(stCurrency=="EUR") {ordercurrency="EURUSD";}//trading eurusd
if(stCurrency=="USD") {ordercurrency="EURUSD";}//trading eurusd
if(stCurrency=="JPY") {ordercurrency="USDJPY";}//trading usdjpy
if(stCurrency=="GBP") {ordercurrency="GBPUSD";}//trading usdgbp
if(stCurrency=="CHF") {ordercurrency="USDCHF";}//trading usdchf
if(stCurrency=="AUD") {ordercurrency="AUDUSD";}//trading audusd
if(stCurrency=="CAD") {ordercurrency="USDCAD";}//trading usdcad
if(stCurrency=="NZD") {ordercurrency="NZDUSD";}//trading nzdusd

Decisão de Trading:

  • O seguinte trecho de código descreve como o EA toma uma decisão de trading, quando o EA está aguardando dados econômicos reais, quando os dados econômicos previstos estão disponíveis.
  • Quando os dados previstos não estão disponíveis, o EA utiliza os dados anteriores para realizar uma negociação.
  • O seguinte trecho de código explica como a negociação é executada com base nos dados previstos e nos dados reais. O mesmo algoritmo é utilizado quando o EA toma uma decisão de trading baseada nos dados anteriores e nos dados reais.
if(StringToDouble(stActual)>StringToDouble(stForecast))
{
      Aert("Mais forte (real vs previsão): "+stCurrency+" "+"Hora: "+stTime);

int total=OrdersTotal();
    for(int cnt=0;cnt\n"+"Negociação ao Vivo Aberta"+OrderTicket());
return(0);
}
}
int historytotal=OrdersHistoryTotal();
for(cnt=0;cnt\n"+"Negociação Executada"+OrderTicket());
return(0);
}
}
if(stCurrency=="EUR"||stCurrency=="GBP"||stCurrency=="AUD")
{
double ask=MarketInfo(ordercurrency,MODE_ASK);
double point1=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency,OP_BUY,lot_p,ask,3,ask-(risk*point1),ask+reward*risk*point1,stCurrency+stActual+stForecast+"BUY");}
if(stCurrency=="CHF"||stCurrency=="CAD"||stCurrency=="NZD"||stCurrency=="JPY"||stCurrency=="USD")
{
double bid=MarketInfo(ordercurrency,MODE_BID);
double point2=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency,OP_SELL,lot_p,bid,3,bid+(risk*point2),bid-(reward*risk*point2),stCurrency+stActual+stForecast+"SELL");}
  • 1º: o EA só pode executar uma ordem por evento de notícias, então ele primeiro verifica se uma ordem foi executada; se a ordem está atualmente aberta, o EA sai.
  • 2º: o EA determina se essa ordem já foi executada e fechada; se a ordem foi executada e fechada com lucro ou prejuízo, o EA sai.
  • As (2) verificações para ordens garantem que não haja duplicação de ordens, permitindo que o EA execute apenas uma única negociação por evento de notícias.
  • Em seguida, determina para qual país os dados estão sendo liberados e abre uma negociação com as especificações na função ordersend quando os dados econômicos são liberados.
  • O código acima é para: quando os dados reais são maiores que os dados previstos, o código é o mesmo quando os dados reais são menores que os dados previstos, a única diferença é a direção da negociação.
  • O mesmo algoritmo é aplicado quando os dados anteriores são comparados com os dados reais quando os dados previstos não estão presentes.

Tamanho dos Lotes:

  • O EA compara (dados reais com dados previstos), ou (dados reais com dados anteriores), a diferença percentual entre os dados de notícias determina a quantidade de lotes que o EA irá negociar.
  • O seguinte trecho de código mostra como o EA determina a diferença percentual e especifica o tamanho do lote; o tamanho do lote é um número externo que pode ser modificado, para suportar qualquer corretora de EA.
  • O usuário pode modificar os lotes ao aplicar o EA no gráfico. Os valores padrão dos tamanhos dos lotes são (0.01, 0.02, 0.03...0.17).
double percent_d_AF=MathAbs((MathAbs(StringToDouble(stActual)-StringToDouble(stForecast))/StringToDouble(stForecast))*100);
double lot_p=0;
if((percent_d_AF>0 && percent_d_AF<=3)){lot_p=lot1;}//0.1 lote
if((percent_d_AF>3 && percent_d_AF<=6)){lot_p=lot2;}//0.2 lotes
if((percent_d_AF>6 && percent_d_AF<=9)){lot_p=lot3;}//0.3 lotes
if((percent_d_AF>9 && percent_d_AF<=12)){lot_p=lot4;}//0.4 lotes
if((percent_d_AF>12 && percent_d_AF<=15)){lot_p=lot5;}//0.5 lotes
if((percent_d_AF>15 && percent_d_AF<=18)){lot_p=lot6;}//0.6 lotes
if((percent_d_AF>18 && percent_d_AF<=21)){lot_p=lot7;}//0.7 lotes
if((percent_d_AF>21 && percent_d_AF<=24)){lot_p=lot8;}//0.8 lotes
if((percent_d_AF>24 && percent_d_AF<=27)){lot_p=lot9;}//0.9 lotes
if((percent_d_AF>27 && percent_d_AF<=30)){lot_p=lot10;}//1 lote
if((percent_d_AF>30 && percent_d_AF<=40)){lot_p=lot11;}//2 lotes
if((percent_d_AF>40 && percent_d_AF<=50)){lot_p=lot12;}//3 lotes
if((percent_d_AF>50 && percent_d_AF<=60)){lot_p=lot13;}//4 lotes
if((percent_d_AF>60 && percent_d_AF<=70)){lot_p=lot14;}//5 lotes
if((percent_d_AF>70 && percent_d_AF<=80)){lot_p=lot15;}//6 lotes
if((percent_d_AF>80 && percent_d_AF<=90)){lot_p=lot16;}//7 lotes
if((percent_d_AF>90 && percent_d_AF<=100)){lot_p=lot17;}//8 lotes
if((percent_d_AF>100)){lot_p=lot18;}//8 lotes



Informações do Gráfico:


Captura de Tela dos Dados de Notícias Fundamentais

  • Quando o EA é aplicado ao gráfico, você especifica "xTime", "risco", "recompensa", "MagicNumber", "enable_close_time", "wait_time" e especifica seus tamanhos mínimos e máximos de lotes, certifique-se de deixar a localização padrão onde o "get right" está instalado.

  • O EA fará o download do calendário dailyfx e determinará qual evento de notícias é o próximo. Ele exibirá os seguintes dados: Data, Hora, Fuso Horário, Moeda, Descrição, Importância, Atual, Previsão e dados do evento de notícias anterior como um comentário no gráfico, como mostrado na imagem acima.

  • Na imagem acima, o EA está esperando pelo evento de notícias que será liberado às 2:00AM, e como você pode ver, os dados econômicos anteriores são conhecidos (73,5%), então o EA está aguardando os dados atuais serem liberados. Quando os dados econômicos forem liberados, o EA irá comparar os dados e tomar uma decisão de trading com base nos dados econômicos anteriores e atuais.

  • Por fim, o EA baixa os dados do calendário a cada minuto, a partir do momento em que o evento de notícias está agendado para ser liberado.


Visão Geral do Fundamental Trader:

  • Este EA negocia todos os eventos econômicos que são liberados em dailyfx.com/calendar, em formato CSV.

  • O calendário é baixado com o programa "get right".

  • O EA baixa o calendário a cada minuto quando os dados de notícias estão agendados para serem liberados.

  • O EA analisa o calendário e determina qual evento de notícias é o próximo, em seguida, aguarda 27 minutos pela liberação das notícias.

  • Uma vez que os dados econômicos forem liberados, ele determina se é (atual vs. previsão) ou (atual vs. anterior) os dados.

  • O EA determina o tamanho do lote, a moeda a ser negociada e a direção com base no evento do calendário econômico; todos esses dados podem ser encontrados no gráfico enquanto o EA está em execução.

  • A ordem é executada com uma relação risco/recompensa de 1:3.

  • O EA está configurado para executar apenas uma única ordem por evento de notícias. Se "enable_close_time" estiver habilitado com um valor "true", o EA aguardará o número de minutos especificado por "wait_time" antes de fechar a ordem aberta.

Lembre-se de seguir todas as instruções no seguinte link https://www.mql5.com/en/articles/1502, para que o calendário seja baixado corretamente e que o horário do seu corretor esteja configurado corretamente, pois os dados de dailyfx.com/calendar estão em GMT.

Se você tiver alguma dúvida, comentário ou crítica, deixe um comentário.

Publicações relacionadas

Comentário (0)