Discussão do artigo "Crie o seu próprio robô de negociação em 6 passos!" - página 7

 

Tentei usar esse artigo para criar meu próprio programa, mas ele é muito complicado para meus propósitos simples. Aqui tentei criar um programa simples, mas o compilador encontrou (apenas) um erro: Classe com "nenhum tipo". E não importava o que eu colocasse como "tipo" ou "nome" da classe, não havia mudança.

Aqui está o início. O que estou fazendo de errado?


//|KaufVerkauf.mq5 |

//|Direitos autorais ....2012 |
//|http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright .... 2012"
#property link"http://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Include|
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>


//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Inicialização do objeto Expert |
//+------------------------------------------------------------------


//---- identificadores de indicadores
int RSI_handle = 0;// identificador do indicador iRSI
intADX_handle = 0; // identificador do indicador iADX
intForce_handle = 0; // identificador do indicador iForce
int AD_handle = 0;// identificador do indicador iAD
int Close_handle = 0;
intHigh_handle = 0;
int Low_handle = 0;
int VTick_handle = 0;
int VReal_handle = 0;
int sig =0;


double MqlParams[]; // Matriz para armazenar parâmetros do indicador

//+------------------------------------------------------------------+
//| Função de inicialização do especialista RSI|
//+------------------------------------------------------------------+

Class CExpertSignal

{
private:

int OnInit()

//--- criação do indicador iRSI...........
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 

Muito obrigado.

Tentei testar isso:

- Baixei seu código, copiei para MQL5 e compilei: bem-sucedido, sem erros.

- Mas o EA não pode ser executado, ele gera um erro como o abaixo:

TestMA_Cross (EURUSD,H1) MA_Cross::CreateFastMA: Erro ao inicializar o objeto do MA rápido

Por favor, me ajude a descobrir o que há de errado com esses parâmetros:

//--- Configuração dos parâmetros do MA rápido
   MqlParam parameters[4];
//---
   parameters[0].type=TYPE_STRING;
   parameters[0].string_value="Examples\\Custom Moving Average.ex5";
   parameters[1].type=TYPE_INT;
   parameters[1].integer_value=m_period_fast;      // Período
   parameters[2].type=TYPE_INT;
   parameters[2].integer_value=0;                  // Turno
   parameters[3].type=TYPE_INT;
   parameters[3].integer_value=m_method_fast;      // Método de cálculo da média
//--- Inicialização do objeto
   if(!m_fast_ma.Create(m_symbol.Name(),m_period,IND_CUSTOM,4,parameters))
     {
      printf(__FUNCTION__+": Error initializing the object of the fast MA");
      return(false);
     }

Mais uma vez, muito obrigado.

 

Primeiramente, gostaria de agradecer ao(s) autor(es) por este artigo.
Sou novo no MetaTrader, na MQL5 e na negociação de Forex, portanto, esses artigos são muito úteis!

Quando testo esse EA, noto que, ao fechar uma posição comprada, ele emite um sinal de venda com o dobro do tamanho do lote.
Por que ele não apenas fecha minha posição comprada, mas também entra diretamente em uma posição vendida no mesmo sinal?
Como primeiro teste para entender toda a programação, eu gostaria de apenas operar comprado, portanto, apenas abrir e fechar uma posição comprada
sem entrar em uma posição vendida no sinal de fechamento/venda.

Desde já agradeço.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Symbol Properties - Documentation on MQL5
 

Boa tarde,

Por favor, informe-me como aumentar (top up) uma posição em um Expert Advisor, que foi escrito com base no MQL5 Wizard e onde as posições são abertas por meio de

virtual int LongCondition();
virtual int ShortCondition();

Escrevi o robô de acordo com as recomendações do artigo

https://www.mql5.com/pt/articles/367 "Create a trading robot in 6 steps" e ele funciona bem, mas tenta influenciar o tamanho da posição (independentemente de aumentar ou diminuir)

(independentemente de aumentar ou diminuir) por meio da geração repetida de uma condição em , por exemplo, em

LongCondition();

não leva a nada, a posição já aberta não é alterada, ela só pode ser excluída pela execução da condição de fechamento ou pelo acionamento de sl , tp.

Gosto do Assistente MQL5, pois é possível "construir" um Expert Advisor com vários indicadores de forma fácil e rápida, alterar o módulo de rastreamento de sl, alterar o módulo de gerenciamento de dinheiro.

Mas minha tentativa de escrever um Expert Advisor que abre uma posição mínima quando uma condição é formada por um indicador e aumenta (preenche) a posição quando a tendência é confirmada por outro indicador.

Deparei-me com o problema descrito acima - a posição já aberta não muda quando o sinal para abri-la novamente é emitido por meio de, por exemplo, LongCondition();

Obrigado.

Создай торговый робот за 6 шагов!
Создай торговый робот за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 

Se eu mandar rodar este exemplo no strategy tester do mt5, e escolher o ativo como pex. Vale5, algoritmo genético, d1, ohlc 1 minuto, max balance, vai dar erro!

Se eu executar em um par de forex, a mesma otimização parece ser concluída (não esperei concluir pq demora muito no agente local).

O erro que aparece no diário do testador, neste caso de Vale5, tem alguma coisa a ver com OnInit. Alguém aí detectou o mesmo problema? Se sim chegou a alguma solução e/ou conclusão?

Agradeço se alguém puder ajudar! 

 
fspyna:

Se eu mandar rodar este exemplo no strategy tester do mt5, e escolher o ativo como pex. Vale5, algoritmo genético, d1, ohlc 1 minuto, max balance, vai dar erro!

Se eu executar em um par de forex, a mesma otimização parece ser concluída (não esperei concluir pq demora muito no agente local).

O erro que aparece no diário do testador, neste caso de Vale5, tem alguma coisa a ver com OnInit. Alguém aí detectou o mesmo problema? Se sim chegou a alguma solução e/ou conclusão?

Agradeço se alguém puder ajudar! 

Olá, por favor coloque informações adicionais, como log de erros ou screenshots, pra podermos tentar analisar melhor o problema.

Uma descrição simples como a que você fez acima não ajuda muito na identificação do problema.

Abraços,
Malacarne 

 

Não tenho experiência (ainda) em programação em MQL, mas tenho alguma experiência em programação em outras linguagens. Um dos erros mais fáceis de se cometer em programação (minha aula específica foi em Java, que é muito semelhante em estilo ao C++ e, aparentemente, ao MQL) é não fechar as chaves corretamente. Esse é um dos erros mais fáceis de se cometer e, por outro lado, também um dos mais difíceis de encontrar.KJG, no que diz respeito ao fechamento de uma posição comprada e à entrada em uma posição vendida, provavelmente é o que esse estilo de EA foi projetado para fazer. Já vi muitos estilos de negociação com esse tipo de configuração. Acredito que eles tenham sido projetados para um mercado com muita volatilidade e grandes oscilações de preço o tempo todo, como algo que provavelmente aconteceria em um gráfico de período de minutos.

Bom artigo também, com certeza usarei esse e muitos outros aqui, tenho certeza.

 
Segui as instruções das etapas 1 e 2, mas o sinal não aparece na lista de sinais disponíveis do Assistente. Tentei usar outros sinais e nenhum funcionou. Talvez haja uma limitação no número de sinais que podem ser exibidos no assistente. Alguém pode me ajudar?
 

Boa noite,

Está dando erro abaixo quando tenta testar o robo.

2017.07.04 18:20:27.404 tester stopped because OnInit failed

Estou fazendo alguma coisa errada ou tem algum ajuste para fazer no robo?

Abraço

Carlos F.

 

Os diferentes estágios da construção são bem explicados. É um trabalho claro e útil, especialmente para aqueles que nunca desenvolveram um robô. Obrigado