Criando primeiro EA - ajuda

 

Caros,

Estou há 15 dias estudando sobre construção de Expert Advisor e gostaria da ajuda desta comunidade para criar a primeira EA para avaliar empiricamente uma simples estratégia, conforme abaixo:

IFR:

comprar quando o IFR for igual ou menor a 30;

TakeProfit quando IFR for igual ou maior a 70;

Stoploss dinamico: IFR maior do que a entrada e oscilação de 50 pontos;

 

Agradeço desde já a ajuda! Estou bem focado nos estudos. 

 
lmoreno:

Caros,

Estou há 15 dias estudando sobre construção de Expert Advisor e gostaria da ajuda desta comunidade para criar a primeira EA para avaliar empiricamente uma simples estratégia, conforme abaixo:

IFR:

comprar quando o IFR for igual ou menor a 30;

TakeProfit quando IFR for igual ou maior a 70;

Stoploss dinamico: IFR maior do que a entrada e oscilação de 50 pontos;

 

Agradeço desde já a ajuda! Estou bem focado nos estudos. 

Olá Lucas, parabéns pela iniciativa, você já tem algum EA inicial para compartilhar e facilitar a ajuda?
 
lmoreno:

Caros,

Estou há 15 dias estudando sobre construção de Expert Advisor e gostaria da ajuda desta comunidade para criar a primeira EA para avaliar empiricamente uma simples estratégia, conforme abaixo:

IFR:

comprar quando o IFR for igual ou menor a 30;

TakeProfit quando IFR for igual ou maior a 70;

Stoploss dinamico: IFR maior do que a entrada e oscilação de 50 pontos;

 

Agradeço desde já a ajuda! Estou bem focado nos estudos. 

  Bom dia Imoreno, 

 Também comecei a estudar a plataforma a pouco tempo e sei a dificuldade para sair o EA, para que a comunidade possa ajudar é necessário que você coloque onde estão as suas dificuldades. Estando no mesmo barco que você sugiro a leitura do artigo https://www.mql5.com/pt/articles/100, é um EA baseado em médias móveis e ADX mas dá tranquilamente para adapta-lo ao IFR. É um bom ponto de partida. 

 

Espero ter ajudado!  

Guia passo a passo para iniciantes para escrever um Expert Advisor no MQL5
Guia passo a passo para iniciantes para escrever um Expert Advisor no MQL5
  • 2013.12.24
  • Samuel
  • www.mql5.com
A programação de Expert Advisors no MQL5 é simples, e você pode aprender facilmente. Neste guia passo a passo, você verá os passos básicos necessários para escrever um simples Expert Advisor com base em uma estratégia de negócio de desenvolvimento. São apresentados, a estrutura de um Expert Advisor, o uso de indicadores técnicos embutidos e funções de negociação, os detalhes do modo de Depuração e uso do Strategy Tester.
 
adriano.barbosa:

  Bom dia Imoreno, 

 Também comecei a estudar a plataforma a pouco tempo e sei a dificuldade para sair o EA, para que a comunidade possa ajudar é necessário que você coloque onde estão as suas dificuldades. Estando no mesmo barco que você sugiro a leitura do artigo https://www.mql5.com/pt/articles/100, é um EA baseado em médias móveis e ADX mas dá tranquilamente para adapta-lo ao IFR. É um bom ponto de partida. 

 

Espero ter ajudado!  

Grato Adriano pela sugestão!

 Lendo rapidamente, isso já ajuda a adaptar para meu indicador

 

Pessoal comecei a estudar o Metatrader a poucos dias e gostaria de saber como criar um EA bem simples.

É o seguinte: Compra no fechamento da segunda barra que fechar ( consecutivamente) acima da média móvel de 9 períodos no diário e venda (inverter a posição) quando fechar abaixo da média.

Agradeço da ajuda de vocês!

 
HM5:

Pessoal comecei a estudar o Metatrader a poucos dias e gostaria de saber como criar um EA bem simples.

É o seguinte: Compra no fechamento da segunda barra que fechar ( consecutivamente) acima da média móvel de 9 períodos no diário e venda (inverter a posição) quando fechar abaixo da média.

Agradeço da ajuda de vocês!

Olá HM5, se você quer ajuda para criar esse EA simples, sugiro começar apresentando o que já fez até agora, para facilitar o processo.

Se não fez nada ainda, recomendo examinar a base de código e os exemplos abertos existentes. 

Mas se não deseja programar, ai uma solução é buscares um desenvolvedor para tua estratégia, o que pode ser feito aqui no próprio site, na opção de Freelance, onde você pode buscar programadores dentro de um orçamento específico. Para EAs simples como o que você necessita, por exemplo, é possível encontrar programadores com orçamento a partir de $20 na área de Freelance internacional. 

 
adriano.barbosa:

  Bom dia Imoreno, 

 Também comecei a estudar a plataforma a pouco tempo e sei a dificuldade para sair o EA, para que a comunidade possa ajudar é necessário que você coloque onde estão as suas dificuldades. Estando no mesmo barco que você sugiro a leitura do artigo https://www.mql5.com/pt/articles/100, é um EA baseado em médias móveis e ADX mas dá tranquilamente para adapta-lo ao IFR. É um bom ponto de partida. 

 

Espero ter ajudado!  

adriano.barbosa:

  Bom dia Imoreno, 

 Também comecei a estudar a plataforma a pouco tempo e sei a dificuldade para sair o EA, para que a comunidade possa ajudar é necessário que você coloque onde estão as suas dificuldades. Estando no mesmo barco que você sugiro a leitura do artigo https://www.mql5.com/pt/articles/100, é um EA baseado em médias móveis e ADX mas dá tranquilamente para adapta-lo ao IFR. É um bom ponto de partida. 

 

Espero ter ajudado!  

excelentes dicas.
 

Olá meus caros.

 Gostaria de saber se alguém tem alguma sugestão para um EA que estou produzindo.

Já tenho os parâmetros de abertura de cada trade. Mas estou empacado na melhor estratégia para sair dos comércios com máximo lucro e mínima perda. Alguém tem alguma dica ou sugestão de indicador para utilizar ?

 

Att. 

 
luispaulo:

Olá meus caros.

 Gostaria de saber se alguém tem alguma sugestão para um EA que estou produzindo.

Já tenho os parâmetros de abertura de cada trade. Mas estou empacado na melhor estratégia para sair dos comércios com máximo lucro e mínima perda. Alguém tem alguma dica ou sugestão de indicador para utilizar ?

 

Att. 

Olá luispaulo, me parece que você está buscando a solução ótima, algo perigoso e improvável quando se trata de futuro do mercado.

Note que você só vai saber se saiu do trade no máximo lucro ou mínima perda esperando um determinado tempo após fechar o trade e depois olhando para o passado.

Ou seja, no momento que você abre ou fecha um trade, os preços futuros são uma incerteza, e portanto a performance das suas decisões.

O que eu diria é que você pode buscar modelos estatísticos para minimizar suas perdas e maximizar seus lucros, como por exemplo a melhor gestão financeira e de risco encontrada no backtesting da tua estratégia.

Pelo menos, nesse caso, se falhar, falhou a ciência e o teu modelo operacional, o que irá te obrigar a melhorar ele. 

Para isso, recomendo testares vários modelos de decisão de saída do trade para ver qual fica mais adequado ao teu modelo de abertura, que já está construído.

Por exemplo, você pode trabalhar com trailing stop, ou ajustar teu stop ao break even, ajustar o lote conforme as chances de tua estratégia a cada trade, ajustar o SL/TP a um indicador, etc.

São apenas exemplos de modelos específicos que podem ser bons ou ruins para tua estratégia, e provavelmente o backtesting bem feito irá mostrar isso.

E, no momento que colocares para testes reais (o futuro), pode acontecer de modelos que não tinham boa performance estarem nesse momento dentro do máximo lucro e mínima perda que estás buscando.

E ai está justamente o desafio de desenvolvimento de estratégias resilientes ao futuro, isto é, encontrar no passado bons modelos que continuem bons no futuro. 

 

Caros, bom dia.

 Volto no tópico que abri para mostrar como ficou o código...
Não está dando erro de compilação, porém está dando o erro de OnInit() quando estou fazendo o backtest.

Alguém poderia me ajudar para que eu possa testar ainda hoje?

//+------------------------------------------------------------------+

//|                                                    01_EA_RSI.mq5 |

//|                        Copyright 2014, MetaQuotes Software Corp. |

//|                                              http://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2014, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property version   "1.00"

//+------------------------------------------------------------------+

//| Include                                                          |

//+------------------------------------------------------------------+

#include <Expert\Expert.mqh>

//--- available signals

#include <01_EA_RSI.mqh>

//--- available trailing

#include <Expert\Trailing\TrailingNone.mqh>

//--- available money management

#include <Expert\Money\MoneyFixedLot.mqh>

//+------------------------------------------------------------------+

//| Inputs                                                           |

//+------------------------------------------------------------------+

//--- inputs for expert

input string Expert_Title         ="01_EA_RSI"; // Document name

ulong        Expert_MagicNumber   =14051;       // 

bool         Expert_EveryTick     =false;       // 

//--- inputs for main signal

input int    Signal_ThresholdOpen =40;          // Signal threshold value to open [0...100]

input int    Signal_ThresholdClose=20;          // Signal threshold value to close [0...100]

input double Signal_PriceLevel    =0.0;         // Price level to execute a deal

input double Signal_StopLevel     =0.0;        // Stop Loss level (in points)

input double Signal_TakeLevel     =0.0;        // Take Profit level (in points)

input int    Signal_Expiration    =4;           // Expiration of pending orders (in bars)

input int    Signal__PeriodRSI    =11;          // CML_RSI(11,3) Period of RSI

input int    Signal__PeriodMA     =3;           // CML_RSI(11,3) Period of MA

input double Signal__Weight       =1.0;         // CML_RSI(11,3) Weight [0...1.0]

//--- inputs for money

input double Money_FixLot_Percent =10.0;        // Percent

input double Money_FixLot_Lots    =0.1;         // Fixed volume

//+------------------------------------------------------------------+

//| Global expert object                                             |

//+------------------------------------------------------------------+

CExpert ExtExpert;

//+------------------------------------------------------------------+

//| Initialization function of the expert                            |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- Initializing expert

if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing expert");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Creating signal

   CExpertSignal *signal=new CExpertSignal;

   if(signal==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating signal");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//---

   ExtExpert.InitSignal(signal);

   signal.ThresholdOpen(Signal_ThresholdOpen);

   signal.ThresholdClose(Signal_ThresholdClose);

   signal.PriceLevel(Signal_PriceLevel);

   signal.StopLevel(Signal_StopLevel);

   signal.TakeLevel(Signal_TakeLevel);

   signal.Expiration(Signal_Expiration);

//--- Creating filter CML_RSI

CML_RSI *filter0=new CML_RSI;

if(filter0==NULL)

  {

   //--- failed

   printf(__FUNCTION__+": error creating filter0");

   ExtExpert.Deinit();

   return(INIT_FAILED);

  }

signal.AddFilter(filter0);

//--- Set filter parameters

filter0.PeriodRSI(Signal__PeriodRSI);

filter0.PeriodMA(Signal__PeriodMA);

filter0.Weight(Signal__Weight);

//--- Creation of trailing object

  CTrailingNone *trailing=new CTrailingNone;

   if(trailing==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add trailing to expert (will be deleted automatically))

   if(!ExtExpert.InitTrailing(trailing))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set trailing parameters

//--- Creation of money object

CMoneyFixedLot *money=new CMoneyFixedLot;

   if(money==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add money to expert (will be deleted automatically))

   if(!ExtExpert.InitMoney(money))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set money parameters

money.Percent(Money_FixLot_Percent);

money.Lots(Money_FixLot_Lots);

//--- Check all trading objects parameters

   if(!ExtExpert.ValidationSettings())

     {

      //--- failed

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Tuning of all necessary indicators

   if(!ExtExpert.InitIndicators())

     {

      //--- failed

      printf(__FUNCTION__+": error initializing indicators");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- ok

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Deinitialization function of the expert                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   ExtExpert.Deinit();

  }

//+------------------------------------------------------------------+

//| "Tick" event handler function                                    |

//+------------------------------------------------------------------+

void OnTick()

  {

   ExtExpert.OnTick();

  }

//+------------------------------------------------------------------+

//| "Trade" event handler function                                   |

//+------------------------------------------------------------------+

void OnTrade()

  {

   ExtExpert.OnTrade();

  }

//+------------------------------------------------------------------+

//| "Timer" event handler function                                   |

//+------------------------------------------------------------------+

void OnTimer()

  {

   ExtExpert.OnTimer();

  }

//+------------------------------------------------------------------+
Negociação Automatizada e Análise de Estratégia
Negociação Automatizada e Análise de Estratégia
  • www.mql5.com
MQL5: linguagem de estratégias de negociação inseridas no Terminal do Cliente MetaTrader 5. A linguagem permite escrever seus próprios sistemas automáticos de negócios, indicadores técnicos, scripts e bibliotecas de funções
Arquivos anexados:
01_EA_RSI.mq5  7 kb
 
lnmoreno:

Caros, bom dia.

 Volto no tópico que abri para mostrar como ficou o código...
Não está dando erro de compilação, porém está dando o erro de OnInit() quando estou fazendo o backtest.

Alguém poderia me ajudar para que eu possa testar ainda hoje?

Olá lnmoreno,

Não sei qual o seu nível de conhecimento em programação/C++, mas o EA que você está tentando implementar é razoavelmente complexo em termos de conhecimentos necessários para sua implementação. Você está, basicamente, tentando usar programação orientada a objetos, a partir de algumas bibliotecas-padrão fornecidas pela MetaQuotes para a ferramenta MetaTrader.

Logo, meu sincero conselho pra ti, seria dar um passo atrás, e tentar desenvolver um EA mais simples, de forma que você pudesse compreender todas as etapas necessárias para a implementação de seu robô.

Por mais tentador que seja utilizar as bibliotecas-padrão, às vezes é melhor você entender o básico por trás dessas bibliotecas, ao invés de tentar utilizá-las e, ao encontrar um problema no meio do caminho, não saber exatamente como proceder.

Abraços,
Malacarne 

Razão: