Discusión sobre el artículo "Operaciones de trading en MQL5 - Es fácil" - página 4

 
Konstantin Efremov:

UPD: Rashid publicó un archivo de biblioteca arriba, resolvió mi problema. Es triste que la biblioteca estándar tenga un error. Ahora voy a estudiar la comparación para ver si es posible hacer algunos cambios directamente en EA sin reemplazar la biblioteca, para que todo funcione

Estas modificaciones ya están en la biblioteca estándar. Decidí responder a los que van a leer el artículo sólo ahora.

 

Bueno, uno agradable de hecho ..

 
<Deleted>
.
 
Andy Obama:
 

¡Buenos días a todos!

Continúo estudiando el lenguaje de programación MQL5. He recorrido casi todo el sitio en busca de información que me sea útil. La mayor parte de la información encontrada en el sitio está destinada a personas que ya tienen conocimientos básicos de programación.

Y aquí Encontré otro GRAN artículo, que me ayudó a entender muchas cosas y a refinar mi EA. Es una lástima que el autor no continuó escribiendo esta serie de artículos y se limitó a 2012 solamente. Pero de todos modos, expreso un GRAN respeto a este hombre y le digo lo mismo ¡GRACIAS en nombre de todos los principiantes!

Con respeto, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
Los comentarios que no guardan relación con este tema se han trasladado a "Mensajes fuera de tema".
 
pdev:

Hola, Gracias por este post muy útil y por favor me ayude a resolver esto. Soy nuevo en MT5 y estoy aprendiendo a crear EAs así que copié el código de ejemplo para ejecutar Ctrade.Buy pero el backtest falló. Aquí hay más información:


1) Cuenta: Es una cuenta real con la moneda base como NZD

2) MetaEditor ajustes para backtest:


3) Código: Copiado de https://www.mql5.com/es/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 errores (Tenga en cuenta que estoy probando sólo en EUR / USD):

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

HH 0 19:36:44.420 Red 38520 bytes de información de cuenta cargada

JO 0 19:36:44.420 Red 1482 bytes de parámetros de comprobador cargados

QE 0 19:36:44.420 Red 188 bytes de parámetros de entrada cargados

FR 0 19:36:44.421 Red 443 bytes de lista de símbolos cargada

IF 0 19:36:44.421 Archivo experto de comprobador añadido: Experts\demo.ex5. 46684 bytes cargados

QH 0 19:36:44.433 Probador depósito inicial 10000,00 NZD, apalancamiento 1:100

JN 0 19:36:44.437 Probador inicializado con éxito

ES 0 19:36:44.437 Red 46 Kb de datos de inicialización totales recibidos

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

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

HR 0 19:36:44.800 Símbolos EURUSD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

NJ 0 19:36:44.800 Histórico EURUSD: sincronización de histórico iniciada

GO 0 19:36:44.856 Histórico EURUSD: carga 27 bytes de datos históricos para sincronizar en 0:00:00.000

RQ 0 19:36:44.856 Historia EURUSD: historia sincronizado desde 2012.01.01 a 2017.11.15

EF 0 19:36:44.993 Historial EURUSD,Diario: caché de historial asignada para 1010 compases y contiene 312 compases desde 2014.01.01 00:00 hasta 2014.12.31 00:00

ND 0 19:36:44.993 Historia EURUSD,Diario: la historia comienza a partir de 2014.01.01 00:00

OL 0 19:36:44.996 Probador EURUSD,Diario (HalifaxPlus-Live): se genera cada tick

GN 0 19:36:44.996 Tester EURUSD,Diario: pruebas de Experts\demo.ex5 de 2015.01.01 00:00 a 2017.11.15 00:00 iniciado

CK 0 19:36:56.288 Símbolos NZDUSD: símbolo a sincronizar

IS 0 19:36:56.288 Símbolos NZDUSD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

JL 0 19:36:56.288 Historial NZDUSD: sincronización de historial iniciada

HJ 0 19:36:56.575 Historial NZDUSD: carga 14 Kb de datos de historial para sincronizar en 0:00:00.078

LS 0 19:36:56.575 Historia NZDUSD: historia sincronizado desde 2013.01.01 a 2017.11.15

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

OJ 0 19:36:56.580 Símbolos EURNZD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

DL 0 19:36:56.580 Historia EURNZD: sincronización de historia iniciada

MK 0 19:36:56.656 Historia EURNZD: carga 27 bytes de datos de historia para sincronizar en 0:00:00.000

OD 0 19:36:56.656 Historia EURNZD: historial sincronizado desde 2013.01.01 hasta 2017.11.15

IN 0 19:36:56.665 Comercio 2015.01.02 03:00:00 mercado comprar 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Operaciones 2015.01.02 03:00:00 trato #2 comprar 0.10 EURUSD a 1.20549 hecho(basado en la orden #2)

FH 0 19:36:56.666 Comercio 2015.01.02 03:00:00 trato realizado [#2 comprar 0.10 EURUSD a 1.20549]

OG 0 19:36:56.666 Comercio 2015.01.02 03:00:00 orden realizada comprar 0.10 a 1.20549 [#2 comprar 0.10 EURUSD a 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() método ejecutado con éxito. Código de retorno=10009 (realizado a 1.20549)

NM 2 19:37:15.823 Historial NZDUSD 2016.09.21 23:01:00: historial corrupto detectado (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Historial NZDUSD 2016.09.21, se ha encontrado un contenedor defectuoso, debe resincronizarse

LQ 2 19:37:16.106 Error 9 del historial del comprobador en una función indefinida

OH 2 19:37:16.106 El comprobador se ha detenido en el 0% del intervalo de comprobación con el error '20 NZDUSD'.


Por favor, dígame cuál es el problema y cómo puedo resolverlo.

[Eliminado]  
pdev:

Hola, Gracias por este post muy útil y por favor me ayude a resolver esto. Soy nuevo en MT5 y estoy aprendiendo a crear EAs así que copié el código de ejemplo para ejecutar Ctrade.Buy pero el backtest falló. Aquí hay más información:


1) Cuenta: Es una cuenta real con la moneda base como NZD

2) MetaEditor ajustes para backtest:


3) Código: Copiado de https://www.mql5.com/es/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 errores (Tenga en cuenta que estoy probando sólo en EUR / USD):

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

HH 0 19:36:44.420 Red 38520 bytes de información de cuenta cargada

JO 0 19:36:44.420 Red 1482 bytes de parámetros de comprobador cargados

QE 0 19:36:44.420 Red 188 bytes de parámetros de entrada cargados

FR 0 19:36:44.421 Red 443 bytes de lista de símbolos cargada

IF 0 19:36:44.421 Archivo experto de comprobador añadido: Experts\demo.ex5. 46684 bytes cargados

QH 0 19:36:44.433 Probador depósito inicial 10000,00 NZD, apalancamiento 1:100

JN 0 19:36:44.437 Probador inicializado con éxito

ES 0 19:36:44.437 Red 46 Kb de datos de inicialización totales recibidos

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

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

HR 0 19:36:44.800 Símbolos EURUSD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

NJ 0 19:36:44.800 Histórico EURUSD: sincronización de histórico iniciada

GO 0 19:36:44.856 Histórico EURUSD: carga 27 bytes de datos históricos para sincronizar en 0:00:00.000

RQ 0 19:36:44.856 Historia EURUSD: historia sincronizado desde 2012.01.01 a 2017.11.15

EF 0 19:36:44.993 Historial EURUSD,Diario: caché de historial asignada para 1010 compases y contiene 312 compases desde 2014.01.01 00:00 hasta 2014.12.31 00:00

ND 0 19:36:44.993 Historia EURUSD,Diario: la historia comienza a partir de 2014.01.01 00:00

OL 0 19:36:44.996 Probador EURUSD,Diario (HalifaxPlus-Live): se genera cada tick

GN 0 19:36:44.996 Tester EURUSD,Diario: pruebas de Experts\demo.ex5 de 2015.01.01 00:00 a 2017.11.15 00:00 iniciado

CK 0 19:36:56.288 Símbolos NZDUSD: símbolo a sincronizar

IS 0 19:36:56.288 Símbolos NZDUSD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

JL 0 19:36:56.288 Historial NZDUSD: sincronización de historial iniciada

HJ 0 19:36:56.575 Historial NZDUSD: carga 14 Kb de datos de historial para sincronizar en 0:00:00.078

LS 0 19:36:56.575 Historia NZDUSD: historia sincronizado desde 2013.01.01 a 2017.11.15

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

OJ 0 19:36:56.580 Símbolos EURNZD: símbolo sincronizado, 3624 bytes de información de símbolo recibidos

DL 0 19:36:56.580 Historia EURNZD: sincronización de historia iniciada

MK 0 19:36:56.656 Historia EURNZD: carga 27 bytes de datos de historia para sincronizar en 0:00:00.000

OD 0 19:36:56.656 Historia EURNZD: historial sincronizado desde 2013.01.01 hasta 2017.11.15

IN 0 19:36:56.665 Comercio 2015.01.02 03:00:00 mercado comprar 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Operaciones 2015.01.02 03:00:00 trato #2 comprar 0.10 EURUSD a 1.20549 hecho(basado en la orden #2)

FH 0 19:36:56.666 Comercio 2015.01.02 03:00:00 trato realizado [#2 comprar 0.10 EURUSD a 1.20549]

OG 0 19:36:56.666 Comercio 2015.01.02 03:00:00 orden realizada comprar 0.10 a 1.20549 [#2 comprar 0.10 EURUSD a 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy() método ejecutado con éxito. Código de retorno=10009 (realizado a 1.20549)

NM 2 19:37:15.823 Historial NZDUSD 2016.09.21 23:01:00: historial corrupto detectado (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Historial NZDUSD 2016.09.21, se ha encontrado un contenedor defectuoso, debe resincronizarse

LQ 2 19:37:16.106 Error 9 del historial del comprobador en una función indefinida

OH 2 19:37:16.106 El comprobador se ha detenido en el 0% del intervalo de comprobación con el error '20 NZDUSD'.


Por favor, dime qué está mal y cómo puedo resolver esto?

 

En el artículo al abrir órdenes limitadas y stop en todas partes

double price=1000*point;

Me pregunto si los que escriben que el artículo les ayudó a insertar el código del artículo?