Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
EA Fundamental Trader DailyFX CSV MQL4 - expert para MetaTrader 4
- Visualizações:
- 2545
- Avaliação:
- Publicado:
- 2016.05.20 16:52
- Atualizado:
- 2016.11.22 07:33
- 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
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 TaotraIndicador T3 Taotra.
Um indicador de picos.
Indicador que Divide o período Н1 dentro do М1Indicador que divide o período Н1 dentro do М1