METATRADER

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

si, eso está puesto, ya te digo que he copiado codigo de los ejemplos...

oye, que muchas gracias por las respuestas.
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

me pone unint reason 6
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

ahora me salta la confirmacion manual de la orden, pero me pone SL y TP no validos, he revisado los valores y creo que están bien...
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

Hay cosas que dependen de cada broker de metatrader. El whc es un caso especial y parece que no deja poner los stoploss y takeprofit en la misma orden a mercado,pero deja modificar la orden para incluirlos despues.
Puedes probar a quitar los stops, y si quieres que los tenga pues que los ponga una linea despues con OrderModify( ).

La confirmacion manual se quita en 'herramientas' y en la pantalla de iniciacion.

Lo de 'uninit reason 6' significa que el sistema se ha reinicializado o parado (depende de la opcion que tengas en herramientas) al cambiar de cuenta.
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

gracias, era eso, y como recojo el ticket de la orden para meterlo en la modificacion?

tampoco consigo quitar lo de la confirmacion manual, en herramientas opciones está desactivado!!

Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

Por ejemplo algo así:

int tk;
....
tk=OrderSend( .... ...);
OrderModify( tk, ... .... );
....
Probablemente en el codigo que tengas ya estará recogido con alguna variable, puedes ponerle la misma.

Lo de la confirmacion manual mira tambien en la pantalla que sale al iniciar el sistema, en 'comun'.
Última edición por Fer137 el 11 Mar 2008 18:22, editado 1 vez en total.
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

un millon de gracias, pero ya solo me queda lo de quitar la confirmacion manual
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

edité el mensaje y lo incluí mientras tu contestabas:)
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

perdona, no lo había visto, pero no entiendo donde dices que lo mire...
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

consigo pasar la modificación (gracias a ti, :D ) pero lo que no consigo que pase bien es el valor del SL y TP, mira, te resumo el codigo:

SL = 0.0010;
TP = 0.0010;

StopLoss = Ask-SL;
TakeProfit = Ask+TP;

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderModify(res,OrderOpenPrice(),StopLoss,TakeProfit,0,Blue);
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

Si quieres utilizar el OrderOpenPrice() debes seleccionar previamente la orden. Intercalando OrderSelect:

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderSelect(res,SELECT_BY_TICKET);
OrderModify(res,OrderOpenPrice(),StopLoss,TakeProfit,0,Blue);
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

sigue sin pasar el valor del SL y TP correctamente...

y del tema que no me envie los emails, sabes por que puede ser?
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

Puede ser cualquier cosa. Los precios en ordersend y ordermodify deben estar con los decimales correctos, ponle NormalizeDouble(stoploss,Digits), lo mismo para el takeprofit. Amplía los stops unos pipos (algunos brokers no dejan menos de 10 de distancia).

Lo de los emails tienes que configurarlo en herramientas, no lo he llegado a usar.
pitufogranjero
Mensajes: 95
Registrado: 25 Feb 2008 11:39

Mensaje por pitufogranjero »

no hay manera, ahora he hecho esto:

StopLoss = Ask-SL;

(también he probado con StopLoss = OrderOpenPrice()-SL;)

NormalizeDouble(StopLoss,4);
Print(StopLoss); (y no me imprime nada, ni pasa el valor)
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

El NormalizeDouble es una funcion, no la puedes poner suelta. (Seguramente ni te lo compilaba). Y asegurate de que todas las variables estén definidas con su tipo. El Print imprime en el log 'expert'.

int res,MAGICMA;
double SL=0.0010,TP=0.0010,StopLoss,TakeProfit,Lots=0.1;

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Green);
OrderSelect(res,SELECT_BY_TICKET);
OrderModify(res,OrderOpenPrice(),NormalizeDouble(StopLoss,Digits),NormalizeDouble(TakeProfit,Digits),0,Blue);
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”