Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Pueden decirme si es posible implementar esta construcción desde MQL4 usando m_Trade.PositionModify (m_Trade es un miembro de la clase CTrade)?
El objetivo del script es abrir una compra en el mercado con un número determinado de lotes, y luego establecer un take profit en 10 partes. Me quedé atascado en el hecho de que sin establecer un stop loss PositionModify da error 10016(Paradas incorrectas en la solicitud). Y no hay ninguna tarea para establecer una parada :). En la ayuda dice que es posible no especificar un valor:
He intentado pasar el valor obtenido de la solicitud de compra anterior (hay cero por supuesto), bueno, el mismo rastrillo sólo en el perfil. Aquí está mi código:
Gracias de antemano por vuestra ayuda.
Buena introducción a la programación orientada a objetos en MQL5.
Con MT5 build 1347 el primer ejemplo de código falla al compilar con el error "illegal switch expression type".
Tuve que añadir la fundición a int en las declaraciones de conmutación en AccountInfo.mqh para que funcione, como:
switch((int)MarginMode())
Problema similar en RTS-3.13 Opening-demo, probado todo (mientras que las órdenes limitadas se establecen en ORDER_TIME_SPECIFIED_DAY como está escrito en el perfil de símbolo) !!!!. Mientras que la orden de compra-stop está perfectamente abierta en el mercado manualmente. Este es un fallo de la terminal, usted debe escribir a los desarrolladores
Hola
En algunos brokers (FoxPro por ejemplo) al intentar abrir una posición error 10030. Descripción del código: invalid fill. En otros brokers (por ejemplo Alpari) funciona sin estas líneas
En el bloque de inicialización del Asesor Experto escribí diferentes valores en el código:
No ayuda. ¿Cómo resolver el problema? ¿O esta clase CTrade es anticuada y no corresponde a las últimas actualizaciones del terminal y tengo que escribir las operaciones comerciales de acuerdo con el esquema estándar a través de la estructura?
UPD: Rashid publicó un archivo de biblioteca más arriba, resolvió mi problema. Es triste que la biblioteca estándar tiene un error. Ahora voy a estudiar la comparación para ver si es posible hacer algunos cambios directamente en el EA sin reemplazar la biblioteca para que todo funcione
Buena introducción a la programación orientada a objetos en MQL5.
Con MT5 build 1347 el primer ejemplo de código falla al compilar con el error "illegal switch expression type".
Tuve que añadir la fundición a int en las declaraciones de conmutación en AccountInfo.mqh para que funcione, como:
switch((int)MarginMode())
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.