Discussão do artigo "Operações de negócios no MQL5 - São fáceis" - página 4

 
Konstantin Efremov:

ATUALIZAÇÃO: Rashid postou um arquivo de biblioteca acima, que resolveu meu problema. É triste que a biblioteca padrão tenha um erro. Agora vou estudar a comparação para ver se é possível fazer algumas alterações diretamente no EA sem substituir a biblioteca, para que tudo funcione

Essas edições já estão na biblioteca padrão. Decidi responder àqueles que lerão o artigo somente agora.

 

Bom, de fato, um bom negócio.

 
<Deleted>
.
 
Andy Obama:
 

Bom dia a todos!

Continuo estudando a linguagem de programação MQL5. Pesquisei quase todo o site em busca de informações úteis para mim. A maioria das informações encontradas no site é destinada a pessoas que já têm um conhecimento básico de programação.

E aqui! Encontrei outro ótimo artigo, que me ajudou a entender e refinar meu Expert Advisor! É uma pena que o autor não tenha continuado a escrever essa série de artigos e tenha se limitado apenas a 2012. Mas, mesmo assim, expresso grande respeito a esse homem e digo a ele o mesmo GRANDE OBRIGADO em nome de todos os iniciantes!

Com todo o respeito, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
Os comentários que não estão relacionados a este tópico foram movidos para "Posts fora do tópico".
 
pdev:

Olá, obrigado por essa postagem muito útil e, por favor, ajude-me a resolver esse problema. Sou novo no MT5 e estou aprendendo a criar EAs, então copiei o código de exemplo para executar o Ctrade.Buy, mas o backtest falhou. Aqui estão mais informações:


1) Conta: É uma conta real com a moeda base como NZD

2) Configurações do MetaEditor para o backtest:


3) Código: Copiado de https://www.mql5.com/pt/articles/481:


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

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

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

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

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

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

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

//| Expert initialization function                                   |

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

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---

   

  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

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

//|  Buying a specified volume at the current symbol                 |

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

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Registro de erros (observe que estou testando apenas em EUR/USD):

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Rede 38520 bytes de informações da conta carregadas

JO 0 19:36:44.420 Rede 1482 bytes de parâmetros do testador carregados

QE 0 19:36:44.420 Rede 188 bytes de parâmetros de entrada carregados

FR 0 19:36:44.421 Rede 443 bytes de lista de símbolos carregados

IF 0 19:36:44.421 Arquivo de especialista do testador adicionado: Experts\demo.ex5. 46684 bytes carregados

QH 0 19:36:44.433 Depósito inicial do testador 10000.00 NZD, alavancagem 1:100

JN 0 19:36:44.437 Testador inicializado com sucesso

ES 0 19:36:44.437 Rede 46 Kb de dados totais de inicialização recebidos

PP 0 19:36:44.437 Testador Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Símbolos EURUSD: símbolo a ser sincronizado

HR 0 19:36:44.800 Símbolos EURUSD: símbolo sincronizado, 3624 bytes de informações de símbolo recebidas

NJ 0 19:36:44.800 Histórico EURUSD: sincronização do histórico iniciada

GO 0 19:36:44.856 Histórico EURUSD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000

RQ 0 19:36:44.856 Histórico EURUSD: histórico sincronizado de 2012.01.01 a 2017.11.15

EF 0 19:36:44.993 Histórico EURUSD,Daily: cache do histórico alocado para 1010 barras e contém 312 barras de 2014.01.01 00:00 a 2014.12.31 00:00

ND 0 19:36:44.993 Histórico EURUSD,Diário: histórico começa a partir de 2014.01.01 00:00

OL 0 19:36:44.996 Testador EURUSD,Daily (HalifaxPlus-Live): geração de cada tick

GN 0 19:36:44.996 Testador EURUSD,Daily: teste de Experts\demo.ex5 de 2015.01.01 00:00 a 2017.11.15 00:00 iniciado

CK 0 19:36:56.288 Symbols NZDUSD: símbolo a ser sincronizado

IS 0 19:36:56.288 Símbolos NZDUSD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos

JL 0 19:36:56.288 Histórico NZDUSD: sincronização do histórico iniciada

HJ 0 19:36:56.575 Histórico NZDUSD: carregar 14 Kb de dados do histórico para sincronizar em 0:00:00.078

LS 0 19:36:56.575 Histórico NZDUSD: histórico sincronizado de 2013.01.01 a 2017.11.15

CO 0 19:36:56.579 Símbolos EURNZD: símbolo a ser sincronizado

OJ 0 19:36:56.580 Símbolos EURNZD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos

DL 0 19:36:56.580 Histórico EURNZD: sincronização do histórico iniciada

MK 0 19:36:56.656 Histórico EURNZD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000

OD 0 19:36:56.656 Histórico EURNZD: histórico sincronizado de 2013.01.01 a 2017.11.15

IN 0 19:36:56.665 Trade 2015.01.02 03:00:00 market buy 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 buy 0.10 EURUSD at 1.20549 done(based on order #2)

FH 0 19:36:56.666 Negociação 2015.01.02 03:00:00 negócio realizado [#2 comprar 0.10 EURUSD a 1.20549]

OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordem executada comprar 0.10 em 1.20549 [#2 comprar 0.10 EURUSD em 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() method executed successfully. Código de retorno=10009 (realizado em 1.20549)

NM 2 19:37:15.823 Histórico NZDUSD 2016.09.21 23:01:00: histórico corrompido detectado (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Histórico NZDUSD 2016.09.21, contêiner ruim encontrado, deve ser ressincronizado

LQ 2 19:37:16.106 Erro 9 no histórico do testador em uma função indefinida

OH 2 19:37:16.106 O testador parou em 0% do intervalo de teste com o erro '20 NZDUSD'


Por favor, diga-me o que está errado e como posso resolver isso?

[Excluído]  
pdev:

Olá, obrigado por essa postagem muito útil e, por favor, ajude-me a resolver esse problema. Sou novo no MT5 e estou aprendendo a criar EAs, então copiei o código de exemplo para executar o Ctrade.Buy, mas o backtest falhou. Aqui estão mais informações:


1) Conta: É uma conta real com a moeda base como NZD

2) Configurações do MetaEditor para o backtest:


3) Código: Copiado de https://www.mql5.com/pt/articles/481:


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

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

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

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

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

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

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

//| Expert initialization function                                   |

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

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---

   

  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

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

//|  Buying a specified volume at the current symbol                 |

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

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Registro de erros (observe que estou testando apenas em EUR/USD):

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Rede 38520 bytes de informações da conta carregadas

JO 0 19:36:44.420 Rede 1482 bytes de parâmetros do testador carregados

QE 0 19:36:44.420 Rede 188 bytes de parâmetros de entrada carregados

FR 0 19:36:44.421 Rede 443 bytes de lista de símbolos carregados

IF 0 19:36:44.421 Arquivo de especialista do testador adicionado: Experts\demo.ex5. 46684 bytes carregados

QH 0 19:36:44.433 Depósito inicial do testador 10000.00 NZD, alavancagem 1:100

JN 0 19:36:44.437 Testador inicializado com sucesso

ES 0 19:36:44.437 Rede 46 Kb de dados totais de inicialização recebidos

PP 0 19:36:44.437 Testador Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Símbolos EURUSD: símbolo a ser sincronizado

HR 0 19:36:44.800 Símbolos EURUSD: símbolo sincronizado, 3624 bytes de informações de símbolo recebidas

NJ 0 19:36:44.800 Histórico EURUSD: sincronização do histórico iniciada

GO 0 19:36:44.856 Histórico EURUSD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000

RQ 0 19:36:44.856 Histórico EURUSD: histórico sincronizado de 2012.01.01 a 2017.11.15

EF 0 19:36:44.993 Histórico EURUSD,Daily: cache de histórico alocado para 1010 barras e contém 312 barras de 2014.01.01 00:00 a 2014.12.31 00:00

ND 0 19:36:44.993 Histórico EURUSD,Diário: histórico começa a partir de 2014.01.01 00:00

OL 0 19:36:44.996 Testador EURUSD,Daily (HalifaxPlus-Live): geração de cada tick

GN 0 19:36:44.996 Testador EURUSD,Daily: teste de Experts\demo.ex5 de 2015.01.01 00:00 a 2017.11.15 00:00 iniciado

CK 0 19:36:56.288 Symbols NZDUSD: símbolo a ser sincronizado

IS 0 19:36:56.288 Símbolos NZDUSD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos

JL 0 19:36:56.288 Histórico NZDUSD: sincronização do histórico iniciada

HJ 0 19:36:56.575 Histórico NZDUSD: carregar 14 Kb de dados do histórico para sincronizar em 0:00:00.078

LS 0 19:36:56.575 Histórico NZDUSD: histórico sincronizado de 2013.01.01 a 2017.11.15

CO 0 19:36:56.579 Símbolos EURNZD: símbolo a ser sincronizado

OJ 0 19:36:56.580 Símbolos EURNZD: símbolo sincronizado, 3624 bytes de informação de símbolo recebidos

DL 0 19:36:56.580 Histórico EURNZD: sincronização do histórico iniciada

MK 0 19:36:56.656 Histórico EURNZD: carregar 27 bytes de dados do histórico para sincronizar em 0:00:00.000

OD 0 19:36:56.656 Histórico EURNZD: histórico sincronizado de 2013.01.01 a 2017.11.15

IN 0 19:36:56.665 Trade 2015.01.02 03:00:00 market buy 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 buy 0.10 EURUSD at 1.20549 done(based on order #2)

FH 0 19:36:56.666 Negociação 2015.01.02 03:00:00 negócio realizado [#2 comprar 0.10 EURUSD a 1.20549]

OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordem executada comprar 0.10 em 1.20549 [#2 comprar 0.10 EURUSD em 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() method executed successfully. Código de retorno=10009 (realizado em 1.20549)

NM 2 19:37:15.823 Histórico NZDUSD 2016.09.21 23:01:00: histórico corrompido detectado (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Histórico NZDUSD 2016.09.21, contêiner ruim encontrado, deve ser ressincronizado

LQ 2 19:37:16.106 Erro 9 no histórico do testador em uma função indefinida

OH 2 19:37:16.106 O testador parou em 0% do intervalo de teste com o erro '20 NZDUSD'


Por favor, diga-me o que está errado e como posso resolver isso?

 

No artigo, ao abrir ordens de limite e de parada em qualquer lugar

double price=1000*point;

Será que aqueles que escrevem que o artigo os ajudou a inserir o código do artigo?