Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

EA Fundamental Trader DailyFX CSV MQL4 - expert para MetaTrader 4

Visualizações:
2545
Avaliação:
(20)
Publicado:
2016.05.20 16:52
Atualizado:
2016.11.22 07:33
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Descrição:

  • A idéia era desenvolver um Expert Advisor que toma decisões automáticas de negociação financeiras com eventos de notícias. O EA Fundamental Trader não pode ser testado em dados do histórico, somente pode ser testado a frente, porque está configurado para esperar os próximos eventos de notícias, e assim, tomar uma decisão de negociação financeira com base na diferença entre os dados (previsão vs. atual" ou "real vs. anterior").
  • O EA Fundamental Trader é muito simples, após o download do calendário, ele determina quais os eventos de notícias no calendário DailyFX estão programadas para serem as próximas, então ele espera a referida notícia, uma vez que os dados são liberados, o EA faz uma decisão na negociação dos investidores. O EA Fundamental Trader pode ser aplicado a qualquer gráfico e qualquer timeframe, uma vez que só utiliza o gráfico de execução de ordens.
    O EA Fundamental Trader está configurado especificamente nos países que estão no calendário DailyFX, veja abaixo mais detalhes.

NOTA:

  • Para começar este trabalho com o EA, você deve seguir as instruções para criação dos principais arquivos do seguinte site:
  • https://www.mql5.com/pt/articles/1502
  • Esta EA é construído sobre o código do indicador especificado no link acima. Você DEVE em primeiro lugar, seguir as instruções neste link e configurar os seguintes arquivos:
  • getright_setup.zip
  • Time.mq4
  • Time.mqh
  • Certifique-se de alterar o download do diretório padrão "get right" para que o calendário seja baixado, senão este EA não vai funcionar.
  • Certifique-se de ler esse artigo muito lentamente e de seguir todas as instruções.
  • Você pode ler tudo sobre esses (3) arquivos e quais suas funções. Esse artigo faz um trabalho muito bom, explicando o que o indicador está executando para exibir os eventos de notícias na janela do gráfico.
  • É uma boa idéia, primeiramente, configurar este indicador e ter a notícia exibida no seu gráfico, depois disto, este EA vai funcionar sem problemas.
  • O código fonte do indicador foi modificado para se tornar um EA, a fim de negociar com as notícias e não apenas exibi-las.
  • Quando você configurar os arquivos listados acima, a partir do link, você pode baixar esse EA junto com "str2double.dll" e ele negociará com as notícias divulgadas no DailyFX. O arquivo "str2double.dll" vai no diretório raiz, por exemplo, C:\Program Files\Interbank FX Trader 4\

Lógica de Negociação:

  • A lógica por trás da negociação é a seguinte: há dois tipos de eventos que ocorrem quando da negociação de notícias.
  • 1º: não existem dados econômicos reais que sejam comparados com os dados econômicos previstos.
  • 2º: não há dados econômicos reais que sejam 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 diferença percentual entre os dados econômicos, aumenta a probabilidade de que os eventos de notícias terão uma reação do mercado, para uma direção específica.
  • Para mais informações sobre a Análise Fundamental, visite o site www.pfxglobal.com
  • Quando há uma grande diferença percentual entre dados econômicos, o EA executa ordens com grandes lotes.
  • Quando a diferença percentual entre os dados econômicos é pequena, o EA executa ordens com lotes mínimos.
  • Estes lotes são especificados, quando o EA é aplicado no gráfico com as seguintes variáveis:
  • lot1, lot2, lot3, lot4, lot5, lot6......lot18
  • O tamanho do lote específico serão escolhidos pelo EA, com base na diferença percentual entre os dados econômicos.

Relação Risco/Recompensa:

    • O EA Fundamental Trader está configurado com 1:3 para a relação risco/recompensa, os valores padrão são risk=20, reward=3.
    • O risco são os valores do PIP StopLoss e a recompensa é o multiplicador, de modo que se o EA está arriscando 20 PIP, ele está esperando ganhar 60 PIP.
    • Estes valores podem ser modificados ao aplicar o EA ao gráfico.

    Tempo de espera para os Eventos de Notícias serem Liberados:

    • Dados de notícias não são liberados no momento exato em que estão previstos, é necessário a instalação de um prazo para o EA aguardar os eventos de notícias serem liberados.
    • Um trecho de código determina o tempo que a EA irá aguardar, até que a notícia seja liberada, quando o tempo de espera das notícias passou, o EA se move para os próximos eventos de notícias.
    • xTime é uma variável, que pode ser alterada quando você anexa o EA pela primeira vez no gráfico. O valor padrão é de 27 minutos.
    if(Date>(TimeCurrent()-(xTime*60)))


    Tempo de espera para as Ordens serem Fechadas:

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

    Países Suportados pelo EA Fundamental Trader:

    • O EA Fundamental Trader negocia cada moeda que é suportada no dailyfx.com/calendar.

    • Um código especifica a moeda para negociar com base no país onde os eventos de notícias são liberados. A lista de moeda é a seguinte: EUR, USD, JPY, GBP, CHF, AUD, CAD, NZD

    if(stCurrency=="EUR" ){ordercurrency="EURUSD";} //negociando eurusd
    if(stCurrency=="USD" ){ordercurrency="EURUSD";} //negociando eurusd
    if(stCurrency=="JPY" ){ordercurrency="USDJPY";} //negociando usdjpy
    if(stCurrency=="GBP" ){ordercurrency="GBPUSD";} //negociando usdgbp
    if(stCurrency=="CHF" ){ordercurrency="USDCHF";} //negociando usdchf
    if(stCurrency=="AUD" ){ordercurrency="AUDUSD";} //negociando audusd
    if(stCurrency=="CAD" ){ordercurrency="USDCAD";} //negociando usdcad
    if(stCurrency=="NZD" ){ordercurrency="NZDUSD";} //negociando nzdusd
    


    Decisão de Negociações:

    • Um trecho de código descreve como o EA toma uma decisão de negociação, quando o EA está esperando por dados econômicos reais e quando a previsão dos dados econômicos está disponível.

    • Quando a previsao dos dados não está disponível, o EA usa os dados anteriores para fazer uma negociação.

    • Um trecho de código explica como a negociação é executada com base na previsão de dados e em dados reais. O mesmo algoritmo é utilizado quando o EA toma uma decisão de negociação com base nos dados econômicos anteriores e correntes.

    if(StringToDouble(stActual)>StringToDouble(stForecast))
     {
          Aert("Stronger(actual vs forecast): "+stCurrency+" "+"Time: "+stTime);
    
    int total=OrdersTotal();
        for(int cnt=0;cnt<total;cnt++)
        {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //verificar ordens abertas
    if(OrderComment()==stCurrency+stActual+stForecast+"BUY"||
    OrderComment()==stCurrency+stActual+stForecast+"SELL")
    {
    FileClose(file);Comment("\n"+"Live Trade Open"+OrderTicket());return(0);
    }
                               }
    
    int historytotal=OrdersHistoryTotal();
    for(cnt=0;cnt<historytotal;cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); //verificar ordens em aberto
    if(OrderComment()==stCurrency+stActual+stForecast+"BUY"||
    OrderComment()==stCurrency+stActual+stForecast+"SELL"){
    FileClose(file);Comment("\n"+"Trade Executed"+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 pode executar apenas uma ordem por eventos de notícias, então primeiramente verifica-se se uma ordem foi executada, se a ordem está atualmente aberta, o EA sai.

    • 2nd: o EA determina se essa ordem já foi executada e fechada, se a ordem foi executada e finalizada com lucro ou prejuízo, o EA sai.

    • O (2) verifica a existência de ordens, garantindo que não haverá duplicação de ordens, o que permite que o EA faça apenas uma única negociação por eventos de notícias.

    • Em seguida, ele determina em qual País os dados estão sendo liberados e abre uma negociação com as especificações da função "ordersend", quando os dados econômicos são liberados.

    • O código acima é o seguinte: quando os dados reais forem maior do que os dados de previsão, o código é o mesmo quando os dados reais são menores do que os dados de previsão, 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 e quando os dados de previsão não estão presentes.


    Dimensionamento de Lotes:

    • O EA compara dados reais para previsão de dados, ou dados reais para dados anteriores, a diferença percentual entre as notícias de dados determina a quantidade do lote que o EA vai negociar.

    • Um trecho do código determina a diferença da porcentagem do EA e especifica o tamanho do lote, o tamanho do lote é um número externo que pode ser modificado, a fim do EA servir para qualquer corretora

    • O usuário pode modificar os lotes quando anexa o EA ao gráfico. Os valores padrões de tamanho do lote 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 lot
    if((percent_d_AF>3 && percent_d_AF<=6)){lot_p=lot2;}//0.2 lots
    if((percent_d_AF>6 && percent_d_AF<=9)){lot_p=lot3;}//0.3 lots
    if((percent_d_AF>9 && percent_d_AF<=12)){lot_p=lot4;}//0.4 lots
    if((percent_d_AF>12 && percent_d_AF<=15)){lot_p=lot5;}//0.5 lots
    if((percent_d_AF>15 && percent_d_AF<=18)){lot_p=lot6;}//0.6 lots
    if((percent_d_AF>18 && percent_d_AF<=21)){lot_p=lot7;}//0.7 lots
    if((percent_d_AF>21 && percent_d_AF<=24)){lot_p=lot8;}//0.8 lots
    if((percent_d_AF>24 && percent_d_AF<=27)){lot_p=lot9;}//0.9 lots
    if((percent_d_AF>27 && percent_d_AF<=30)){lot_p=lot10;}//1 lots
    if((percent_d_AF>30 && percent_d_AF<=40)){lot_p=lot11;}//2 lots
    if((percent_d_AF>40 && percent_d_AF<=50)){lot_p=lot12;}//3 lots
    if((percent_d_AF>50 && percent_d_AF<=60)){lot_p=lot13;}//4 lots
    if((percent_d_AF>60 && percent_d_AF<=70)){lot_p=lot14;}//5 lots
    if((percent_d_AF>70 && percent_d_AF<=80)){lot_p=lot15;}//6 lots
    if((percent_d_AF>80 && percent_d_AF<=90)){lot_p=lot16;}//7 lots
    if((percent_d_AF>90 && percent_d_AF<=100)){lot_p=lot17;}//8 lots
    if((percent_d_AF>100))                    {lot_p=lot18;}//8 lots
    



    Informação do Gráfico:


    Imagens do Fundamental Trader Trabalhando com Dados das Notícias

    • Quando o EA é aplicado pela primeira vez no gráfico, você especifica "xTime", "risk", "reward", "MagicNumber", "enable_close_time", "wait_time" e o tamanho de seus lotes mínimo e máximo, certifique-se de deixar o local padrão onde o "get right" está instalado.

    • A EA vai baixar o calendário DailyFX e determinar quais os eventos de notícias são as próximas. Ele irá exibir os seguintes dados: Data, Hora, Fuso Horário, Moeda, Descrição, Importância, Atual, Previsão e dados dos eventos de notícias ANTERIORES como um comentário no gráfico, veja a imagem acima.

    • Na imagem acima, o EA está esperando o evento de notícia que será liberado às 2:00 AM, e como você pode ver, os dados econômicos anteriores são conhecidos (73,5%), assim como o EA está aguardando os dados reais serem liberados. Quando os dados econômicos forem liberados, o EA irá comparar os dados e tomar uma decisão de negociação baseada em dados econômicos anteriores e atuais.

    • Finalmente, o EA faz o download dos dados do calendário numa base minuto a minuto, a partir do momento em que um evento de notícias está programado para liberação.


    Apresentação do Fundamental Trader:

    • Esta EA negocia a cada evento econômico que é liberado no dailyfx.com/calendar, no formato CSV.

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

    • O EA faz o download do calendário a cada minuto, quando as notícias dos dados estão programadas para a liberação.

    • A EA analisa o calendário e determina qual o evento de notícia é o próximo, então aguarda 27 minutos para a notícia ser liberada.

    • Uma vez que os dados econômicos são liberados, o EA determina se os dados são "atual vs. previsão" ou "real vs. anterior".

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

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

    • O EA está configurado para executar apenas uma única ordem, por evento de notícia. Se "enable_close_time" é ativado com um valor "verdadeiro", o EA irá aguardar a quantidade de minutos especificados pelo "wait_time" antes de fechar a ordem aberta.

    Lembre-se de seguir todas as instruções do link, https://www.mql5.com/en/articles/1502, a fim de que o calendário seja baixado corretamente e seu horário da corretora seja configurado corretamente para a notícia ser processada, os dados dailyfx.com/calendar são no fuso horário GMT.

    Se você tiver quaisquer perguntas, sugestões ou críticas, deixe um comentário.

    Traduzido do inglês pela MetaQuotes Ltd.
    Publicação original: https://www.mql5.com/en/code/8491

    Bull vs Medved Bull vs Medved

    Um EA para H4, é usado no par GBPUSD. Ele funciona com ordens pendentes. Ele toma decisões pelas combinações simples dos candlesticks. A decisão é realizada uma vez em quatro horas e os níveis SL e TP são colocados.

    T3 Taotra T3 Taotra

    Indicador T3 Taotra.

    Indicador modiificado "VKW Bands" Indicador modiificado "VKW Bands"

    Um indicador de picos.

    Indicador que Divide o período Н1 dentro do М1 Indicador que Divide o período Н1 dentro do М1

    Indicador que divide o período Н1 dentro do М1