Donde está el error? (4051)

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Donde está el error? (4051)

Notapor trader201 » 19 Jun 2014, 17:03

Saludos.

Aprendiendo mql4 de nuevo, al darle testear a este código me sale en el diario "error 4051". Busqué el error 4051: Invalid function parameter value (Valor del parámetro de función no válido), mas cuando comienzo a escribir el indicador, aparece un cuadro con el orden de los valores que debo colocar. Aparentemente el error está aquí:

TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);
TEND2= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,2);


(Mas abajo de esto, los valores que debo colocar en el iATR).

Aparentemente donde estoy colocando "14", debo colocar este valor como parte de una constante en el lenguaje mql4. ¿Alguien sabe cómo colocarlo?

double iADX(
string symbol, // symbol
int timeframe, // timeframe
int period, // averaging period
int applied_price, // applied price
int mode, // line index
int shift // shift
);




Aquí el código por sia:


void OnTick()
{
double TEND1, TEND2;

TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);
TEND2= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,2);



//---
if (OrdersTotal()==0 && TEND1>TEND2)
{
int ticket=OrderSend(Symbol(),OP_BUY,0.01, Ask, 10, Ask-500*Point, Ask+500*Point, NULL, 0, 0, clrNONE);

}
Print("error", GetLastError());
}
//+------------------------------------------------------------------+
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Donde está el error? (4051)

Notapor trader201 » 19 Jun 2014, 20:01

Listo La forma correcta es esta:
TEND1= iADX(NULL,PERIOD_M15,14,PRICE_CLOSE, MODE_PLUSDI,1);

El problema estaba en el lotaje que estaba colocando (0.01), aunque no se por que no me permite colocar este monto pues mi broker permite operarlo. A menos sea que no así para EAs?... (Alpari uk). ¿Alguien sabe si esto es así?
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Donde está el error? (4051)

Notapor FXWizard » 20 Jun 2014, 11:53

Hola trader201, ¿qué tipo de cuenta operas? Quizás la demo sea de una cuenta Pro, en cuyo caso el mínimo son 0.10 si no recuerdo mal.

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Donde está el error? (4051)

Notapor trader201 » 20 Jun 2014, 21:20

Estoy haciendo el testeo desde la cuenta micro.

Tengo una demo también que he llegado a utilizar para testear. No se si sea entonces que Alpari está considerando que el testeo se haga en los datos de la cuenta demo? (pero estoy haciendo el testeo desde la cuenta micro)...

:?

Saludos
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: Donde está el error? (4051)

Notapor FXWizard » 23 Jun 2014, 12:03

Se me ocurre una prueba: crea un script solo con la orden en cuestión y ejecútalo a ver si te sigue dando el error, más que nada para descartar que no sea de otra cosa.

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Donde está el error? (4051)

Notapor Black_Swan » 23 Jun 2014, 13:38

Hola a todos.
Aunque hace poco menos de un año que os sigo con interés no ha sido hasta hace un mes que decidí darme de alta y al ver el título del hilo me he animado al primer post. Así que ahí va...
Desde hace un par de semanas tengo unos mensajes de error en la plataforma al operar con un EA. Ha sido al cambiar de bróker cuando se han producido porque anteriormente no he tenido problemas. He comprobado las plataformas y son de la misma versión (con anterioridad al cambio de abril no tuve problemas).
Los mensajes aparecen repetidamente (cada pocos segundos) en la pestaña Expertos del Terminal y provocan el lanzamiento de multitud de órdenes a mercado (más de una decena) que agotan el margen de la cuenta, cuando solo debería lanzarse una:

unknown trade cmd -1 for OrderSend function
Error opening order!: 4051

No conozco el lenguaje mql4 pero sospecho que debe ser algo muy trivial relacionado con la declaración de variables o algún cambio de sintaxis de la nueva versión.
Agradecería sinceramente cualquier ayuda para localizar el problema. Por lo que he leído hay auténticos monstruos de la programación entre vosotros (al menos para mi lo son).
Saludos a todos.
Avatar de Usuario
Black_Swan
 
Mensajes: 1
Registrado: 09 May 2014, 21:12
Karma: 0

Re: Donde está el error? (4051)

Notapor FXWizard » 24 Jun 2014, 10:26

Bienvenido Black_Swan, puedes subir el código que ejecuta la orden para que podamos verlo y tratar de averiguar que puede ser?

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Donde está el error? (4051)

Notapor trader201 » 24 Jun 2014, 16:47

FXWizard escribió:Se me ocurre una prueba: crea un script solo con la orden en cuestión y ejecútalo a ver si te sigue dando el error, más que nada para descartar que no sea de otra cosa.

Saludos,
FXWizard


Saludos FXWizard. El error estaba en que había colocado el período en TF, y el TF en período en los valores del ADX.

Habia escrito los datos del ADX así,
TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);
En realidad debe ser así:
iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_PLUSDI, 1)

Saludos.
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Siguiente

Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados