PDA

Ver la versión completa : Pregunta ¿Por qué este código de solo "OrderSend" no está abriendo operaciones?



revenger
25-12-2023 01:41,
Respondo yo mismo con las pruebas que hice:

En el código que coloqué el (If) tiene la "I" en mayúscula pero en el EA está bien.

Hoy testeé hacerlo de otra manera, y me funcionó, aunque no se por qué pues me parece lo mismo. También vi algo extraño.

Lo que hice fue declarar los valores de la entrada, en SL y el TP. Es decir, en vez de:




if(OrdersTotal()==0)
{
int ticket= OrderSend(NULL, OP_BUYSTOP, 0.1, Ask+0.0050, 10, Ask+0.0020, Ask+0.00100, NULL, 0, 0, clrNONE);
Alert(GetLastError());
}

Lo coloqué así (y si funcionó, pero me parece lo mismo):




double Entry, SL, TP;
Entry=Ask+0.0050;
SL=Entry-0.0030;
TP=Entry+0.0050;

//---
if(OrdersTotal()==0)
{
int ticket1= OrderSend(NULL, OP_BUYSTOP, 0.1, Entry, 10, SL, TP, NULL, 0, 0, clrNONE);
Alert(GetLastError());

}


Notar que antes no enviaba mensaje de error. Hoy me salía error 130 con el primer código. :?

Aunque decía error 130, como no veía ningún problema con el tamaño del SL, probé declarando el precio entrada, SL y TP (como el segundo código), solo por probar algo diferente, y entonces comenzó a funcionar y dejó de decir error 130; pero no cambié ninguno de los valores de estos (ni de la entrada ni del SL ni del TP). :?


Estoy haciendo estas pruebas en una cuenta demo. Solo se me ocurre que sea debido a ello.

¿Alguien agregaría algo diferente?

El valor de tu takeprofit es menor que el precio de apertura y también es menor que el stoploss en una operación a la compra. Supuestamente si quieres ganar algo en una compra, el valor de tu takeprofit debería ser mayor a tu precio de apertura.

trader201
25-02-2024 13:45,
Respondo yo mismo con las pruebas que hice:

En el código que coloqué el (If) tiene la "I" en mayúscula pero en el EA está bien.

Hoy testeé hacerlo de otra manera, y me funcionó, aunque no se por qué pues me parece lo mismo. También vi algo extraño.

Lo que hice fue declarar los valores de la entrada, en SL y el TP. Es decir, en vez de:




if(OrdersTotal()==0)
{
int ticket= OrderSend(NULL, OP_BUYSTOP, 0.1, Ask+0.0050, 10, Ask+0.0020, Ask+0.00100, NULL, 0, 0, clrNONE);
Alert(GetLastError());
}

Lo coloqué así (y si funcionó, pero me parece lo mismo):




double Entry, SL, TP;
Entry=Ask+0.0050;
SL=Entry-0.0030;
TP=Entry+0.0050;

//---
if(OrdersTotal()==0)
{
int ticket1= OrderSend(NULL, OP_BUYSTOP, 0.1, Entry, 10, SL, TP, NULL, 0, 0, clrNONE);
Alert(GetLastError());

}


Notar que antes no enviaba mensaje de error. Hoy me salía error 130 con el primer código. :?

Aunque decía error 130, como no veía ningún problema con el tamaño del SL, probé declarando el precio entrada, SL y TP (como el segundo código), solo por probar algo diferente, y entonces comenzó a funcionar y dejó de decir error 130; pero no cambié ninguno de los valores de estos (ni de la entrada ni del SL ni del TP). :?


Estoy haciendo estas pruebas en una cuenta demo. Solo se me ocurre que sea debido a ello.

¿Alguien agregaría algo diferente?

trader201
26-02-2024 07:24,
Saludos compañeros. Pues he puesto solo esto como código en EA de mql4, y no está abriendo ninguna operación. ¿Alguien saber cuál es el problema?



If(OrdersTotal()==0)
{
int ticket= OrderSend(NULL, OP_BUYSTOP, 0.1, Ask+0.0050, 10, Ask+0.0020, Ask+0.00100, NULL, 0, 0, clrNONE);
Alert(GetLastError());
}


Le puse la parte de "Alert" por si había algún error, pero no envía ningún mensaje de error.
Saludos, y gracias de antemano.